Chapter 8. 扩展 SQL:概述

Table of Contents
8.1. 扩展性是如何实现的
8.2. PostgreSQL 类型系统
8.3. 关于 PostgreSQL 系统表

在本章的剩余部分,我们将讨论你如何通过增加下面几种对象来扩展 PostgreSQL SQL 查询语言:

8.1. 扩展性是如何实现的

PostgreSQL 是可扩展的是因为它的操作是表驱动的. 如果你熟悉标准的关系系统,你知道它们把与数据库,表,字段 等信息存储在一个被称为系统表的地方.(有些系统称这些为数据字典). 这些表在用户面前表现为表,和其他表一样,只不过 DBMS 把它自己内部的信息存放在此. PostgreSQL 和标准的关系型数据库的系统表有一个关键区别是 PostgreSQL 在它的系统表里面存储了更多的信息 -- 不仅是关于表和列/字段的信息,而且还有关于它们的类型, 函数,访问方式等的信息.这些表可以被用户修改,而且由于 PostgreSQL 的内部操作是以这些表为基础的,这就意味着 PostgreSQL 可以被用户所扩展. 相比之下,传统的数据库系统只能通过修改 DBMS 内部的硬代码或装载由 DBMS 供应商提供的特殊的模块来扩展.

PostgreSQL 还与大多数其他数据库管理器不同的是 它还可以通过动态装载的方法与用户书写的代码偶合在一起. 也就是说,用户可以把一个目标代码文件 (例如,一个共享库) 声明为一个新类型或函数的实现, 这时 PostgreSQL 将根据需要装载它们. 用 SQL 写的代码甚至更容易加入到服务器中去.这种可以 "动态地"更改其操作的能力使 PostgreSQL 特别适合于新应用和新存储结构的快速定型.