# 总结
在写本文之前,我就知道这个话题是有多大,需要花费多少时间写一篇有深度的文章。事实证明我还是过于乐观,我花费了比预想多两倍的时间,但是我学到了很多。
如果你想很好学习数据库,我推荐阅读这篇研究论文《[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf)》。这是一篇很好的介绍数据库的文章(110 页),适合非计算机专业人事阅读。这篇文章对编写本文计划给我很大帮助。它并没有像我的文章一样关注数据结构和算法,而是给出很多架构概念。
如果你仔细阅读本文,你应该知道数据库的强大之处。由于这是一篇很长的文章,我来提醒一下你阅读过什么:
* B+ 树索引的概览
* 数据库全局概览
* 基于成本的优化的概览,尤其关注于连接运算
* 缓冲池管理概览
* 事务管理概览
但是数据库要聪明得多。例如,我没有碰触下面的问题:
* 如何管理集群式数据库和全局事务
* 如何在数据库运行时对其创建快照
* 如何有效存储(包括压缩)数据
* 如何管理内存
所以,当你需要在充满 bug 的 NoSQL 数据库和像石头一样坚固的关系数据库之间选择时,我奉劝你要多多思考。不要将我的意思理解错了,某些 NoSQL 数据库非常棒,但是它们还年轻,只能处理某些应用的特定问题。
总结一下,如果以后有人问你,数据库是怎么工作的,我希望你不是像下面一样回答这个问题:
[![魔法](http://files.devbean.net/images/2016/04/magic_low2.gif)](http://files.devbean.net/images/2016/04/magic_low2.gif)
否则的话,你可以把这篇文章甩到他脸上。