1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

PostgreSQL逻辑和物理结构

PostgreSQL系统架构

在了解PostgreSQL逻辑和物理结构之前,我们先了解PostgreSQL的系统架构。PostgreSQL使用一种客户端/服务器的模型。其会话由下列相关的进程或程序组成:

PostgreSQL逻辑和物理结构

  • 一个服务器进程,它管理数据库文件、接受来自客户端应用与数据库的连接并且在数据库上执行操作,该进程叫做postgres。
  • 那些需要执行数据库操作的用户的客户端应用。客户端应用可能本身就是多种多样的:可以是一个面向文本的工具,也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的网页服务器,或者是一个特制的数据库管理工具。例如PoWA,pgAdmin等。

PostgreSQL采取类似于Oracle的多进程模式,在服务器处理来自客户端的多个并发请求时,它会为每个连接fork一个新的进程。从这个时候开始,客户端和新服务器进程就不再经过postgres进程的进行通信。因此,主服务器进程总是在运行并等待着客户端的连接,而新派生的进程就负责处理客户端的各种操作。

PostgreSQL逻辑和物理结构

PostgreSQL的逻辑结构:

  • Database cluster: 数据库集群,或者叫数据库实例,由PostgreSQL server管理的数据库的集合,由多个database组成。每个正在运行的PostgreSQL server实例都管理着一个或多个数据库。
  • Database: 由各种数据库对象构成,例如table,indexes,view,function,sequence等。在数据库对象的层次结构中,database位于最顶层。通常每个数据库对象(table、function等)属于并且只属于一个database,但是也有几个系统表例如pg_database属于整个数据库集群,对于集群中的每个database来说都是可访问的。

PostgreSQL的物理结构:

当我们初始化一个新的数据库集群的时候,会在指定目录下创建一个数据目录,这个数据目录的路径通常用环境变量$PGDATA来表示,初始化完成后,会在$PGDATA下生成相关的子目录以及文件。

  • Database: $PGDATA/base路径下的子目录,每个表和索引(至少)是一个文件,存储在它所属的数据库(例如testdb)的子目录下。另外,还有几个包含特定数据和配置文件的子目录。
  • Tablespace: PostgreSQL的表空间的概念与其他关系数据库有所不同,在PostgreSQL中,一个表空间对应的是一个目录,里面存放的是数据目录之外的一些数据,一般是业务数据。用户新建的表空间对应的目录都位于pg_tblspc下。
  • Table和Index:表或者索引超过1GB之后,它就被划分成1G大小的segment。第一个segment的文件名和文件节点相同;随后的segment被命名为filenode.1、filenode.2等等。这样的安排避免了在某些有文件大小限制的平台上的问题(实际上,1GB只是默认的segment尺寸。segment尺寸限制可以在编译PostgreSQL时使用配置选项–with-segsize进行调整)。

结语

PostgreSQL拥有清晰的逻辑和物理结构,使得其在开源关系数据库系统中脱颖而出。以上介绍希望能够帮助您更好地理解PostgreSQL。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6264.html