上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1 数据库集簇的逻辑结构
数据库集簇(database cluster)是一组数据库(database)的集合,由一个PostgreSQL服务器管理。读者第一次听到这个定义也许会产生疑惑,其实PostgreSQL中的术语“数据库集簇”,并非意味着“一组数据库服务器”。一个 PostgreSQL服务器只会在单机上运行并管理单个数据库集簇。
图1.1展示了一个数据库集簇的逻辑结构。数据库是数据库对象(database object)的集合。在关系型数据库理论中,数据库对象用于存储或引用数据的数据结构。(堆)表就是一个典型的例子,还有更多对象,例如索引、序列、视图、函数等。在PostgreSQL中,数据库本身也是数据库对象,并在逻辑上彼此分离。所有其他的数据库对象(例如表、索引等)都归属于各自相应的数据库。
图1.1 数据库集簇的逻辑结构
在PostgreSQL内部,所有的数据库对象都通过相应的对象标识符(object identifier,oid)进行管理,这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中,依具体的对象类型而异。例如数据库和堆表对象的 oid 分别存储在pg_database和pg_class中,因此,当你希望找出oid时,可以执行以下查询:
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)