37.1. 扩展性如何工作

PostgreSQL是可扩展的,因为它的操作是目录驱动的。如果你熟悉标准的关系型数据库系统,你会知道它们把有关数据库、表、列等的信息存储在总所周知的系统目录中(某些系统称之为数据目录)。目录对于用户来说好像其他的表一样,但是DBMS把自己的内部信息记录在其中。PostgreSQL和标准关系型数据库系统的一个关键不同是PostgreSQL在其目录中存储更多信息:不只是有关表和列的信息,还有关于数据类型、函数、访问方法等等的信息。这些表可以被用户修改,并且因为PostgreSQL的操作是基于这些表的,所以PostgreSQL可以被用户扩展。通过比较,传统数据库系统只能通过在源代码中改变硬编码的过程或者载入由DBMS提供者特殊编写的模块进行扩展。

此外,PostgreSQL服务器能够通过动态载入把用户编写的代码结合到它自身中。也就是,用户能够指定一个实现了一个新类型或函数的对象代码文件(例如一个共享库),并且PostgreSQL将按照要求载入它。把用SQL编写的代码加入到服务器会更繁琐。这种即时修改其操作的能力让PostgreSQL独特地适合新应用和存储结构的快速原型设计。