在本章的剩余部分,我们将讨论你如何通过增加下面几种对象来扩展 PostgreSQL SQL 查询语言:
函数(在 Section 31.3 章开始)
数据类型(在 Section 31.11 章开始)
操作符(在 Section 31.12 章开始)
聚集(在 Section 31.10 章开始)
PostgreSQL 是可扩展的是因为它的操作是表驱动的. 如果你熟悉标准的关系数据库系统,你知道它们把与数据库,表,字段 等信息存储在一个被称为系统表的地方.(有些系统称这些为数据字典). 这些表在用户面前表现为表,和其他表一样,只不过 DBMS 把它自己内部的信息存放在此. PostgreSQL 和标准的关系型数据库的系统表有一个关键区别是 PostgreSQL 在它的系统表里面存储了更多的信息: 不仅是关于表和列/字段的信息,而且还有关于它们的类型, 函数,访问方式等的信息.这些表可以被用户修改,而且由于 PostgreSQL 的内部操作是以这些表为基础的,这就意味着 PostgreSQL 可以被用户所扩展. 相比之下,传统的数据库系统只能通过修改 源代码内部的硬代码或装载由 DBMS 供应商提供的特殊的模块来扩展.
PostgreSQL 它还可以通过动态装载的方法与用户书写的代码偶合在一起. 也就是说,用户可以把一个目标代码文件 (例如,一个共享库) 声明为一个新类型或函数的实现, 这时 PostgreSQL 将根据需要装载它们. 用 SQL 写的代码甚至更容易加入到服务器中去.这种可以 "在线"更改其操作的能力使 PostgreSQL 特别适合于新应用和新存储结构的快速定型.