前言
最近想研究一下《The Internals of PostgreSQL》by Hironobu Suzuki 这本书。书内容很好,干货满满,强烈推荐。
英文电子版:https://www.interdb.jp/pg/
中文版:https://item.jd.com/12527505.html
虽然这本书有中文版,但是我还想从英文版读起,结合自己的理解,去翻译或者重新整理下这本书,一方面是因为想同时提高自己阅读英文文档的能力,另一方面我觉得中译之后的书,会给我一种距离感。将一种语言转换成另一种语言,这个过程中或多或少会伴随着信息的缺失,我担心这种缺失,会影响我的理解。
以上。
另外最近想运营一个公众号,专门发一些有关PG和linux运维的总结,刚刚搞起,很多不足之处,望海涵,欢迎各位来踩~ 公众号《PostgreSQL运维技术》。
悄悄放一张:
话不多说...
这一章主要介绍四个概念:
数据库集群的逻辑结构
数据库集群的物理结构
表文件的内部布局
读写数据元组的方法
数据库集群的逻辑结构
Pg中的集群,也即database cluster,是由PostgreSQL服务端来管理的一组数据库(database)的集合。注意这里是数据库(database)的集合,不是数据库服务(database servers)的集合。一个PostgreSQL服务器运行在单个主机上,管理单个数据库集群。
Pg与大多数的关系型数据库一样都是由表来存储数据,一个表(table)属于某个数据库(database),数据库(database)又同属于一个database cluster。
图1.1.数据库集群的逻辑结构
图片来源:https://www.interdb.jp/pg/pgsql01.html
在一个数据库集群中,除了有表、数据库这些数据库对象,还有比如索引、视图、函数、序列等对象,pg对这些对象统一采用对象标识符(OIDs)来管理,oid是无符号的4字节整数。数据库对象和各自的oid存储在各自的system catalogs中,比如table是存储在pg_class, 而dababase存储在pg_database中。
数据库集群的物理结构
上面我们谈的是集群的逻辑结构,也即抽象概念。现在我们聊聊的物理结构也即真实存在的结构。实际上,