Files
Knowledge/1 使用/let's craft a database system.md

1.8 KiB
Raw Permalink Blame History

  • 为什么数据库一般使用 dsl 语言作为数据查询接口,而不是 api 函数?
  • 一条查询语句被提交给数据库之后,背后发生了多少不为人知的交易?

比如查询语句的解析成 ast,解析 ast 到逻辑 plan,调整优化逻辑 plan 形成物理 plan,执行器高效编排plan node并执行,存储引擎接口操作,数据如何一步一步返回?每个步骤单独去讲,都是一个伟大的领域。

你就说里面最简单的执行器的执行和返回,火山模型还是漏斗模型亦或者是暴力 mr?解析查询语句是用工具生成还是手动优化?手动优化为了避免内存碎片和频繁回溯判断,上不上记忆链?或者 AI 推导式解析?亦或者是编译走参数化查询?这还只是里面最简单的内容,真到了物化视图延迟加载和 cbo 优化,估计头发都没了。

当你搞懂了这些点之后,大概就理解,为什么从0到 1 写个数据库的教程如此匮乏,大名鼎鼎的 let's craft a database system 却只是在实现一个 btree ?