3
Расширяемость PostgreSQL
Возможности
функции и языки программирования
типы данных, операторы, методы доступа
обертки сторонних данных (FDW)
Механизмы
изменяемый системный каталог
API для подключения внешних обработчиков
загрузка и выполнение пользовательского кода
Расширяемость — важнейшая черта PostgreSQL — это возможность
подключать «на лету» новый функционал без изменения кода сервера.
Таким образом можно добавлять языки программирования
и разрабатывать на них функции, определять новые типы данных
и операторы для работы с ними, создавать новые методы доступа для
типов данных, разрабатывать обертки сторонних данных для
подключения к внешним источникам.
Для того чтобы это было возможным, системный каталог PostgreSQL
хранит большое количество информации об объектах БД. Эта
информация не зашита жестко в код сервера. Пользователи могут
изменять содержимое таблиц системного каталога, тем самым
добавляя новые объекты и связанный с ними функционал.
Кроме того, в исходном коде PostgreSQL встроено большое количество
хуков и различных API для подключения пользовательских функций.
Это делает возможным разрабатывать такие расширения как
pg_stat_statements, auto_explain, pldebugger и многие, многие другие.
Завершает картину возможность загружать в серверные процессы
пользовательский код. Например, можно написать разделяемую
библиотеку и подключать ее по ходу работы.
В качестве предостережения следует отметить, что выполнение
процессами сервера неправильно написанного пользовательского кода
может привести к катастрофическим последствиям. Следует доверять
только проверенному коду из надежных источников.