Skip to content

38.1. 可扩展性工作原理#

PostgreSQL可扩展,因为其操作是目录驱动的。如果您熟悉标准关系数据库系统,您会知道它们将有关数据库、表、列等的信息存储在通常称为系统目录的内容中。(一些系统称之为数据字典。)目录对用户来说就像其他表一样,但DBMS将其内部簿记存储在其中。PostgreSQL与标准关系数据库系统之间的一个关键区别在于,PostgreSQL在其目录中存储了更多信息:不仅有关表和列的信息,还有有关数据类型、函数、访问方法等的信息。这些表可以由用户修改,并且由于PostgreSQL根据这些表进行操作,这意味着PostgreSQL可以由用户扩展。相比之下,传统数据库系统只能通过更改源代码中的硬编码过程或加载DBMS供应商专门编写的模块来扩展。

PostgreSQL服务器还可以通过动态加载将用户编写的代码合并到自身中。也就是说,用户可以指定一个实现新类型或函数的对象代码文件(例如,一个共享库),PostgreSQL将根据需要加载它。以SQL编写的代码甚至更容易添加到服务器中。这种““动态”修改其操作的能力使PostgreSQL非常适合快速构建新应用程序和存储结构的原型。