写点什么
数据库内核杂谈

数据库内核杂谈

策划: 顾仲贤

为什么要写数据库内核杂谈这个系列呢?原因很简单,我看到过很多关于如何使用某些数据库的博客,但是从来没有看到过系统介绍数据库内部的文章,所以数据库内核杂谈这个系列会深入浅出地介绍数据库系统内部各个子系统是如何工作,又是如何协作来完成复杂工作的。

整个系列不仅会覆盖所有经典系统的部分,也会跟进最新的技术趋势,例如code gen和vectorized execution等。希望通过阅读这个系列能够给读者知其然,知其所以然的感悟,如果能达到触类旁通的境界,就更好啦。

数据库内核杂谈(一):一小时实现一个基本功能的数据库
数据库内核杂谈(一):一小时实现一个基本功能的数据库

数据库内核博大精深,很多子系统的设计初看不知所云,但是细读就会发现其已经做到了极致。但是市面上很少有类似的资源或者课程把数据库内容的精髓讲解出来,因此 Facebook 现任 Tech Lead 顾仲贤撰写了《数据库内核杂谈》的系列文章。

数据库内核杂谈(二):存储“演化论”
数据库内核杂谈(二):存储“演化论”

数据库是用来存储海量数据的,相较于列举常见的存储形式然后对比优缺点的分类法,我们今天另辟蹊径,从 " 演化论 " 的角度来看,不同的存储形式和优化方法是怎么一步一步进化出来的。

数据库内核杂谈(三):索引优化
数据库内核杂谈(三):索引优化

数据库索引是通过引入冗余的数据存储 (类比书籍最后的索引章节),来提高查询语句的速度。

数据库内核杂谈(四):执行模式
数据库内核杂谈(四):执行模式

我们通过存储和索引,了解了如何把数据存储在文件系统里,然后根据不同的查询语句,通过建立索引来提速读取。今天,我们来聊一下当数据读进内存后,数据库怎么继续执行查询。

数据库内核杂谈(五):如何实现排序和聚合
数据库内核杂谈(五):如何实现排序和聚合

本文将主要介绍排序 (Sort) 和聚合 (Aggregate) 的实现。为什么要把这两个算子放在一起说呢?因为它们之间有很多的共同点,比如都是 Blocking 的算子,即需要得到所有的输入 tuple,才能完成计算后输出,这就使得它们会遇到同样的困难。

数据库内核杂谈(六):表的JOIN(连接)
数据库内核杂谈(六):表的 JOIN(连接)

数据库能够把现实中的某一块业务,映射地表达成一系列的表的集合,并且其查询语句 SQL 支持多个表相关联的查询操作。这种连接多表的查询使得数据库的功能得到了一个质的飞跃。

数据库内核杂谈(七):数据库优化器(上)
数据库内核杂谈(七):数据库优化器(上)

优化器的输入是数据库的元数据以及语义绑定的语法树,输出是最终的物理算子的执行计划。那它内部又是怎么得到最终的物理算子的执行计划的呢?

数据库内核杂谈(八):数据库优化器(下)
数据库内核杂谈(八):数据库优化器(下)

当语句中涉及到多个表的 join 时,优化器该如何决定 join 的顺序 (join ordering) 来找到最优解呢?

数据库内核杂谈(九):开源优化器ORCA
数据库内核杂谈(九):开源优化器 ORCA

在这篇文章中我们将通过介绍一款真实的、开源的、已经搭载在生产环境中的数据库优化器 ORCA,带大家从工程实践的角度来了解数据库优化器。

数据库内核杂谈(十):事务、隔离、并发(1)
数据库内核杂谈 (十):事务、隔离、并发(1)

在之前的文章,我们和大家分享了基本的数据库优化器和执行器。这篇文章,我们要分享一个很重要的概念:事务及其相关实现。

数据库内核杂谈(十一):事务、隔离、并发(2)
数据库内核杂谈 (十一):事务、隔离、并发(2)

本文将会由浅入深地介绍加锁实现机制和时间戳机制这两种不同实现方法的形成过程。

数据库内核杂谈(十二):事务、隔离、并发(3)
数据库内核杂谈 (十二):事务、隔离、并发(3)

这篇文章我们将介绍最被广泛使用的方法——多版本并发控制 Multi-Version Concurrency Control (MVCC)。

数据库内核杂谈(十三):如何把一个单机数据库扩展成分布式数据库
数据库内核杂谈 (十三):如何把一个单机数据库扩展成分布式数据库

假设给一个单机的数据库系统实现,在这个基础上如何把它扩建成分布式数据库系统。

数据库内核杂谈(十四):Datometry and its Hyper-Q Platform
数据库内核杂谈 (十四):Datometry and its Hyper-Q Platform

Datometry 的愿景就是,解决数据库迁徙的难题。市场上有各种各样的数据库,特别是这几年,随着云计算的普及,云原生的数据库一路高奏凯歌。技术架构,包括数据库系统向云端迁徙是大势所趋。

数据库内核杂谈(十五): 执行器之code generation vs vectorized execution
数据库内核杂谈 (十五): 执行器之 code generation vs vectorized execution

本文是数据库内核系列文章之一。generation(代码生成;execution(向量计算;以下简称 vec-exec)。

数据库内核杂谈(十六):Snowflake Elastic Data Warehouse
数据库内核杂谈 (十六):Snowflake Elastic Data Warehouse

本文主要介绍一个实现了 vec-exec 的商用数据仓库系统 Snowflake。

数据库内核杂谈(十七):code-gen 深入学习
数据库内核杂谈 (十七):code-gen 深入学习

基于 Thomas Neumann 的论文:Efficiently Compiling Efficient Query Plans for Modern Hardware,我们一起来深入学习一下 code-gen。

数据库内核杂谈(十八) :自动驾驶的数据库系统
数据库内核杂谈 (十八) :自动驾驶的数据库系统

NoisePage 是一个从头开发的致力于自动管理的数据库系统,通过 machine learning 技术来调整,优化系统参数和对系统进行调优。

番外篇:新鲜上市的Unicorn - Pinterest的数据系统
番外篇:新鲜上市的 Unicorn - Pinterest 的数据系统

我是数据库内核杂谈系列的作者。首先和大家道个歉,数据库内核杂谈拖更了。时至年中,工作有点忙,要总结也要计划,另外,北美特别是北加这边疫情也愈发严重,导致心情也沉重了,导致拖更了。新的一期已经在创作了,绝对不会荒废的,今天这期,插播一期番外,

数据库内核杂谈(十九)自动驾驶数据库 - Workload预测
数据库内核杂谈 (十九) 自动驾驶数据库 - Workload 预测

大家期待的最新一期数据库内核杂谈更新了!

数据库内核杂谈(二十)番外 - 管理者如何保持技术敏感
数据库内核杂谈 (二十) 番外 - 管理者如何保持技术敏感

新一期的数据库内核杂谈更新了,本期是番外篇,顾仲贤老师和你聊聊管理者如何保持技术敏感度。

没有更多了

基于英特尔x86平台构建AI软件生态系统

基于英特尔x86平台构建AI软件生态系统

数据库内核杂谈-InfoQ