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内核源码结构介绍的更多相关文章

  1. 轻量级富文本编辑器wangEditor源码结构介绍

    1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.c ...

  2. linux内核源码结构

    一.概述 Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立. 二.源码结构表 目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch ...

  3. Linux内核学习笔记2——Linux内核源码结构

    一 内核组成部分 内核是一个操作系统的核心,主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络结构,进程间通信. 1.进程调度(SCHED) 控制进程对CPU的访问.当需要选择下一个进程运行时 ...

  4. linux0.01内核源码结构

    目录 boot 系统引导. fs 文件系统. include 头文件.一些C标准库,系统核心库. init 入口.main.c. kernel 内核. lib 库.C源程序,一些基本核心的程序. mm ...

  5. Nacos源码结构和AP模式注册中心实现介绍

    前言 NacosAP模式源码分析目录 微服务下的注册中心如何选择 Nacos使用和注册部分源码介绍 Nacos服务心跳和健康检查源码介绍 Nacos服务发现 Nacos源码结构介绍 Nacos版本基于 ...

  6. Linux基础系列—Linux内核源码目录结构

    /** ****************************************************************************** * @author    暴走的小 ...

  7. 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体? | 开篇致敬鸿蒙内核开发者 | v1.11

    子曰:"见贤思齐焉,见不贤而内自省也."<论语>:里仁篇 百篇博客系列篇.本篇为: v01.xx 鸿蒙内核源码分析(双向链表篇) | 谁是内核最重要结构体 | 51.c ...

  8. Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  9. linux内核源码注解

    轻松学习Linux操作系统内核源码的方法 针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制:一.核心源程序的文件 ...

随机推荐

  1. C# vba 操作 Word

    添加引用 Microsoft Word  *.0 Object Library Microsoft Graph *.0 Object Library 变量说明 Object oMissing = Sy ...

  2. Ext.net

    .FileTypeName=="附件")                 {                      command.text="上传";   ...

  3. LR处理文件上传和下载

    文件上传 在业务场景有上传操作时,使用LR能录制到上传操作,代码如下.在录制的原始代码中,Filename的Value是上传的文件名,name的Value是一串文件名的加密串,file的Value也是 ...

  4. 【转】将 azw3 格式转换为 mobi 格式并保持原有排版格式

    小伙伴多次向 Kindle 伴侣提出一个问题,那就是通过 Calibre 将排版精美的 azw3 格式电子书转换成 mobi 格式后推送到 Kindle,排版格式会发生很大的变化,比如行距过窄.内嵌字 ...

  5. linux 冒号的用途

    用途说明 我们知道,在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等.其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令. ...

  6. 一种swift编码风格指南(供参考,by linkedin)

    http://www.cocoachina.com/swift/20160701/16894.html

  7. A+Bproblem

    package A+Bproblem; /* * A+B Problem 时间限制:3000 ms  |  内存限制:65535 KB 难度:0 描述 此题为练手用题,请大家计算一下a+b的值 输入 ...

  8. Java学习-018-EXCEL 文件写入实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  9. 在CentOS6.5上安装Tomcat6

    Tomcat安装一向方便,linux的比win的更是这样,基本就是拷贝,类似于win中备受青睐的绿色软件,下面只是记录一下过程. 1.从 http://mirrors.cnnic.cn/apache/ ...

  10. Interview Return Products of All Other Elements in Array

    这是一道面试亚马逊时的题目,要求Time O(n). 我刚开始想的是算出所有的数的总product,再去除以对应位置的元素,但这种做法的问题是若该位置为0,就会报错. 到网上搜了下,才知道,原来有这种 ...