ITPub博客

首页 > IT职业 > > PostgreSQL内核开发学习资料

PostgreSQL内核开发学习资料

作者:格伯纳 时间:2020-05-19 17:34:42 0 删除 编辑

我自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. ^李海翔著,对于数据库有深入研究

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3139304/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984279