我为什么要搞数据库内核课程
我为什么要搞内核课程
数据库行业从业20多年, 一直有个心结: 什么时候在PostgreSQL这样的国际知名开源社区能有大量中国贡献者呢?
中国贡献者寥寥无几, 可能和这些原因有关:
1、语言问题, 英语交流障碍筛掉了一波人. 2、门槛较高, 至少得掌握C、算法、数据结构、数据库原理等, 又筛掉一大波人. 3、整理好的从0到1的自学成才素材较少, 又筛掉一波真正有兴趣的人. 以下这种适合自学类型的书籍太少了. https://www.interdb.jp/dl/part01.html https://postgrespro.com/community/books/internals https://github.com/exacity/deeplearningbook-chinese https://exacity.github.io/deeplearningbook-chinese/ https://zh.d2l.ai/ https://d2l.ai/ https://www.hello-algo.com/ https://github.com/d2l-ai/d2l-zh 《Hello 算法》: 《动手学深度学习》: 《Deep Learning Book Chinese Translation》: 目前较好的 interDB/inernals 都是偏DBA的. 4、商业驱动, 数据库内核人才算是高端型的, 虽然薪水不低, 但是需求量不算太大, 主要集中在数据库厂商、云厂商、大型央国企, 又筛掉一波人. 5、缺乏内核开发者的人才认定标准. 只能通过开源贡献、职业经历来判断, 使得这个圈子很难扩散. 6、相关专业的大学生没有被调动起来.
现在数据库内核人才大都大学计算机专业出身, 校招进入数据库研发型的企业逐步成长而来. 进入企业后转行的非常之少, 我个人认为不是他们不想转, 可能真的是缺乏自学成才的体系化素材. 就像2000年时, 很多网络工程师的诉求, 还真有一些农民工转行成为网络工程师的. 不是开玩笑, Cisco认证做得好啊.
我特别想做一件事:
1、解决自学成才门槛问题. 面向大学生、传统的DBA、深度使用数据库的应用开发者, 打造从0到1的自学成才素材, 把门槛降下来. 这批人有一定的基础和学习冲动, 基数够大. 让有兴趣的人因为职业发展去主动自学.
有了更多的人才后, 企业对人才也会提出更多的要求. 例如, 用户侧可能也会有数据库内核开发能力的要求, 至少能读懂内核代码, 不被厂商忽悠, 更进一步可以分析bug或者修bug, 甚至可以结合自身业务改进数据库内核功能.
学完之后, 能逐步达到: “熟悉开源协作流程、读懂数据库内核代码、分析BUG、修复BUG、开发插件或内核功能” 的水平. 辅以AI编程, 达到这个水平比预想的可能要快, 后面就是熟练程度问题了.
2、建立认证体系.
** 一个人的力量肯定是不够的, 得抱紧我的好兄弟们. 高校老师朋友们、生态企业和机构(如PG/PolarDB社区、周边生态公司们、培训机构如cuug等)、数据库领域KOL/内核开发老司机(如海波,老楼,老章,老纪等老司机)、大厂和国央企们 一起联合发布. **
首批进入教学产品是结合了国际热门开源数据库PostgreSQL血统的国产开源的产品 PolarDB for PostgreSQL. 当然, 只拿PolarDB PostgreSQL开源来分享肯定无法吸引到其他数据库企业的老司机们参与进来, 例如protonBase, cloudberry, haloDB, 柏睿数据, apecloud, 等都是高手如云的公司. 如果能一起建设这个课程真的太棒了. 所以课程肯定不会只有PolarDB PostgreSQL开源. 期待
说到不如做到, 我已经开始用AI在进行课程打造的实践了, 持续更新中:
《用AI修改pg_bulkload代码, 适配PolarDB PFS, 大幅度提升数据批量导入性能》
《PolarDB内核学习 - 1 如何快速对比 PolarDB 和 PostgreSQL 的代码差异》
《PolarDB内核学习 - 2 用doxygen生成PolarDB代码逻辑和结构图》
... gdb 调试代码/了解内核运行逻辑.
附录 古典学习曲线(参考deepseek-r1建议)
1、数据库原理
《The Internals of PostgreSQL》 《PostgreSQL 14 Internals》 《2024-数据库筑基课 系列》 《数据库系统概念 Database System Concepts》 理论基石,适合理解数据库设计原理, 配套视频: https://15445.courses.cs.cmu.edu/fall2023/ https://15445.courses.cs.cmu.edu/spring2025/ https://www.youtube.com/playlist?list=PLSE8ODhjZXjbj8BMuIrRcacnQh20hmY9g 《Readings in Database Systems》 (Red Book): 收录经典论文,适合进阶学习。 http://www.redbook.io/
2、数据库管理和优化
《开源PolarDB 基础课程》 《开源PolarDB 进阶课程》 《2010-PostgreSQL, Greenplum管理、优化视频 (提取码: 5nox 失效请通知我谢谢)》 《2019-PostgreSQL 2天体系化培训 - 适合DBA》 《2019-PG天天象上沙龙纪录 - 适合DBA》 《2019-Oracle迁移到PostgreSQL - 适合DBA与业务开发者》 《2021-Ask 德哥 系列 - 适合DBA与业务开发者》 《2022-每天5分钟,PG聊通透 - 系列1 - 热门问题》 《Oracle DBA 增值+转型 PostgreSQL 学习方法、路径》 《2024-开源PolarDB|PostgreSQL 应用开发者&DBA 公开课》 补充规模化管理 : https://github.com/apecloud/kubeblocks
3、应用场景与架构
《2017-PostgreSQL 应用场景实践 - 适合架构师与业务开发者》 《数据库选型之 - 大象十八摸 - 致 架构师、开发者》 《PostgreSQL、Greenplum 技术+108个场景结合最佳实践《如来神掌》》 《2018-PG生态、案例、开发实践系列 - 适合架构师与业务开发者》 《2018-阿里云POLARDB for Oracle|RDS for PPAS 讲解视频》 《2020-PostgreSQL 应用场景最佳实践 - 适合架构师与业务开发者》 《2020-PostgreSQL+MySQL 联合解决方案课程 - 适合架构师与业务开发者》 《2021-重新发现PG之美 系列 - 适合架构师与业务开发者》 《2023-PostgreSQL|PolarDB 学习实验手册》 《欢迎关注digoal其他文章》
4、数据库产品需求和选型
《2021-DB吐槽大会 系列 - 适合产品经理、架构师与内核开发者》 《企业数据库选型规则》 《数据库选型思考(PostgreSQL,MySQL,Oracle)》 《云、商业、开源数据库终局之战 - 商业角度解读PG如何破局 - openapi 、 扩展能力、插件开源协议》 《[直播]大话数据库终局之战》 《未来数据库方向 - 以及PostgreSQL 有价值的插件、可改进功能、开放接口 (202005)》
5、C
入门经典 《C Primer Plus》(第6版) 作者:Stephen Prata 进阶 《Expert C Programming: Deep C Secrets》 作者:Peter van der Linden 《C陷阱与缺陷》(C Traps and Pitfalls) 作者:Andrew Koenig 《Pointers on C》(C和指针) 作者:Kenneth A. Reek
6、Unix/Linux编程
系统编程进阶 英文名:The Linux Programming Interface 简介:系统编程领域的权威著作,覆盖 1000+ 系统调用和 API,适合深入学习和长期参考。 学习目标:掌握 Linux 系统级开发技术,如信号、进程间通信、多线程等。 简介:通过大量实践案例(如文件操作、进程管理、信号处理)讲解系统编程,适合边学边练。 学习目标:理解系统调用、文件 I/O、进程线程等核心概念。 《Unix/Linux编程实践教程》 《Linux/UNIX系统编程手册》(上下册) 底层与网络编程 英文名:UNIX Network Programming, Volume 1 简介:详解网络编程核心技术(如 TCP/IP、套接字、多路复用),对数据库网络通信实现至关重要。 学习目标:掌握高并发网络服务开发能力。 英文名:Advanced Programming in the UNIX Environment 简介:被誉为“UNIX 编程圣经”,涵盖文件系统、进程控制、信号、网络 IPC 等高级主题。 学习目标:深入理解 UNIX 编程模型,为数据库底层开发打下基础。 《Unix环境高级编程(APUE)》 《Unix网络编程》(卷1:套接字联网API) 内核与性能优化 简介:从设计哲学角度讲解 UNIX 工具链和模块化思想,帮助构建高可维护性数据库系统。 英文名:Linux Kernel Development 简介:以简洁的代码和图示讲解内核核心模块,适合结合实践学习。 学习目标:掌握内核模块开发与调试技巧。 英文名:Understanding the Linux Kernel 简介:解析 Linux 内核设计(如进程调度、内存管理、文件系统),适合研究数据库存储引擎等底层实现。 学习目标:理解内核机制,优化数据库性能。 《深入理解Linux内核》 《Linux内核设计与实现》 《Unix编程艺术》
7、数据库实现
《PostgreSQL数据库内核分析》 《数据库系统实现 - Database System Implementation》 《手搓x系列, 含手搓数据库》 https://github.com/codecrafters-io/build-your-own-x https://cstack.github.io/db_tutorial/
以上内容基于DeepSeek-R1生成, 轻微人工调整, 感谢杭州深度求索人工智能基础技术研究有限公司
AI 生成的内容请自行辨别正确性, 当然也多了些许踩坑的乐趣, 毕竟冒险是每个男人的天性.