代码改变世界

PostgreSQL9.2.4内核源码结构介绍

2014-08-13 20:33  DataBases  阅读(1136)  评论(0编辑  收藏  举报

     PostgreSQL的源代码可以随意获得,其开源协议也允许研究者任意修改,这里介绍一下PostgreSQL的源码结构以及部分实现机制。下载PostgreSQL源代码并减压后,其一级目录结构如下图:

 

              

 PostgreSQL源代码一级结构

其中config目录下存放一些系统的配置文件。contrib目录下包括一些没有集成到核心代码中的外围工具和一些实验性质的开发代码。doc目录下是帮助文档,由SGML编写。src为系统核心代码,其他文件属于编译安装相关文件。 src目录,各子目录及其对应内容如下表:

PostgreSQL源代码src目录下的子目录结构

backend

数据库引擎代码,也称为后台程序代码。

bin

外围工具,如数据库连接工具psql等。

include

头文件目录。

interface

系统提供的对外接口,如libpq。

makefiles

平台相关的makefile文件。

pl

过程语言PL/PostgreSQLSQL等实现代码。

port

平台兼容处理模块。

template

针对不同平台的编译脚本模板。

test

回归测试用例和自动化测试框架。

timezone

时区相关代码和数据。

tools

辅助工具,如编译windows版本的脚本。

tutorial

系统提供的部分示例示例。

系统的核心实现代码都位于src\backend这个目录

Access

数据存取层,包括表数据索引的操作以及事务相关代码。

bootstrap

数据库初始化模块,和src\bin\initdb下的代码密切相关

catalog

系统表的操作相关代码。

commands

SQL命令执行,包括vacuum、copy、alter等。

executor

SQL语句执行,包括select、insert、update和delete语句的执行。

foreign

FDW(Foreign Data Wrapper)处理相关代码

lib

公用库,包含几个通用的程序。

libpq

前后端通信处理相关代码。

main

系统主入口函数,负责将控制转到postmaster或postgres。

nodes

节点相关代码,节点是查询计划中的存储单元。

optimizer

查询优化相关代码,负责创建查询路径和查询计划。

parser

SQL语句解析模块。

po

国际化(i18n)处理模块

port

平台兼容处理模块。

postmaster

主进程postmaster相关代码。

regex

正则表达式处理模块。

replication

streaming replication相关代码。

rewrite

规则系统(rule)模块。

snowball

分词程序,用于实现全文检索。

storage

存储层模块,包括存储管理器、缓冲区管理、文件管理、锁管理等。

tcop

SQL命令分发模块,负责调用parser、optimizer、executor和commands中的函数。

tsearch

全文检索模块。

utils

一些辅助程序,如内建数据类型、错误报告、排序实现等相关代码。