原文在这里how-databases-workhtml
当我回想涉及到关系数据库的知识点时,我不由以为如有所失。它们不少地方会用到。会有不少不一样的数据库:小而有用的 SQLite 到强大的 TealData。可是,只有不多的文章解释数据库是如何工做的。你能够本身谷歌一下 “关系数据库是如何工做”,看看结果数量是多少。此外,那些文章都是很短的。而如今,若是你在寻找最时髦的技术(大数据,NoSQl 或者 JavaScript),你会找到更多深刻的文章解释他们是如何工做 这是由于关系数据库太旧,太无聊,以至于不能在大学课程、论文和书籍以外解释吗?算法
做为开发者,我讨厌使用我不懂的东西。再者,数据库已经被使用40多年,确定是有缘由。这些年来,我花数百个小时去真正理解这些我天天用的黑盒子。关系数据库是颇有趣的,由于它们(的理论)基于可用性和可重性(useful and reusable concepts)。若是你对数据库感兴趣,而你历来没有时间或者意愿去深刻研究这个大概念, 你会喜欢这篇文章。 尽管这文章的标题是明确,但本文的目的不是如何使用数据库。因此,(本文假定)你应该明白如何写简单的join查询和基本的CRUD操做;不然你可能没法理解这篇文章。这是你惟一须要知道的事,我会解释其余全部的东西。 我将会从一些计算机科学的东西开始讲,好比是时间复杂度。我知道有些人会讨厌这概念,但若是你不理解这些东西,你将没法理解数据库里面那些精巧的东西。因为这是个大主题,我将会只关注我认为重要的东西,即:数据库处理 SQL 的方式。我将只介绍数据库背后的概念,以便读到文章的最后,你会对(执行语句时)数据库引擎下面发生什么有一个清晰的概念。 因为这是一篇设计不少算法和数据结构的技术长文,全部须要花多点时间去阅读。一些概念是很难理解的;你能够跳过它,这也能获得总体的概念。 为了让你更容易理解知识,这文章或多或少分红3部分数据库
(因为本来太长太长了,我把它分红几篇文章,陆续更新)数据结构
可是数据库包含更多的奇淫巧技。例如,我没有谈到一些棘手的问题,例如架构
所以,当您必须在bug多多的NoSQL数据库和坚如磐石的关系数据库之间进行选择时,请三思然后行。不要误会,一些 NoSQL 数据库是很好的。但它们毕竟太年轻,并只能解决少数应用关注的特定问题。 最后说一句,若是有人问你数据库的原理是什么,你不用溜之大吉,如今你能够回答:数据结构和算法