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. ContentType Office

    Office对应ContentType 当从浏览器返回一个文件时,需要指定ContentType,以下是Office2007对应的值: "application/vnd.openxmlfor ...

  2. 不遗留问题-menu数据拼装-2

    $res = array(); foreach($idlist_1 as $id1) { $tmp = array(); $tmp1 = array(); $tmp1[] = $id1; foreac ...

  3. xinwajueji

    #include<stdio.h> int map[10][10]={0}; int step[30]={0}; int max=99999; int ans[99]={0};  int ...

  4. [dpdk] 读开发指南(1)

    该文档是随着对于文档的阅读进度,不断增加的阅读笔记.主要内容以大纲为主,以及记录帮助记忆的内容. 在之后的实际应用中,也不随着不断的深入理解,逐渐丰富各大纲下面的内容. 1. 前期准备:设置两个环境变 ...

  5. iOS自定义控件开发详解

    http://blog.csdn.net/zhangao0086/article/details/45622875

  6. android获取设备全部信息

    private static final String FILE_MEMORY = "/proc/meminfo"; private static final String FIL ...

  7. 四个很好用的Sql Server 日期函数:DateDiff、DatePart、DateAdd、DateName

    我以前查一段时间范围内的数据都是在程序里计算好日期再掉查询语句,现在我用下面的函数.SQL SERVER没有查一季度数据的函数. DateDiff函数: 描述 返回两个日期之间的时间间隔. 语法 Da ...

  8. C++经典编程题#1:含k个3的数

    总时间限制:  1000ms 内存限制:  65536kB 描述 输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除, ...

  9. Notepad++ install vi plugin

    下载Notepad++,想安装vi插件. 使用Notepad++自带的插件管理器下载visimulator失败. 所以直接下载插件visimulator.dll,再导入. 下载地址: https:// ...

  10. 我的工具箱之VNC

    下载地址:http://pan.baidu.com/s/1bovEoZ9 这个工具可以连接到Linux并进行可视化操作. 如何搭建VNC环境请见 在centOS上安装VNC 2016年2月26日11: ...