绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
PostgreSQL内核开发学习资料
2020-05-19 17:34:42

我自2011年便开始进行PostgreSQL内核开发岗,在公司内也算是时间比较久了,带了一些新人入门,总结了一些不同阶段需要学习的资料。

我将PostgreSQL内核知识划分为3层:

  1. 数据库基础对象,内容多,比如系统表、表、系统函数、语法、前端工具、通讯协议等等;
  2. 进程运行过程;
  3. 数据库核心内容,存储、事务以及查询处理器。

根据内核知识层级,我将PostgreSQL内核开发工程师的知识水平划分为5个级别,由于代码、逻辑耦合度较高,所以无法完全依照知识层级划分,我采取了以点到面的逻辑划分:

  1. 对数据库架构有一个基本认识。熟悉数据库基础对象,并能根据数据库基础对象延伸至进程模型,了解进程工作流程。比如熟悉语法后,增加新的语法以及功能,比如开启和关闭约束;
  2. 根据已知的数据库对象、进程运行过程内容横向扩展,了解不同基础对象以及进程工作内容,然后向核心内容拓展,然后再以核心内容对已有知识整合,比如了解WAL结构后,延伸至流复制、逻辑复制、PITR等。对数据库有一个全面、深入的认识。
  3. 对数据库有深入的研究,能够对数据库功能进行创新。对于背后的理论、原理有清晰的认识。能够对数据库架构进行修改、优化。比如JIT。能够根据一些先进理论对数据库进行改造。比如AI智能优化[1]
  4. 能够对数据库架构做出具有开创性的改变,比如分布式。产品例如,Google的Spanner,Pivotal的Greenplum。
  5. 对数据库的基础理论进行提出、修改,比如新的数据模型。当前学术界对于新的数据模型已经有了大量的讨论,比如对象关系型数据库[2],比如对象代理模型[3]

下面列举了一些各个阶段,我认为应该学习到的资料:

  1. 阶段:
    1. 数据库使用、认识:
      1. 官方文档1,2章[4]
      2. 斯坦福的数据库课程[5]ARCHIVED Introduction to Databases
      3. 《数据库系统教程》[6]
    2. 内核知识:
      1. 《PostgreSQL内核分析》[7],完成阅读,基于8.4介绍的,很好的内核阅读材料。
      2. PostgreSQL代码注释,Readme。
      3. Bruce[8]的博客:momjian.us/main/present
      4. 社区博客[9]planet.postgresql.org/
  2. 第二阶段:
    1. 数据库使用:
      1. 官方文档3,4章[4]
      2. 德哥[10]培训资料(内容相对较多):github.com/digoal/blog/
      3. 资料补充(建议观看德哥培训视频以及选择以下四本书一本观看即可,有时间在进行查漏补缺):
        1. 《由浅入深PostgreSQL》[11]
        2. PostgreSQL实战[12]
        3. 《PostgreSQL修炼之道:从小工到专家》[13]
        4. 《PostgreSQL 9X之巅》[14]
    2. 内核内容:
      1. interdb,日本人的PostgreSQL架构。
      2. 社区patch列表[15]commitfest.postgresql.org
      3. 社区邮件列表[16]postgresql.org/list/pgs
      4. 《Debug Hacks》
      5. 《Linux程序设计》
      6. 之前提到的博客。
  3. 第三阶段(当前阶段没有单纯数据库使用了,而是更多以内核为研究对象):
    1. 《Architecture of a Database System》[17]
    2. 《数据库系统实现》[18]
    3. 《PostgreSQL查询引擎源码技术探析》
    4. 《数据库查询优化器的艺术》[19]
    5. 《数据库事务的艺术》
    6. PostgreSQL注释中提到的论文。
    7. 《深入理解计算机系统》
    8. 《支撑处理器的技术》
    9. 《编译原理》
    10. 《算法导论》
    11. 未完待续……
  4. 第四阶段:
    1. Spanner论文
    2. Raft论文
    3. ……
  5. 第五阶段:
    1. 未知……

有什么建议,也欢迎大家补充,谢谢。

参考

  1. ^本人正处于2级未满,学习3级内容中。关于4级、5级仅仅是我对于未来的构想,说不上成熟。
  2. ^Michael Ralph Stonebraker提出了对象关系型数据库,PostgreSQL正是这样的数据库。其中对象我的理解为表现在表继承。
  3. ^彭智勇教授正在研究的课题。结合对象概念和关系型,提出新的数据库理论模型,已经受到国际认可。
  4. ^ab官方文档,有能力的同学请阅读英文原版 https://www.postgresql.org/docs/12/index.html
  5. ^讲述基本的数据库知识,类似于《数据库概述》课程
  6. ^斯坦福大学数据库课程学期教科书
  7. ^彭智勇、彭煜玮著。我的本内核书。
  8. ^PostgreSQL社区大佬,核心组成员
  9. ^社区开放的博客平台
  10. ^德哥,原名周正中,PostgreSQL大牛
  11. ^彭煜玮教授新作。
  12. ^作者谭峰、张文升,具有多年PG从事经验
  13. ^作者唐成,具有多年数据库从事经验
  14. ^本人参与翻译,作者是我的好朋友Ibrar
  15. ^开发者提交patch后的邮件列表,这里会讨论需求、设计、问题等等
  16. ^内容比patch列表要多,有一部分仅仅是讨论,但未提交到commitfest内的。
  17. ^Michael Ralph Stonebraker的论文
  18. ^斯坦福大学数据库第二学期课程教材
  19. ^李海翔著,对于数据库有深入研究
分享好友

分享这个小栈给你的朋友们,一起进步吧。

华山论剑
创建时间:2019-02-22 18:53:00
没了烟火气,人生就是一段孤独的旅程·····于是,在ITPUB,我们以武论英雄!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 栈栈
    栈主
  • ?
    嘉宾

小栈成员

查看更多
  • u_9a3ed7a37f8e4a
  • daisyplay
  • boss_ch
  • Jack2k
戳我,来吐槽~