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