数据库架构
数据库架构
Database Cluster, Databases 与 Tables
在 PostgreSQL 中 Database Cluster 并非指多个数据库服务器的集群,而是由某个 PostgreSQL 服务器管理的 Databases 的集合。一个 PostgreSQL 服务器运行于单节点,并且管理单个 Database Cluster。
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 等数据。在官方文档中我们可以查看具体的文件夹分割与功能描述。