postgresql修炼之道_PostgreSQL内核开发学习资料
我自2011年便开始进行PostgreSQL内核开发岗,在公司内也算是时间比较久了,带了一些新人入门,总结了一些不同阶段需要学习的资料。
我将PostgreSQL内核知识划分为3层:
- 数据库基础对象,内容最多,比如系统表、表、系统函数、语法、前端工具、通讯协议等等;
- 进程运行过程;
- 数据库核心内容,存储、事务以及查询处理器。
根据内核知识层级,我将PostgreSQL内核开发工程师的知识水平划分为5个级别,由于代码、逻辑耦合度较高,所以无法完全依照知识层级划分,我采取了以点到面的逻辑划分:
- 对数据库架构有一个基本认识。熟悉数据库基础对象,并能根据数据库基础对象延伸至进程模型,了解进程工作流程。比如熟悉语法后,增加新的语法以及功能,比如开启和关闭约束;
- 根据已知的数据库对象、进程运行过程内容横向扩展,了解不同基础对象以及进程工作内容,然后向核心内容拓展,然后再以核心内容对已有知识整合,比如了解WAL结构后,延伸至流复制、逻辑复制、PITR等。对数据库有一个全面、深入的认识。
- 对数据库有深入的研究,能够对数据库功能进行创新。对于背后的理论、原理有清晰的认识。能够对数据库架构进行修改、优化。比如JIT。能够根据一些先进理论对数据库进行改造。比如AI智能优化[1]。
- 能够对数据库架构做出具有开创性的改变,比如分布式。产品例如,Google的Spanner,Pivotal的Greenplum。
- 对数据库的基础理论进行提出、修改,比如新的数据模型。当前学术界对于新的数据模型已经有了大量的讨论,比如对象关系型数据库[2],比如对象代理模型[3]。
下面列举了一些各个阶段,我认为应该学习到的资料:
- 第一阶段:
- 数据库使用、认识:
- 官方文档1,2章[4]
- 斯坦福的数据库课程[5],ARCHIVED Introduction to Databases。
- 《数据库系统教程》[6]
- 内核知识:
- 《PostgreSQL内核分析》[7],完成阅读,基于8.4介绍的,很好的内核阅读材料。
- PostgreSQL代码注释,Readme。
- Bruce[8]的博客:https://momjian.us/main/presentations/extended.html
- 社区博客[9]:https://planet.postgresql.org/
- 数据库使用、认识:
- 第二阶段:
- 数据库使用:
- 官方文档3,4章[4]
- 德哥[10]培训资料(内容相对较多):https://github.com/digoal/blog/blob/master/201901/20190105_01.md
- 资料补充(建议观看德哥培训视频以及选择以下四本书一本观看即可,有时间在进行查漏补缺):
- 《由浅入深PostgreSQL》[11]
- 《PostgreSQL实战》[12]
- 《PostgreSQL修炼之道:从小工到专家》[13]
- 《PostgreSQL 9X之巅》[14]
- 内核内容:
- interdb,日本人的PostgreSQL架构。
- 社区patch列表[15]:https://commitfest.postgresql.org/
- 社区邮件列表[16]:https://www.postgresql.org/list/pgsql-hackers/
- 《Debug Hacks》
- 《Linux程序设计》
- 之前提到的博客。
- 数据库使用:
- 第三阶段(当前阶段没有单纯数据库使用了,而是更多以内核为研究对象):
- 《大型共享数据库的数据关系模型》[17]
- 《Architecture of a Database System》[18]
- 《数据库系统实现》[19]
- 《PostgreSQL查询引擎源码技术探析》
- 《数据库查询优化器的艺术》[20]
- 《数据库事务的艺术》[20]
- PostgreSQL注释中提到的论文。
- 《深入理解计算机系统》
- 《支撑处理器的技术》
- 《编译原理》
- 《算法导论》
- 未完待续……
- 第四阶段:
- Spanner论文
- Raft论文
- ……
- 第五阶段:
- 未知……
有什么建议,也欢迎大家补充,谢谢。
参考
- ^本人正处于2级未满,学习3级内容中。关于4级、5级仅仅是我对于未来的构想,说不上成熟。
- ^Michael Ralph Stonebraker提出了对象关系型数据库,PostgreSQL正是这样的数据库。其中对象我的理解为表现在表继承。
- ^彭智勇教授正在研究的课题。结合对象概念和关系型,提出新的数据库理论模型,已经受到国际认可。
- ^ab官方文档,有能力的同学请阅读英文原版 https://www.postgresql.org/docs/12/index.html
- ^讲述基本的数据库知识,类似于《数据库概述》课程
- ^斯坦福大学数据库课程第一学期教科书
- ^彭智勇、彭煜玮著。我的第一本内核书。
- ^PostgreSQL社区大佬,核心组成员
- ^社区开放的博客平台
- ^德哥,原名周正中,PostgreSQL大牛
- ^彭煜玮教授新作。
- ^作者谭峰、张文升,具有多年PG从事经验
- ^作者唐成,具有多年数据库从事经验
- ^本人参与翻译,作者是我的好朋友Ibrar
- ^开发者提交patch后的邮件列表,这里会讨论需求、设计、问题等等
- ^内容比patch列表要多,有一部分仅仅是讨论,但未提交到commitfest内的。
- ^《A Relational Model of Data for Large Shared Data Banks》,E. F. CODD在1970年所著,阐述了关系型的定义,是关系型数据库之父、奠基人。
- ^Michael Ralph Stonebraker的论文
- ^斯坦福大学数据库第二学期课程教材
- ^ab李海翔著,对于数据库有深入研究
postgresql修炼之道_PostgreSQL内核开发学习资料相关推荐
- postgresql修炼之道_PostgreSQL的TOAST技术
本文参考: PostgreSQL TOAST 技术理解 <PostgreSQL修炼之道> 一.TOAST是什么? TOAST是"The Oversized-Attribute S ...
- PostgreSQL修炼之道:从小工到专家
数据库技术丛书 PostgreSQL修炼之道:从小工到专家 唐成著 图书在版编目(CIP)数据 PostgreSQL修炼之道:从小工到专家/唐成著. -北京:机械工业出版社,2015.4 (数据库技术 ...
- 荐书送书丨《PostgreSQL实战》、《PostgreSQL修炼之道:从小工到专家(第2版)》...
墨墨导读:最近,相信大家都注意到数据库行业大事记,PostgreSQL在2020年的DB-Engines 排名中获得了比其他360个受监控数据库系统更多的受欢迎程度,获得"2020年度数据库 ...
- PostgreSQL修炼之道:从小工到专家. 导读
数据库技术丛书 PostgreSQL修炼之道:从小工到专家 为什么要写这本书 PostgreSQL数据库是目前功能最强大的开源数据库,它基本包含了其他所有商业或开源的数据库中能找到的功能,甚至还包 ...
- windows内核开发学习笔记十五:IRP结构
windows内核开发学习笔记十五:IRP结构 IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...
- windows内核开发学习笔记十八:IRP 处理的标准模式
windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...
- windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互
windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互 前面两篇学习笔记分别介绍了IRP和IO_STACK_LOCATION,整个设备栈来处理这个IRP,但是每个设 ...
- Linux 内核学习知识:浅析 offsetof 宏以及内核开发学习的所思所想(内核开发人员必读)
最近一头扎进了 Linux 内核的学习中,Linux 内核的学习,需要的基础知识太多太多了:C 语言.汇编语言.数据结构与算法.操作系统原理.计算机组成原理.计算机体系结构.在囫囵吞枣补完一些计算机基 ...
- 2020最新web前端开发学习资料,全套源码无加密网盘下载
前言--2020web前端开发最新学习资料完整版,全套源码无加密网盘下载 最近小编整理了多套的学习资料(视频+资料+源码),无加密: 两套是某马老师讲解的,讲得挺不错,小编基本学完!还有多个项目实战! ...
最新文章
- java 反序列化漏洞简介
- A single input file is required for a non-link phase when an outputfile is specified
- 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
- 什么?在SAP中国研究院里还需要会PHP开发?
- Sublime text3配置xdebug调试记录
- jdk注解_我们正在下注:这个注解很快就会出现在JDK中
- java封装省市区三级json格式,微信开发 使用picker封装省市区三级联动模板
- javascript技巧参考
- 漫步线性代数七——特殊矩阵和应用
- python用符号计算检验多维数组的计算
- python如何合并两个字典
- HttpURLConnection类的使用
- JavaScript多线程 html5 Worker, SharedWorker
- Visual Studio 201~ Code 格式检查
- sudo使用之实现权限分配
- 常用连接Linux的SSH工具、SFTP工具
- word打出计算机图形符号,在word插入符号和特殊符号-word技巧-电脑技巧收藏家
- 【学习日志】2022.10.08 Unity人物运动(移动+转身)、Character Controller、射线检测、动画融合
- Python实现图片转pdf
- 学习心得《稻盛和夫经营学》的读后感2300字