PostgreSQL

PostgreSQL — свободная объектно-реляционная система управления базами данных

Описание

PostgreSQL – это свободно распространяемая объектно-реляционная система управления базами данных (ORDBMS), наиболее развитая из открытых СУБД в мире и являющаяся реальной альтернативой коммерческим базам данных.

Особенности PostgreSQL

  • Поддержка распараллеливания операций последовательного сканирования записей (Sequential Scan), слияния запросов (join) и агрегирования данных. При распараллеливании операция разбивается на части и каждая часть разбирается отдельным обработчиком, после чего результаты работы каждого обработчика объединяются, что позволяет существенно увеличить скорость обработки запроса на системах с большим числом процессорных ядер.
  • Режим синхронной репликации “synchronous_commit = remote_apply”, при котором основной узел перед закрытием транзакции ожидает подтверждения применения данных на standby-узле, что позволяет обеспечить непротиворечивость операций чтения из БД в любой части кластера.
  • Возможность создания кластерных конфигураций, включающих несколько запасных узлов, реплицируемых в синхронном режиме. Данная возможность может применяться для создания нескольких полностью идентичных узлов для балансировки нагрузки.
  • В модуль postgres_fdw, позволяющий логически объединить содержимое БД с нескольких серверов, добавлена поддержка операций слияния (join) и сортировки запросов, а также выполнения операций UPDATE и DELETE на внешнем сервере. В том числе модуль может применяться для первичной обработки запросов в PostgreSQL с трансляцией запросов на внешние БД, которые могут обслуживаться другими СУБД.
  • API для создания “горячих” бэкапов, в котором метка резервной копии не записывается в директорию с данными, а возвращается как результат выполнения функции pg_stop_backup(), что позволяет защититься от проблем в случае краха во время бэкапа.
  • Снижено негативное влияние на работу больших таблиц операции “autovacuum”, благодаря исключению операций повторной заморозки (“refreezing”) старых данных.
  • Реализована подсистема для отображения прогресса выполнения операций, например, организовано информирование о времени до завершения VACUUM.
  • В систему полнотекстового поиска добавлены средства поиска фраз, реализованные через новый оператор ‹-› или ‹DISTANCE›, определяющий расстояние между словами (например, можно осуществить выборку фраз, в которых слово “А” отделено от “B” заданным числом слов). Совместно с новыми опциями гибкой настройки поиска, новая возможность может применяться для создания гибридных систем поиска, объединяющих поиск по реляционным данным, JSON и полнотекстовым индексам.
  • Добавлены системные представления и функции: pg_stat_wal_receiver, pg_visibility, pg_config, pg_blocking_pids, g_notification_queue_usage.
  • При установке дополнений теперь поддерживается каскадная установка зависимостей.
  • В модуле pg_basebackup появилась поддержка распараллеливания операций и слотов репликации.
  • В утилиту psql добавлены команды \ev и \sv для редактирования представлений. Реализована возможность указания нескольких экземпляров опций “-c” и “-f”. Добавлен режим \crosstabview для отображения результатов запроса в виде сетки, по аналогии с электронными таблицами.
  • Добавлен отладочный модуль pg_visibility, предоставляющий средства для изучения карты видимости (Visibility Map, отслеживает какие элементы видны для всех активных транзакций).
  • Поддержка выражения “ALTER TABLE ADD COLUMN … IF NOT EXISTS” для добавления столбца только при его отсутствии в таблице.
  • Возможность создавать GIN-индексы с любым значением maintenance_work_mem.
  • Системное представление pg_config, отражающее параметры сборки СУБД.
  • Нет ограничений на максимальный размер базы данных.
  • Нет ограничений на количество записей в таблице.
  • Нет ограничений на количество индексов в таблице.
  • Максимальный размер таблицы — 32 Тбайт.
  • Максимальный размер записи — 1,6 Тбайт.
  • Максимальный размер поля — 1 Гбайт.
  • Максимум полей в записи250—1600 (в зависимости от типов полей).

 

Возможности PostgreSQL

  • Функции в PostgreSQL являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки собственно SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием различных языков программирования. PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса. Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя. Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие.
  • Триггеры в PostgreSQL определяются как функции, инициируемые DML-операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования. Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.
  • Механизм правил в PostgreSQL представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице.
  • Индексы в PostgreSQL следующих типов: B-дерево, хэш, R-дерево, GiST, GIN. При необходимости можно создавать новые типы индексов, хотя это далеко не тривиальный процесс.
  • Многоверсионность поддерживается в PostgreSQL — возможна одновременнуя модификация БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает нужда в блокировках чтения.
  • Расширение PostgreSQL для собственных нужд возможно практически в любом аспекте. Есть возможность добавлять собственные преобразования типов, типы данных, домены (пользовательские типы с изначально наложенными ограничениями), функции (включая агрегатные), индексы, операторы (включая переопределение уже существующих) и процедурные языки.
  • Наследование в PostgreSQL реализовано на уровне таблиц. Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице.

 

Преимущества PostgreSQL

  • Поддержка БД неограниченного размера;
  • Мощные и надёжные механизмы транзакций и репликации;
  • Расширяемая система встроенных языков программирования и поддержка загрузки C-совместимых модулей;
  • Наследование;
  • Легкая расширяемость.
  • Разработка
    ...
  • Базы данных
    ...

Аналоги и альтернативы для PostgreSQL

PostgreSQL - похожие продукты (инструменты, решения, сервисы)

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “PostgreSQL”

Ваш адрес email не будет опубликован. Обязательные поля помечены *