PostgreSQL:原始碼目錄結構

Ryan_Bai發表於2019-11-25

原始碼結構

  • aclocal.m4:config 用的檔案的一部分

  • config/:config 用的檔案的目錄

  • config.log:

  • configure:configure 檔案

  • configure.in:configure 檔案的雛形

  • contrib/:contribution 程式

  • COPYRIGHT:版權資訊

  • doc/:文件目錄

  • GUNMakefile:第一級目錄的 Makefile

  • GUNMakefile.in:Makefile 的雛形

  • HISTORY:修改歷史

  • INSTALL:安裝方法簡要說明

  • Makefile:Makefile模版

  • README:簡單說明

  • src/:原始碼目錄


    • backend/:後端的原始碼目錄


      • access/:各種儲存訪問方法(在各個子目錄下) common(共同函式)、gin (Generalized Inverted Index通用逆向索引)、gist (Generalized Search Tree通用索引)、 hash (雜湊索引)、heap (heap的訪問方法)、index (通用索引函式)、 nbtree (Btree函式)、transam (事務處理)

      • bootstrap/:資料庫的初始化處理(initdb的時候)

      • catalog/:系統目錄

      • commands/:SELECT/INSERT/UPDATE/DELETE以為的SQL文的處理

      • common.mk:

      • executor/:執行器(訪問的執行)

      • foreign/:FDW(Foreign Data Wrapper)處理

      • lib/:共同函式

      • libpq/:前端/後端通訊處理

      • main/:postgres的主函式

      • Makefile makefile

      • nls.mk

      • nodes/:構文樹節點相關的處理函式

      • optimizer/:優化器

      • parser/:SQL構文解析器

      • po

      • port/:平臺相關的程式碼

      • postgres

      • postmaster/:postmaster的主函式 (常駐postgres)

      • regex/:正則處理

      • replication/:streaming replication

      • rewrite/:規則及檢視相關的重寫處理

      • snowball/:全文檢索相關(語幹處理)

      • storage/ 共享記憶體、磁碟上的儲存、快取等全部一次/二次記錄管理(以下的目錄)buffer/(快取管理)、 file/(檔案)、freespace/(Fee Space Map管理) ipc/(程式間通訊)、large_object /(大物件的訪問函式)、 lmgr/(鎖管理)、page/(頁面訪問相關函式)、 smgr/(儲存管理器)

      • tcop/:postgres (資料庫引擎的程式)的主要部分

      • tsearch/:全文檢索

      • utils/ 各種模組(以下目錄) adt/(嵌入的資料型別)、cache/(快取管理)、 error/(錯誤處理)、fmgr/(函式管理)、hash/(hash函式)、 init/(資料庫初始化、postgres的初期處理)、 mb/(多位元組文書處理)、misc/(其他)、mmgr/(記憶體的管理函式)、 resowner/(查詢處理中的資料(buffer pin及表鎖)的管理)、sort/(排序處理)、time/(事務的 MVCC 管理)

    • bcc32.mak:Win32 埠用的 Makefile (Borland C++ 用)

    • bin/:psql 等 UNIX命令的程式碼

    • common:

    • DEVELOPERS:面向開發人員的注視

    • fe_utils

    • include/:標頭檔案

      backend等的程式碼的標頭檔案包含在include裡面。其組織雖然與backend的目錄結構類似,但是並非完全相同,基本上來說下一級的子目錄不再設下一級目錄。


    • interfaces/:前端相關的庫的程式碼

    • Makefile:Makefile

    • Makefile.global:make 的設定值(從configure生成的)

    • Makefile.global.in:Configure使用的Makefile.global的雛形

    • Makefile.port:平臺相關的make的設定值,實際是一個到makefile/Makefile的連線. (從configure生成的)

    • makefiles/:平臺相關的make 的設定值

    • Makefile.shlib:共享庫用的Makefile

    • nls-global.mk:資訊目錄用的Makefile檔案的規則

    • pl/:儲存過程語言的程式碼

    • port/:平臺移植相關的程式碼

    • template/:平臺相關的設定值

    • test/:各種測試指令碼

    • timezone/:時區相關程式碼

    • tools/:各自開發工具和文件

    • tutorial/:教程

    • win32.mak Win32 埠用的 Makefile (Visual C++ 用)

模組呼叫關係

  • access:提供各種存取方法,支援堆、索引等對資料的存取。

  • bootstrap:用於支援Bootstrap執行模式,該模式主要用來建立初始的模板資料庫。

  • catalog:系統表操作,包含用於作業系統表的專用函式。

  • commands:執行非計劃查詢的SQL命令,如建立表命令等。

  • executor:執行器,執行來自Optimizer的查詢計劃。

  • libpq:C/C++的庫函式,處理與客戶端間的通訊,幾乎所有的模組都依賴它。

  • main:主程式模組,它負責將控制權轉到Postmaster程式或Postgres程式。

  • nodes:定義系統內部所用到的節點、連結串列等結構,以及處理這些結構的函式。

  • optimizer:優化器,根據查詢樹建立最優的查詢路徑和查詢計劃。

  • parser:編譯器,將SQL查詢轉化為內部查詢樹。

  • port:平臺相容性處理相關的函式。

  • postmaster:監聽使用者請求的守護程式,並控制Postgres程式的啟動和終止。

  • regex:正規表示式庫及相關函式,用於支援正規表示式處理。

  • rewrite:查詢重寫,根據規則系統對查詢進行重寫。

  • storage:管理各種型別的儲存系統(如磁碟、快閃記憶體等)。

  • tcop:Postgres服務程式的主要處理部分,它呼叫Parser、Optimizer、Executor和Commands中的函式來執行客戶端提交的查詢

  • tsearch:全文檢索。

  • utils:各種支援函式,如錯誤報告、各種初始化操作等。

  • Initdb:初始化資料庫集簇。

  • Psql:資料庫互動工具。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2665631/,如需轉載,請註明出處,否則將追究法律責任。

相關文章