为什么要写数据库内核杂谈这个系列呢?原因很简单,我看到过很多关于如何使用某些数据库的博客,但是从来没有看到过系统介绍数据库内部的文章,所以数据库内核杂谈这个系列会深入浅出地介绍数据库系统内部各个子系统是如何工作,又是如何协作来完成复杂工作的。
整个系列不仅会覆盖所有经典系统的部分,也会跟进最新的技术趋势,例如code gen和vectorized execution等。希望通过阅读这个系列能够给读者知其然,知其所以然的感悟,如果能达到触类旁通的境界,就更好啦。
数据库内核博大精深,很多子系统的设计初看不知所云,但是细读就会发现其已经做到了极致。但是市面上很少有类似的资源或者课程把数据库内容的精髓讲解出来,因此 Facebook 现任 Tech Lead 顾仲贤撰写了《数据库内核杂谈》的系列文章。
数据库是用来存储海量数据的,相较于列举常见的存储形式然后对比优缺点的分类法,我们今天另辟蹊径,从 " 演化论 " 的角度来看,不同的存储形式和优化方法是怎么一步一步进化出来的。
数据库索引是通过引入冗余的数据存储 (类比书籍最后的索引章节),来提高查询语句的速度。
我们通过存储和索引,了解了如何把数据存储在文件系统里,然后根据不同的查询语句,通过建立索引来提速读取。今天,我们来聊一下当数据读进内存后,数据库怎么继续执行查询。
本文将主要介绍排序 (Sort) 和聚合 (Aggregate) 的实现。为什么要把这两个算子放在一起说呢?因为它们之间有很多的共同点,比如都是 Blocking 的算子,即需要得到所有的输入 tuple,才能完成计算后输出,这就使得它们会遇到同样的困难。
数据库能够把现实中的某一块业务,映射地表达成一系列的表的集合,并且其查询语句 SQL 支持多个表相关联的查询操作。这种连接多表的查询使得数据库的功能得到了一个质的飞跃。
优化器的输入是数据库的元数据以及语义绑定的语法树,输出是最终的物理算子的执行计划。那它内部又是怎么得到最终的物理算子的执行计划的呢?
当语句中涉及到多个表的 join 时,优化器该如何决定 join 的顺序 (join ordering) 来找到最优解呢?
在这篇文章中我们将通过介绍一款真实的、开源的、已经搭载在生产环境中的数据库优化器 ORCA,带大家从工程实践的角度来了解数据库优化器。
在之前的文章,我们和大家分享了基本的数据库优化器和执行器。这篇文章,我们要分享一个很重要的概念:事务及其相关实现。
本文将会由浅入深地介绍加锁实现机制和时间戳机制这两种不同实现方法的形成过程。
这篇文章我们将介绍最被广泛使用的方法——多版本并发控制 Multi-Version Concurrency Control (MVCC)。
假设给一个单机的数据库系统实现,在这个基础上如何把它扩建成分布式数据库系统。
Datometry 的愿景就是,解决数据库迁徙的难题。市场上有各种各样的数据库,特别是这几年,随着云计算的普及,云原生的数据库一路高奏凯歌。技术架构,包括数据库系统向云端迁徙是大势所趋。
本文是数据库内核系列文章之一。generation(代码生成;execution(向量计算;以下简称 vec-exec)。
本文主要介绍一个实现了 vec-exec 的商用数据仓库系统 Snowflake。
基于 Thomas Neumann 的论文:Efficiently Compiling Efficient Query Plans for Modern Hardware,我们一起来深入学习一下 code-gen。
NoisePage 是一个从头开发的致力于自动管理的数据库系统,通过 machine learning 技术来调整,优化系统参数和对系统进行调优。
我是数据库内核杂谈系列的作者。首先和大家道个歉,数据库内核杂谈拖更了。时至年中,工作有点忙,要总结也要计划,另外,北美特别是北加这边疫情也愈发严重,导致心情也沉重了,导致拖更了。新的一期已经在创作了,绝对不会荒废的,今天这期,插播一期番外,
大家期待的最新一期数据库内核杂谈更新了!
新一期的数据库内核杂谈更新了,本期是番外篇,顾仲贤老师和你聊聊管理者如何保持技术敏感度。
InfoQ 热门专题之一又更新了
拖更大师的 2022 回归
本文介绍 Alibaba 为了应对 HSAP 的应用场景推出的云原生大数据处理引擎 Hologres
欢迎阅读新一期的数据库内核杂谈。新一期的杂谈特别安排在中秋节后,祝大家中秋快乐(主要还是忙得又拖更了)。
这一期,我们尝试着来聊一下数据湖。
这一期,我们一起来学习 AWS 在 USENIX 2022 上发表的关于 Amazon DynamoDB 的最新论文。
这一期,我们继续学习 AWS 在 USENIX 2022 上发表的关于 Amazon DynamoDB 的最新论文。
欢迎阅读新一期的数据库内核杂谈。前两期杂谈介绍了 DynamoDB 的设计理念,分布式架构,和如何做到大规模数据下的性能保障。
欢迎阅读新一期的数据库内核杂谈。这期杂谈,不聊数据库,咱们插入一个番外篇,聊一下多租户 (multi-tenant) 应用的系统设计。
欢迎阅读新一期的数据库内核杂谈。在内核杂谈的第二期(存储演化论)里,我们介绍过数据库如何存储数据文件。
内核杂谈系列更新,Parquet 收尾之作
感恩五周年读者陪伴
欢迎阅读新一期的数据库内核杂谈。
欢迎阅读新一期的内核杂谈。embedding 对于大模型,人工智能的作用。database 的存储。metrics。
欢迎阅读新一期的内核杂谈。这是向量数据库的第四弹!
欢迎阅读新一期的数据库内核杂谈。先给大家道个歉,这次又双叒叕地拖更了。一来是工作有些忙;database 系列后,一直没有新的输入,自己也没啥想法。