我自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]的博客:https://momjian.us/main/presentations/extended.html
      4. 社区博客[9]:https://planet.postgresql.org/
  2. 第二阶段:
    1. 数据库使用:

      1. 官方文档3,4章[4]
      2. 德哥[10]培训资料(内容相对较多):https://github.com/digoal/blog/blob/master/201901/20190105_01.md
      3. 资料补充(建议观看德哥培训视频以及选择以下四本书一本观看即可,有时间在进行查漏补缺):
        1. 《由浅入深PostgreSQL》[11]
        2. 《PostgreSQL实战》[12]
        3. 《PostgreSQL修炼之道:从小工到专家》[13]
        4. 《PostgreSQL 9X之巅》[14]
    2. 内核内容:
      1. interdb,日本人的PostgreSQL架构。
      2. 社区patch列表[15]:https://commitfest.postgresql.org/
      3. 社区邮件列表[16]:https://www.postgresql.org/list/pgsql-hackers/
      4. 《Debug Hacks》
      5. 《Linux程序设计》
      6. 之前提到的博客。
  3. 第三阶段(当前阶段没有单纯数据库使用了,而是更多以内核为研究对象):
    1. 《大型共享数据库的数据关系模型》[17]
    2. 《Architecture of a Database System》[18]
    3. 《数据库系统实现》[19]
    4. 《PostgreSQL查询引擎源码技术探析》
    5. 《数据库查询优化器的艺术》[20]
    6. 《数据库事务的艺术》[20]
    7. PostgreSQL注释中提到的论文。
    8. 《深入理解计算机系统》
    9. 《支撑处理器的技术》
    10. 《编译原理》
    11. 《算法导论》
    12. 未完待续……
  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. ^《A Relational Model of Data for Large Shared Data Banks》,E. F. CODD在1970年所著,阐述了关系型的定义,是关系型数据库之父、奠基人。
  18. ^Michael Ralph Stonebraker的论文
  19. ^斯坦福大学数据库第二学期课程教材
  20. ^ab李海翔著,对于数据库有深入研究

postgresql修炼之道_PostgreSQL内核开发学习资料相关推荐

  1. postgresql修炼之道_PostgreSQL的TOAST技术

    本文参考: PostgreSQL TOAST 技术理解 <PostgreSQL修炼之道> 一.TOAST是什么? TOAST是"The Oversized-Attribute S ...

  2. PostgreSQL修炼之道:从小工到专家

    数据库技术丛书 PostgreSQL修炼之道:从小工到专家 唐成著 图书在版编目(CIP)数据 PostgreSQL修炼之道:从小工到专家/唐成著. -北京:机械工业出版社,2015.4 (数据库技术 ...

  3. 荐书送书丨《PostgreSQL实战》、《PostgreSQL修炼之道:从小工到专家(第2版)》...

    墨墨导读:最近,相信大家都注意到数据库行业大事记,PostgreSQL在2020年的DB-Engines 排名中获得了比其他360个受监控数据库系统更多的受欢迎程度,获得"2020年度数据库 ...

  4. PostgreSQL修炼之道:从小工到专家. 导读

      数据库技术丛书 PostgreSQL修炼之道:从小工到专家 为什么要写这本书 PostgreSQL数据库是目前功能最强大的开源数据库,它基本包含了其他所有商业或开源的数据库中能找到的功能,甚至还包 ...

  5. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  6. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  7. windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互

    windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互 前面两篇学习笔记分别介绍了IRP和IO_STACK_LOCATION,整个设备栈来处理这个IRP,但是每个设 ...

  8. Linux 内核学习知识:浅析 offsetof 宏以及内核开发学习的所思所想(内核开发人员必读)

    最近一头扎进了 Linux 内核的学习中,Linux 内核的学习,需要的基础知识太多太多了:C 语言.汇编语言.数据结构与算法.操作系统原理.计算机组成原理.计算机体系结构.在囫囵吞枣补完一些计算机基 ...

  9. 2020最新web前端开发学习资料,全套源码无加密网盘下载

    前言--2020web前端开发最新学习资料完整版,全套源码无加密网盘下载 最近小编整理了多套的学习资料(视频+资料+源码),无加密: 两套是某马老师讲解的,讲得挺不错,小编基本学完!还有多个项目实战! ...

最新文章

  1. java 反序列化漏洞简介
  2. A single input file is required for a non-link phase when an outputfile is specified
  3. 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
  4. 什么?在SAP中国研究院里还需要会PHP开发?
  5. Sublime text3配置xdebug调试记录
  6. jdk注解_我们正在下注:这个注解很快就会出现在JDK中
  7. java封装省市区三级json格式,微信开发 使用picker封装省市区三级联动模板
  8. javascript技巧参考
  9. 漫步线性代数七——特殊矩阵和应用
  10. python用符号计算检验多维数组的计算
  11. python如何合并两个字典
  12. HttpURLConnection类的使用
  13. JavaScript多线程 html5 Worker, SharedWorker
  14. Visual Studio 201~ Code 格式检查
  15. sudo使用之实现权限分配
  16. 常用连接Linux的SSH工具、SFTP工具
  17. word打出计算机图形符号,在word插入符号和特殊符号-word技巧-电脑技巧收藏家
  18. 【学习日志】2022.10.08 Unity人物运动(移动+转身)、Character Controller、射线检测、动画融合
  19. Python实现图片转pdf
  20. 学习心得《稻盛和夫经营学》的读后感2300字

热门文章

  1. 提升语义分割性能的几种方法
  2. echarts - 使用echarts过程中遇到的问题(pending...)
  3. JAVA原生mvc实现用户信息的增删查改
  4. vim删除文件第n行到结尾、或某段内容
  5. php对象序列化总出错false
  6. 揭秘ThreadLocal
  7. leetcode笔记:Search in Rotated Sorted Array
  8. CC2530之Flash笔记
  9. rop的noejs客户端
  10. 实现物体绕不同轴旋转,并可以外部调用的函数