本文翻译自一篇法国作者的博客,觉得写得不错, 原文地址:http://coding-geek.com/how-databases-work/
说起关系型数据库,我总是认为少了点什么。 关系型DB几乎无处不在,有不同类型,从迷你但实用的SQLite到功能强大的Teradata。 但只有少数几个文章谈论这些关系型数据库的工作方式。
不信,你可以看看Google搜索“关系数据库如何工作”,只有很少的几条结果,且非常简短。 如果你搜索新的流行技术(Big Data, NoSQL or JavaScript),你会发现很多深入解释工作原理的文章
是不是关系型数据库太老了,以至于在大学课程、研究论文、书本以外的地方解释原理显得无聊。
作为一个开发者,我不能容忍我不明白的事情发生,而且 ,如果数据库技术已经被用了40年,这里一定有原因。这些年,我花了几百个小时去真正理解这些奇怪的我每天都用的黑盒子, 关系型数据库是非常有趣的因为他们基于有用的可复用的理念上,如果你有兴趣搞懂数据库,但是你没有时间或意愿去深入了解这个很宽泛的主题,那么你会喜欢这篇文章的。
标题已经说得很清楚了,这篇文章的上的不是为了让大家学会怎么用数据库。所以你应该已经知道怎么写一个简单的JOIN查询和基本的增删改查SQL,否则你可能无法理解这篇文章,这是你唯一需要了解的知识,其他的我来给你们讲解吧。
这是一篇很长的包括了很多算法和数据结果技术文章,将会花费你很长的时间去阅读,有些概念很难懂,你可以跳过它理解整体的思路。
为了你更容易理解,本文大约分成三个部分
- 一些低阶或高阶的数据库理论(1-3节,包含在本篇文章中)
- 查询优化器进程(第4节)
- 事务和缓冲池管理(第5节)
以下是目录:
- 基础知识
- 1.1 O(1) vs O(n^2)
- 1.2 合并排序
- 1.3 数组,树,哈希表
- 1.1 O(1) vs O(n^2)
- 通用概念
- 客户端管理
- SQL查询
- 4.1 SQL解析
- 4.2 查询重写
- 4.3 统计信息
- 4.4 SQL优化
- 4.5 SQL执行
- 数据管理
- 5.1 缓存管理
- 5.2 事务管理
- 总结
在很远很远的远古时期,码农们需要准确知道他们编写的代码是怎么运行的。他们心里知道他们的算法和数据结构,因为他们不能浪费一点点他们那些破电脑的一点点CPU和内存。
在这个章节,我将带大家回顾这些概念,因为这对弄懂数据库很关键,顺便我还会介绍索引的概念
本节完成,下一章节我们将讨论:时间复杂度
本篇文章完整分为7节,当前第1节。以下完整章节: