数据库架构

default

数据库架构

Database Cluster, Databases 与 Tables

在 PostgreSQL 中 Database Cluster 并非指多个数据库服务器的集群,而是由某个 PostgreSQL 服务器管理的 Databases 的集合。一个 PostgreSQL 服务器运行于单节点,并且管理单个 Database Cluster。

image

PostgreSQL 中所有的 Databases 对象是由 OIDs(Object Identifiers) 来标识,每个 OID 是 4 字节的无符号整型。而 Databases 与关联的 OIDs 关联存放于 System Catalogs 中,譬如 Databases 与 Heap Tables 分别存放于 pg_database 与 pg_class 表中:

sampledb=# SELECT datname, oid FROM pg_database WHERE datname = 'sampledb';
datname | oid
----------+-------
sampledb | 16384
(1 row)
sampledb=# SELECT relname, oid FROM pg_class WHERE relname = 'sampletbl';
relname | oid
-----------+-------
sampletbl | 18740
(1 row)

Database Clutser 的结构

物理结构

Database Cluster 在物理存储上即是根目录(由 PG_DATA 指定)下的某个子目录,而 Database 也存放于 Database Cluster 的目录下,其又包含了 Tables, Indexed 等数据。在官方文档中我们可以查看具体的文件夹分割与功能描述。

image

逻辑结构

Heap Table File

Process Architecture | 进程架构

Memory Architecture | 内存架构