36.1. Como funciona a extensibilidade #

O PostgreSQL é extensível por sua operação ser orientada por catálogo. Se você estiver familiarizado com os sistemas de banco de dados relacionais padrão, então você sabe que eles armazenam informações sobre bancos de dados, tabelas, colunas, etc., no que é comumente conhecido como catálogos do sistema. (Alguns sistemas chamam de dicionário de dados.) Os catálogos aparecem para o usuário como tabelas como qualquer outra, mas o SGBD armazena nelas sua escrituração interna. Uma diferença fundamental entre o PostgreSQL e os sistemas de banco de dados relacionais padrão, é que o PostgreSQL armazena muito mais informações em seus catálogos: não apenas informações sobre tabelas e colunas, mas também informações sobre tipos de dados, funções, métodos de acesso e assim por diante. Essas tabelas podem ser modificadas pelo usuário e, como o PostgreSQL baseia sua operação nessas tabelas, isso significa que o PostgreSQL pode ser estendido pelos usuários. Em comparação, os sistemas de banco de dados convencionais só podem ser estendidos alterando procedimentos codificados no código-fonte, ou carregando módulos especialmente escritos pelo fornecedor do SGBD.

Além disso, o servidor PostgreSQL pode incorporar código escrito pelo usuário em si próprio por meio de carregamento dinâmico. Ou seja, o usuário pode especificar um arquivo de código objeto (por exemplo, uma biblioteca compartilhada) que implementa um novo tipo de dados ou função, e o PostgreSQL vai carregá-lo conforme necessário. O código escrito em SQL é ainda mais trivial para adicionar ao servidor. Essa capacidade de modificar sua operação em funcionamento (on the fly) torna o PostgreSQL particularmente adequado para prototipagem rápida de novas aplicações e estruturas de armazenamento.