为什么要写数据库内核杂谈这个系列呢?原因很简单,我看到过很多关于如何使用某些数据库的博客,但是从来没有看到过系统介绍数据库内部的文章,所以数据库内核杂谈这个系列会深入浅出地介绍数据库系统内部各个子系统是如何工作,又是如何协作来完成复杂工作的。
整个系列不仅会覆盖所有经典系统的部分,也会跟进最新的技术趋势,例如code gen和vectorized execution等。希望通过阅读这个系列能够给读者知其然,知其所以然的感悟,如果能达到触类旁通的境界,就更好啦。
数据库内核博大精深,很多子系统的设计初看不知所云,但是细读就会发现其已经做到了极致。但是市面上很少有类似的资源或者课程把数据库内容的精髓讲解出来,因此 Facebook 现任 Tech Lead 顾仲贤撰写了《数据库内核杂谈》的系列文章。
数据库是用来存储海量数据的,相较于列举常见的存储形式然后对比优缺点的分类法,我们今天另辟蹊径,从 " 演化论 " 的角度来看,不同的存储形式和优化方法是怎么一步一步进化出来的。
本文将主要介绍排序 (Sort) 和聚合 (Aggregate) 的实现。为什么要把这两个算子放在一起说呢?因为它们之间有很多的共同点,比如都是 Blocking 的算子,即需要得到所有的输入 tuple,才能完成计算后输出,这就使得它们会遇到同样的困难。
数据库能够把现实中的某一块业务,映射地表达成一系列的表的集合,并且其查询语句 SQL 支持多个表相关联的查询操作。这种连接多表的查询使得数据库的功能得到了一个质的飞跃。
Datometry 的愿景就是,解决数据库迁徙的难题。市场上有各种各样的数据库,特别是这几年,随着云计算的普及,云原生的数据库一路高奏凯歌。技术架构,包括数据库系统向云端迁徙是大势所趋。
本文是数据库内核系列文章之一。generation(代码生成;execution(向量计算;以下简称 vec-exec)。
我是数据库内核杂谈系列的作者。首先和大家道个歉,数据库内核杂谈拖更了。时至年中,工作有点忙,要总结也要计划,另外,北美特别是北加这边疫情也愈发严重,导致心情也沉重了,导致拖更了。新的一期已经在创作了,绝对不会荒废的,今天这期,插播一期番外,