PostgreSQL:源码目录结构

源码结构

PostgreSQL:源码目录结构

  • 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/:源代码目录

    PostgreSQL:源码目录结构

    • backend/:后端的源码目录

      PostgreSQL:源码目录结构

      • 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的目录结构类似,但是并非完全相同,基本上来说下一级的子目录不再设下一级目录。

      PostgreSQL:源码目录结构

    • 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++ 用)

模块调用关系

PostgreSQL:源码目录结构

  • 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:数据库交互工具。