PG内核分析 Q&A PG系统概述 为什么说PG是一种先进的对象—关系数据库系统
因为PG它不仅支持关系数据库的各种功能, 而且还具备类, 继承等对象数据库的特征.
面向对象数据库技术可望成为继关系数据库技术之后的新一代数据管理技术。
它是一种以关系数据库和SQL为基础, 扩展了抽象数据类型,
从而具备面向对象特征的数据库.
PG不是完全的对象数据库, 而是综合了在关系数据库的基础上,
吸收了对象数据库的优点发展起来的. 对象数据库的缺点参见下面所述:
参考: 面向对象数据库和关系数据库的区别
https://zhidao.baidu.com/question/327687544578054685.html
面向对象数据库的产生主要是为了解决“阻抗失配”,它强调高级程序设计语言与数据库的无缝连接。什么叫无缝连接,假设你
不用数据库,用C语言编了一个程序,你可以不需要(或基本不需要)任何改动就将它作用于数据库,即你可以用C语言透明访问数据库,就好象数据库根本不存在一样,所以也有人把面向对象数据库理解为语言的持久化。怎么样,听起来挺玄的吧,可是我们自己开发的数据库系统——OSCAR早就做到了这一点。
由于实现了无缝连接,使得面向对象数据库能够支持非常复杂的数据模型,从而特别适用于工程设计领域。打个比方,想象CAD中的一个复杂部件,它可能由成千上万个不同的零件组成,要是用关系模型中的表来表达,得用多少张表啊?而描述这种复杂的部件,正好是高级程序设计语言的强项。
此外,面向对象数据库还吸收了面向对象程序设计语言的思想,如支持类、方法、继承等概念。
面向对象数据库很好地解决了阻抗失配的问题,但它也有缺点。它的缺点正好是关系数据库的强项,由于模型较为复杂(而且缺乏数学基础),使得很多系统管理功能难以实现(如权限管理),也不具备SQL处理集合数据的强大能力。
总之,数据库系统发展的趋势是,面向对象数据库和关系数据库将不断融合。而对象关系数据库由于继承了上述两者的优点,已经成为目前数据库发展的主流。
PG的特性都有哪些拥有与企业级数据库(如: Oracle, DB2)相媲美的特性, 如完善的SQL标准支持(如:
PG支持SQL92等标准, 详见官方文档), 多版本并发控制(即MVCC,
比Oracle数据库的回滚段机制还要先进), 时间点恢复, 表空间机制(注:
不是所有大型数据库都能够支持此高级功能), 异步复制, 嵌套事务, 在线/热备份,
一个复杂的查询优化器, 预写日志容错技术.
它支持国际字符集, 多字节字符编码, Unicode, 并且对格式化, 排序,
大小写敏感提供本地化支持.
PG在管理海量数据方面有良好的可扩展性, 对并发用户管理具有自适应性.
目前已经出现具有管理超过4万亿字节(约3725GB, 或3.6PB, 注意: 这只是单机PG的能力,
通过citus或 PG RAC等分布式技术可以更大)数据能力的实用版本产品.
PG源代码包括3400多个文件(截止8.4.1版本).
主要目录(模块)及用途如下:
Bootstrap: 用于运行Bootstrap运行模式,该模式主要用来创建初始的模板数据库.
Main: 主程序模块,它负责将控制权转到Postmaster进程或Postgres进程.
Postmaster: 监听用户请求的守护进程,并控制Postgres进程的启动和终止.
Libpq: C/C++的库函数,处理与客户端间的通信,几乎所有的模块都依赖它.
Tcop: 即Traffic cop(交通警察),
Postgres服务进程的主要处理部分,它调用Parser,Optimizer,Executor和Commands中的函数来执行客户端提交的查询.
Parser: 编译器, 将SQL查询转化为内部查询树.
Optimizer: 优化器, 根据查询树创建最优的查询路径和查询计划.
Executor: 执行器, 执行来自Optimizer的查询计划.
Commands: 执行非计划查询的SQL命令,如创建表命令等.
Catalog: 系统表操作, 包含用于操作系统表的专用函数.
Storage: 管理各种类型的存储系统(如磁盘,闪存等).
Access: 提供各种存取方法,支持堆,索引等数据的存取.
Nodes: 定义系统内部所用到的节点,链表等结构,以及处理这些结构的函数.
Utils: 各种支持函数, 如错误报告,各种初始化操作等.
Regex: 正则表达式库及相关函数,用于支持正则表达式处理.
Rewrite: 查询重写, 根据规则系统对查询进行重写.
Initdb: 初始化数据库集簇.
TSearch: 全文检索.
Psql: 数据库交互工具.
Port: 平台兼容性处理相关的函数.
PG的数据库命令都有哪些 PG的体系结构 PG的体系结构是怎样的由5大系统构成:
连接管理系统(连接管理器)
编译执行系统
存储管理系统
事务系统
系统表
连接管理系统: 接受外部操作对系统的请求, 对操作请求进行预处理和分发,
起系统逻辑控制作用;
编译执行系统: 由查询编译器,查询执行器组成,
完成操作请求在数据库中的分析处理和转化工作, 最终实现物理存储介质中数据的操作;
存储管理系统: 由索引管理器,内存管理器, 外存管理器组成, 负责存储和管理物理数据库,
提供对编译查询系统的支持;