以PostgreSQL 12源码为例,其中主要目录及用途如下:
access: 提供各种存取方法,支持堆、索引等对数据的存取
bootstrap: 用于支持bootstrap运行模式,该模式主要用来创建初始的模板数据库
catalog: 系统表操作,包含用于操作系统表的专用函数
commands: 执行非计划查询的SQL命令,如创建表命令等
executor: 执行器,执行来自Optimizer的查询计划
foreign: 支持外部数据包装器、服务器和用户映射
jit: just in time 支持
lib: 通用数据结构的库函数
libpq: C/C++的库函数,处理与客户端键的通信,几乎所有的模块都依赖它
main: 主程序模块,它负责将控制权转到Postmaster进程或Postgres进程
nodes: 定义系统内部所用到的节点、链表等结构,以及处理这些结构的函数
optimizer: 优化器,根据查询树创建最优的查询路径和查询计划
parser: 编译器,将SQl查询转化为内部查询树
partitioning: 支持分区的相关函数
port: 平台兼容性处理相关函数
postmaster: postmaster的辅助进程
regex: 正则表达式库以及相关函数
replication: 流复制
rewrite: 查询重写,根据规则系统对查询进行重写
snowball: 词干分析代码
statistics: 负责统计信息,用于改善计划。
storage: 管理各种类型的存储系统
tcop: Postgres服务进程的主要处理部分,它调用parser,optimizer,executor,commands中的函数来执行客户端提交的查询
tsearch: 全文检索
utils: 各种支持函数
它的代码结构还是比较清晰的,每个子目录都对应着一个模块。