生活随笔
收集整理的這篇文章主要介紹了
postgresql修炼之道_PostgreSQL内核开发学习资料
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我自2011年便開始進(jìn)行PostgreSQL內(nèi)核開發(fā)崗,在公司內(nèi)也算是時(shí)間比較久了,帶了一些新人入門,總結(jié)了一些不同階段需要學(xué)習(xí)的資料。
我將PostgreSQL內(nèi)核知識(shí)劃分為3層:
數(shù)據(jù)庫基礎(chǔ)對(duì)象,內(nèi)容最多,比如系統(tǒng)表、表、系統(tǒng)函數(shù)、語法、前端工具、通訊協(xié)議等等;進(jìn)程運(yùn)行過程;數(shù)據(jù)庫核心內(nèi)容,存儲(chǔ)、事務(wù)以及查詢處理器。根據(jù)內(nèi)核知識(shí)層級(jí),我將PostgreSQL內(nèi)核開發(fā)工程師的知識(shí)水平劃分為5個(gè)級(jí)別,由于代碼、邏輯耦合度較高,所以無法完全依照知識(shí)層級(jí)劃分,我采取了以點(diǎn)到面的邏輯劃分:
對(duì)數(shù)據(jù)庫架構(gòu)有一個(gè)基本認(rèn)識(shí)。熟悉數(shù)據(jù)庫基礎(chǔ)對(duì)象,并能根據(jù)數(shù)據(jù)庫基礎(chǔ)對(duì)象延伸至進(jìn)程模型,了解進(jìn)程工作流程。比如熟悉語法后,增加新的語法以及功能,比如開啟和關(guān)閉約束;根據(jù)已知的數(shù)據(jù)庫對(duì)象、進(jìn)程運(yùn)行過程內(nèi)容橫向擴(kuò)展,了解不同基礎(chǔ)對(duì)象以及進(jìn)程工作內(nèi)容,然后向核心內(nèi)容拓展,然后再以核心內(nèi)容對(duì)已有知識(shí)整合,比如了解WAL結(jié)構(gòu)后,延伸至流復(fù)制、邏輯復(fù)制、PITR等。對(duì)數(shù)據(jù)庫有一個(gè)全面、深入的認(rèn)識(shí)。對(duì)數(shù)據(jù)庫有深入的研究,能夠?qū)?shù)據(jù)庫功能進(jìn)行創(chuàng)新。對(duì)于背后的理論、原理有清晰的認(rèn)識(shí)。能夠?qū)?shù)據(jù)庫架構(gòu)進(jìn)行修改、優(yōu)化。比如JIT。能夠根據(jù)一些先進(jìn)理論對(duì)數(shù)據(jù)庫進(jìn)行改造。比如AI智能優(yōu)化[1]。能夠?qū)?shù)據(jù)庫架構(gòu)做出具有開創(chuàng)性的改變,比如分布式。產(chǎn)品例如,Google的Spanner,Pivotal的Greenplum。對(duì)數(shù)據(jù)庫的基礎(chǔ)理論進(jìn)行提出、修改,比如新的數(shù)據(jù)模型。當(dāng)前學(xué)術(shù)界對(duì)于新的數(shù)據(jù)模型已經(jīng)有了大量的討論,比如對(duì)象關(guān)系型數(shù)據(jù)庫[2],比如對(duì)象代理模型[3]。下面列舉了一些各個(gè)階段,我認(rèn)為應(yīng)該學(xué)習(xí)到的資料:
第一階段:數(shù)據(jù)庫使用、認(rèn)識(shí):官方文檔1,2章[4]斯坦福的數(shù)據(jù)庫課程[5],ARCHIVED Introduction to Databases。《數(shù)據(jù)庫系統(tǒng)教程》[6]內(nèi)核知識(shí):《PostgreSQL內(nèi)核分析》[7],完成閱讀,基于8.4介紹的,很好的內(nèi)核閱讀材料。PostgreSQL代碼注釋,Readme。Bruce[8]的博客:https://momjian.us/main/presentations/extended.html社區(qū)博客[9]:https://planet.postgresql.org/第二階段:數(shù)據(jù)庫使用:官方文檔3,4章[4]德哥[10]培訓(xùn)資料(內(nèi)容相對(duì)較多):https://github.com/digoal/blog/blob/master/201901/20190105_01.md資料補(bǔ)充(建議觀看德哥培訓(xùn)視頻以及選擇以下四本書一本觀看即可,有時(shí)間在進(jìn)行查漏補(bǔ)缺):《由淺入深PostgreSQL》[11]《PostgreSQL實(shí)戰(zhàn)》[12]《PostgreSQL修煉之道:從小工到專家》[13]《PostgreSQL 9X之巔》[14]內(nèi)核內(nèi)容:interdb,日本人的PostgreSQL架構(gòu)。社區(qū)patch列表[15]:https://commitfest.postgresql.org/社區(qū)郵件列表[16]:https://www.postgresql.org/list/pgsql-hackers/《Debug Hacks》《Linux程序設(shè)計(jì)》之前提到的博客。第三階段(當(dāng)前階段沒有單純數(shù)據(jù)庫使用了,而是更多以內(nèi)核為研究對(duì)象): 《大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型》[17]《Architecture of a Database System》[18]《數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)》[19]《PostgreSQL查詢引擎源碼技術(shù)探析》《數(shù)據(jù)庫查詢優(yōu)化器的藝術(shù)》[20]《數(shù)據(jù)庫事務(wù)的藝術(shù)》[20]PostgreSQL注釋中提到的論文。《深入理解計(jì)算機(jī)系統(tǒng)》《支撐處理器的技術(shù)》《編譯原理》《算法導(dǎo)論》未完待續(xù)……第四階段:Spanner論文Raft論文……第五階段:未知……有什么建議,也歡迎大家補(bǔ)充,謝謝。
參考
^本人正處于2級(jí)未滿,學(xué)習(xí)3級(jí)內(nèi)容中。關(guān)于4級(jí)、5級(jí)僅僅是我對(duì)于未來的構(gòu)想,說不上成熟。^Michael Ralph Stonebraker提出了對(duì)象關(guān)系型數(shù)據(jù)庫,PostgreSQL正是這樣的數(shù)據(jù)庫。其中對(duì)象我的理解為表現(xiàn)在表繼承。^彭智勇教授正在研究的課題。結(jié)合對(duì)象概念和關(guān)系型,提出新的數(shù)據(jù)庫理論模型,已經(jīng)受到國際認(rèn)可。^ab官方文檔,有能力的同學(xué)請(qǐng)閱讀英文原版?https://www.postgresql.org/docs/12/index.html^講述基本的數(shù)據(jù)庫知識(shí),類似于《數(shù)據(jù)庫概述》課程^斯坦福大學(xué)數(shù)據(jù)庫課程第一學(xué)期教科書^彭智勇、彭煜瑋著。我的第一本內(nèi)核書。^PostgreSQL社區(qū)大佬,核心組成員^社區(qū)開放的博客平臺(tái)^德哥,原名周正中,PostgreSQL大牛^彭煜瑋教授新作。^作者譚峰、張文升,具有多年P(guān)G從事經(jīng)驗(yàn)^作者唐成,具有多年數(shù)據(jù)庫從事經(jīng)驗(yàn)^本人參與翻譯,作者是我的好朋友Ibrar^開發(fā)者提交patch后的郵件列表,這里會(huì)討論需求、設(shè)計(jì)、問題等等^內(nèi)容比patch列表要多,有一部分僅僅是討論,但未提交到commitfest內(nèi)的。^《A Relational Model of Data for Large Shared Data Banks》,E. F. CODD在1970年所著,闡述了關(guān)系型的定義,是關(guān)系型數(shù)據(jù)庫之父、奠基人。^Michael Ralph Stonebraker的論文^斯坦福大學(xué)數(shù)據(jù)庫第二學(xué)期課程教材^ab李海翔著,對(duì)于數(shù)據(jù)庫有深入研究
總結(jié)
以上是生活随笔為你收集整理的postgresql修炼之道_PostgreSQL内核开发学习资料的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。