PostgreSQL 使用客户机/服务器(C/S)的模式提供服务,一个PostgreSQL会话由下列相关的进程(程序)组成:
(1)一个服务器端进程。该进程管理数据库文件,接受客户端与数据库的连接,且代表客户端对数据库进行操作。该进程的程序名叫做 postgres。
(2)前端应用,即需要进行数据库操作的客户端应用。客户端应用可能本身就是多种多样的:它们可以是一个字符界 面的工具, 也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的 web 服务器,或者是一个特殊的数据库管理工具。 一些客户端应用是和 PostgreSQL 发布一起提供的,但绝大部分是用户开发的。
和典型的客户端/服务器应用(C/S应用)一样,客户端和服务器可以在不同的主机上。此时,它们通过TCP/IP进行网络连接,你应该记住这一点,因为在客户机上可以访问的文件未必能够在数据库服务器机器上访问(或者只能用不同的文件名进行访问)。
PostgreSQL 服务器可以处理来自客户端的多个并发请求。为了能这样处理,它会为每个请求启动(“forks”)一个新的进程,然后,客户端和新服务器端进程就不再经过最初的postgres 进程而直接通信。 因此, 服务器端的主进程一直运行,等待着来自客户端的连接;而客户端和相关联的服务器端进程则在需要的时候才会运行。(当然,这些对用户来说是透明的,在这里谈这些主要是为了说明的完整性。)
PostgreSQL数据库是一种极好可以运行在各种平台上的免费的开放源码的对象关系数据库,它是一种以关系数据库和SQL为基础,扩展了抽象数据类型,从而具备面向对象特性的数据库。
PostgreSQL体系结构图(组成结构和关系)
PostgreSQL由连接管理系统(系统控制器),编译执行系统,存储管理系统,事务系统,系统表五大部分组成。
连接管理系统接受外部操作对系统的请求,对操作请求进行预处理和分发,起系统逻辑控制作用;
编译执行系统由查询编译器,查询执行器组成,完成操作请求在数据库中的分析处理和转化工作,最终实现物理存储介质中数据的操作;
存储管理系统由索引管理器,内存管理器,外存管理器组成,负责存储和管理物理数据,提供对编译查询系统的支持;
事务系统由事务管理器,日志管理器,并发控制,锁管理器组成,日志管理器和事务管理器完成对操作请求的事务一致性支持,锁管理器和并发控制提供对并发访问数据的一致性支持;
系统表是PostgreSQL数据库的元信息管理中心,包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息,将PostgreSQL数据库的各个模块有机地连接在一起,形成一个高效的数据管理系统。
系统表
在关系数据库中,为了实现数据库系统的控制,必须提供数据字典的功能。数据字典不仅存储各种对象的描述信息,而且存储系统管理所需的各种对象的细节信息。数据字典包含数据库系统中所有对象及其属性的描述信息,对象之间关系的描述信息,对象属性的自然语言含义以及数据字典变化的历史,数据字典是关系数据库系统管理控制信息的核心,在PostgreSQL数据库系统中系统表扮演着数据字典的角色。
系统表是PostgreSQL数据库存放结构元数据的地方,他在PostgreSQL中表现为存放有系统信息的普通表或者视图(用户可以删除,重建)。
系统表保存了数据库的所有元数据,所以系统运行时对系统表的访问是非常频繁的。为了提高系统性能,在内存中建立了共享的系统表,使用Hash表提高查询效率。
主要系统表功能
1 pg_namespace 存储命名空间
2 pg_tablespace 存储空间信息
3 pg_database 存储当前数据集簇中数据库的信息。
4 pg_class 存储表及与表类似结构的数据库对象信息,包含,索引,序列,视图,复合数据类型,TOAST表等。
5 pg_type 存储数据类型信息。
6 pg_attribute 存储表的属性信息。
7 pg_index 存储索引的具体信息。
关键系统表之间的依赖关系:未列出