PostgreSQL9.2.4内核源码结构介绍
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 |
一些辅助程序,如内建数据类型、错误报告、排序实现等相关代码。 |
PostgreSQL9.2.4内核源码结构介绍的更多相关文章
- 轻量级富文本编辑器wangEditor源码结构介绍
1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.c ...
- linux内核源码结构
一.概述 Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立. 二.源码结构表 目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch ...
- Linux内核学习笔记2——Linux内核源码结构
一 内核组成部分 内核是一个操作系统的核心,主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络结构,进程间通信. 1.进程调度(SCHED) 控制进程对CPU的访问.当需要选择下一个进程运行时 ...
- linux0.01内核源码结构
目录 boot 系统引导. fs 文件系统. include 头文件.一些C标准库,系统核心库. init 入口.main.c. kernel 内核. lib 库.C源程序,一些基本核心的程序. mm ...
- Nacos源码结构和AP模式注册中心实现介绍
前言 NacosAP模式源码分析目录 微服务下的注册中心如何选择 Nacos使用和注册部分源码介绍 Nacos服务心跳和健康检查源码介绍 Nacos服务发现 Nacos源码结构介绍 Nacos版本基于 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体? | 开篇致敬鸿蒙内核开发者 | v1.11
子曰:"见贤思齐焉,见不贤而内自省也."<论语>:里仁篇 百篇博客系列篇.本篇为: v01.xx 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体 | 51.c ...
- Linux内核源码分析方法
一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...
- linux内核源码注解
轻松学习Linux操作系统内核源码的方法 针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制:一.核心源程序的文件 ...
随机推荐
- the core or essence of a computer
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The ALU is that part ...
- JAVA基础讲义
一.安装JDK 第一步:双击JDK的exe文件. JDK(Java开发包),JRE(Java运行环境) 第二步:配置 path:jdk的根目录,jdk下的bin目录(两个目录之间记得用分号隔开) cl ...
- PHP 加密 和 解密 方法
关于Discuz的加密解密函数,相信大家都有所了解,该authcode函数可以说是对PHP界作出了重大的贡献,真的发觉discuz这个函数写的太精彩啦. 研究了一下这个算法,总的来说可以归纳为以下三点 ...
- Bootstrap 路径分页标签和徽章组件
一.路径组件 路径组件也叫做面包屑导航. //面包屑导航 <ol class="breadcrumb"> <li><a href="#&qu ...
- 蓝牙Bluetooth技术手册规范下载
[背景] 之前就已经整理和转帖了和蓝牙技术相关的一些内容: [资源下载]bluetooth 协议 spec specification 蓝牙1.1.蓝牙1.2.蓝牙2.0(蓝牙2.0+EDR)区别 但 ...
- freebsd 显示中文
来自 :http://francs3.blog.163.com/blog/static/405767272014659311700/ 只需在 ~/.cshrc 文件添加以下几行即可. --3 在~/. ...
- 注册、启动、停止windows服务
找到本机InstallUtil.exe命令 命令行下注册服务InstallUtil.exe D:\XXXXService.exe 启动服务 net start XXXXService 停止服务net ...
- MySQL- 锁(2)
InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点意味着:只有 ...
- python 中del 的用法
python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...
- ADO.NET中主要对象
ADO.NET是什么? ADO.NET是.Net平台提供和数据库交互的类库集,我们可以通过它对SQLSERVER,XML,Oracle等这样的数据源进行访问. 应用程序可以使用ADO.NET链接到数据 ...