NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么
数据库内核杂谈

数据库内核杂谈

策划: 顾仲贤

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

整个系列不仅会覆盖所有经典系统的部分,也会跟进最新的技术趋势,例如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 预测

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

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

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

数据库内核杂谈(二十一): 流处理系统简介
数据库内核杂谈 (二十一): 流处理系统简介

InfoQ 热门专题之一又更新了

数据库内核杂谈(二十二) 自动驾驶数据库 - Behavior Modeling
数据库内核杂谈 (二十二) 自动驾驶数据库 - Behavior Modeling

拖更大师的 2022 回归

数据库内核杂谈(二十三)- Hologres,支持Hybrid serving/analytical Processing的数据引擎(1)
数据库内核杂谈(二十三)- Hologres,支持 Hybrid serving/analytical Processing 的数据引擎(1)

本文介绍 Alibaba 为了应对 HSAP 的应用场景推出的云原生大数据处理引擎 Hologres

数据库内核杂谈(二十四)- Hologres,支持Hybrid serving/analytical Processing的数据引擎(2)
数据库内核杂谈(二十四)- Hologres,支持 Hybrid serving/analytical Processing 的数据引擎(2)

欢迎阅读新一期的数据库内核杂谈。新一期的杂谈特别安排在中秋节后,祝大家中秋快乐(主要还是忙得又拖更了)。

数据库内核杂谈(二十五)- 数据湖前世今生
数据库内核杂谈(二十五)- 数据湖前世今生

这一期,我们尝试着来聊一下数据湖。

数据库内核杂谈(二十六)- 精读 DynamoDB 2022 论文(1)
数据库内核杂谈(二十六)- 精读 DynamoDB 2022 论文(1)

这一期,我们一起来学习 AWS 在 USENIX 2022 上发表的关于 Amazon DynamoDB 的最新论文。

数据库内核杂谈(二十七)- 精读 DynamoDB 2022 论文(2)
数据库内核杂谈(二十七)- 精读 DynamoDB 2022 论文(2)

这一期,我们继续学习 AWS 在 USENIX 2022 上发表的关于 Amazon DynamoDB 的最新论文。

数据库内核杂谈(二十八)- 和ChatGPT一起精读 DynamoDB 2022 论文
数据库内核杂谈(二十八)- 和 ChatGPT 一起精读 DynamoDB 2022 论文

欢迎阅读新一期的数据库内核杂谈。前两期杂谈介绍了 DynamoDB 的设计理念,分布式架构,和如何做到大规模数据下的性能保障。

数据库内核杂谈(二十九)- 多租户(multi-tenant)系统设计的思考(番外)
数据库内核杂谈(二十九)- 多租户 (multi-tenant) 系统设计的思考(番外)

欢迎阅读新一期的数据库内核杂谈。这期杂谈,不聊数据库,咱们插入一个番外篇,聊一下多租户 (multi-tenant) 应用的系统设计。

数据库内核杂谈(三十)- 大数据时代的存储格式-Parquet
数据库内核杂谈(三十)- 大数据时代的存储格式 -Parquet

欢迎阅读新一期的数据库内核杂谈。在内核杂谈的第二期(存储演化论)里,我们介绍过数据库如何存储数据文件。

数据库内核杂谈(三十一)- 大数据时代的存储格式-Parquet(2)
数据库内核杂谈(三十一)- 大数据时代的存储格式 -Parquet(2)

内核杂谈系列更新,Parquet 收尾之作

数据库内核杂谈(三十二)- 杂谈五周年特别篇
数据库内核杂谈(三十二)- 杂谈五周年特别篇

感恩五周年读者陪伴

数据库内核杂谈(三十三)- 向量数据库(1)
数据库内核杂谈(三十三)- 向量数据库(1)

欢迎阅读新一期的数据库内核杂谈。

数据库内核杂谈(三十四)- 向量数据库(2)深入浅出聊存储
数据库内核杂谈(三十四)- 向量数据库(2)深入浅出聊存储

欢迎阅读新一期的内核杂谈。embedding 对于大模型,人工智能的作用。database 的存储。metrics。

数据库内核杂谈(三十六)- 向量数据库(4)quantization和HNSW
数据库内核杂谈(三十六)- 向量数据库(4)quantization 和 HNSW

欢迎阅读新一期的内核杂谈。这是向量数据库的第四弹!

没有更多了
数据库内核杂谈_技术洞察_技术趋势_大厂实践_InfoQ精选专题