PostgreSQL源码结构源码结构
PostgreSQL的使用形态
PostgreSQL采用C/S(客户机/服务器)模式结构。应用层通过INET或者Unix Socket利用既定的协议与数据库服务器进行通信。
另外,还有一种‘Standalone Backend’使用的方式, 虽然通过这种方式也可以启动服务器,但是一般只在数据库的初始化
(PostgreSQL的cluster的初始化,相当于其他数据库的instance的初始化)、紧急维护的时候使用,所以简单来说可以认为
PostgreSQL是使用C/S的形式进行访问的。
PostgreSQL把客户端称为前端(Frontend),把服务器端成为后端(Backend), 后端有复数个进程构成,这个在后面会进行说明。
前端和后端通信的协议在PostgreSQL的官方文档中的《前端和后端的通信协议》一章中有详细的说明。简单来说,大体的工
作模式是:前端向后端发送查询的SQL文,然后后端通过复数个报文把结果返回给前端。
由于需要进行连接的初始化、错误等各种各样处理,PostgreSQL的协议的处理也是相当复杂,如果要自己从头实现这些协议
的处理的话,还是相当麻烦的,所以PostgreSQL本身提供了C语言写的libpq这样一个协议处理库,利用这个库可以比较轻松
地和后端进行通信。PostgreSQL的话除了C以外,还支持Perl和PHP等其他语言,这些语言在内部也调用了libpq.
也有不使用libpq而直接与PostgreSQL通信的库。比较具有代表性的是Java, PostgreSQL的JDBC驱动是不依赖于libpq直接与
PostgreSQL通信的.
另外后端的话,比较核心的是进行数据库处理的数据库引擎(Database Engine)。 数据库引擎可以对用户所编写的函数进行解
析和处理,用户如果能够利用好这个功能的话,可以柔软地扩展PostgreSQL的功能。 比较经常使用的是存储过程
(PostgreSQL中称为用户自定义函数),PostgreSQL支持的用户定义函数的语言如下:
语言 对应的自定义函数
C C函数
SQL SQL 函数
类似Oracle的PL/SQL的语言 PL/pgSQL
Perl PL/Perl
Python PL/Python
PostgreSQL的话,用户可以自定义语言处理引擎。各种服务器脚本语言的解析引擎,以第三方的形式存在,主要的处理语言
有Ruby、Java以及PHP等。
PostgreSQL的结构
这里的话,再详细看看PostgreSQL的结构。 后端由几个进程构成。