Возможности PostgreSQL
Как упоминалось выше, PostgreSQL считается самой совершенной СУБД, распространяемой
на условиях открытых исходных текстов. В PostgreSQL реализованы многие
возможности, обычно присутствующие только в коммерческих СУБД, таких как
DB2 и Oracle. Ниже перечислены основные возможности PostgreSQL версии
7.1.x.
- Объектно-реляционная модель. Работа с данными в PostgreSQL основана
на объектно-реляционной модели, что позволяет задействовать сложные
процедуры и системы правил. Примерами нетривиальных возможностей этой
категории являются декларативные запросы SQL, контроль параллельного
доступа, поддержка многопользовательского доступа, транзакции, оптимизация
запросов, поддержка наследования и массивов.
- Простота расширения. В PostgreSQL поддерживаются пользовательские
операторы, функции, методы доступа и типы данных.
- Полноцепная поддержка SQL. PostgreSQL соответствует базовой спецификации
SQL99 и поддерживает такие нетривиальные средства, как объединения стандарта
SQL92.
- Проверка целостности ссылок. PostgreSQL поддерживает проверку целостности
ссылок, обеспечивающую правильность данных в базе.
- Гибкость API. Гибкость API PostgreSQL позволяет легко создавать интерфейсы
к РСУБД PostgreSQL. В настоящее время существуют программные интерфейсы
для Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/
C+ и Pike.
- Процедурные языки. В PostgreSQL предусмотрена поддержка внутренних
процедурных языков, в том числе специализированного языка PL/pgSQL,
являющегося аналогом PL/SQL, процедурного языка Oracle. Одним из преимуществ
PostgreSQL является возможность использования Perl, Python и TCL в качестве
внутренних процедурных языков.
- МУСС. Технология MVCC (Multi-Version Concurrency Control) используется
в PostgreSQL для предотвращения лишних блокировок (locking). Каждый,
кто хоть раз работал с другими СУБД на базе SQL (например, MySQL или
Access), наверняка замечал, что обращение к базе данных для чтения иногда
сопровождается задержками, связанными с попытками записи в базу данных.
Проще говоря, операции чтения блокируются операциями, производящими
обновление записей. Применение технологии MVCC в PostgreSQL полностью
решает эту проблему. MVCC лучше низкоуровневой блокировки, поскольку
операции чтения никогда не блокируются операциями записи. Вместо этого
PostgreSQL отслеживает все транзакции, выполняемые пользователями базы
данных, что позволяет работать с записями без ожидания их освобождения.
Клиент-сервер. В PostgreSQL используется архитектура «клиент-сервер»
с распределением процессов между пользователями. В целом она напоминает
методику работы с процессами в Apache 1.3.x. Главный (master) процесс
создает дополнительные подключения для каждого клиента, пытающегося установить
соединение с PostgreSQL.
Опережающая регистрация изменений. Опережающая регистрация изменений
(Write Ahead Logging, WAL) повышает надежность данных. Все изменения данных
протоколируются до их непосредственной актуализации в базе. Наличие протокола
изменений гарантирует, что в случае сбоя базы данных (что весьма маловероятно)
данные можно будет восстановить по запротоколированным транзакциям. После
восстановления системы пользователь продолжает работу с состояния, непосредственно
предшествовавшего сбою. |