生活随笔
收集整理的這篇文章主要介紹了
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内核开发学习资料的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。