PostgreSQL

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Шаблон:Карточка программы PostgreSQL (произносится «Пост-Грес-Кью-Эл»<ref>Шаблон:Cite web</ref>) — свободная объектно-реляционная система управления базами данных (СУБД).

Существует в реализациях для множества UNIX-подобных платформ, включая различные BSD-системы, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.

Поддержка стандартов, возможности, особенности

PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2011<ref>«Appendix D. SQL Conformance» Шаблон:Wayback. PostgreSQL 9 Documentation Шаблон:Wayback. PostgreSQL Global Development Group. 2009 [1996]. Retrieved 2013-04-01.</ref><ref>«SQL Conformance» Шаблон:Wayback. postgresql.org. 2013-04-04. Retrieved 2013-08-28.</ref> и ряд возможностей SQL:2016 в части работы с данными в формате JSON<ref>Шаблон:Cite web</ref>.

В PostgreSQL есть следующие ограничения<ref>Шаблон:Cite web</ref>:

Максимальный размер базы данных Нет ограничений
Максимальный размер таблицы 32 Тбайт
Максимальный размер поля 1 Гбайт
Максимум записей в таблице Ограничено размерами таблицы
Максимум полей в записи 250—1600, в зависимости от типов полей
Максимум индексов в таблице Нет ограничений

Сильными сторонами PostgreSQL считаются:

  • высокопроизводительные и надёжные механизмы транзакций и репликации;
  • расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются Шаблон:Nobr, PL/Perl, PL/Python и Шаблон:Nobr; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки модулей расширения на языке C<ref>Шаблон:Cite web</ref>;
  • наследование;
  • возможность индексирования геометрических (в частности, географических) объектов и наличие базирующегося на ней расширения PostGIS;
  • встроенная поддержка слабоструктурированных данных в формате JSON с возможностью их индексации;
  • расширяемость (возможность создавать новые типы данных, типы индексов, языки программирования, модули расширения, подключать любые внешние источники данных).

История

PostgreSQL создана на основе некоммерческой СУБД Postgres, разработанной как open-source проект в Калифорнийском университете в Беркли. К разработке Postgres, начавшейся в 1986 году, имел непосредственное отношение Майкл Стоунбрейкер, руководитель более раннего проекта Ingres, на тот момент уже приобретённого компанией Computer Associates. Название расшифровывалось как «Post Ingres», и при создании Postgres были применены многие ранние наработки.

Стоунбрейкер и его студенты разрабатывали новую СУБД в течение восьми лет с 1986 по 1994 годы. За этот период в синтаксис были введены процедуры, правила, пользовательские типы и другие компоненты. В 1995 году разработка снова разделилась: Стоунбрейкер использовал полученный опыт в создании коммерческой СУБД Illustra, продвигаемой его собственной одноимённой компанией (приобретённой впоследствии компанией Informix), а его студенты разработали новую версию Postgres — Postgres95, в которой язык запросов POSTQUEL — наследие Ingres — был заменен на SQL.

Разработка Postgres95 была выведена за пределы университета и передана команде энтузиастов. Новая СУБД получила имя, под которым она известна и развивается в текущий момент — PostgreSQL. Старое название «Postgres» по-прежнему используется в сообществе наряду с «PostgreSQL», так как для многих оно удобнее в произношении<ref>Шаблон:Cite web</ref>.

История версий
Версия Дата первого релиза Последняя минорная версия Дата последнего релиза Окончание поддержки<ref>Шаблон:Cite web</ref> Реализованные возможности
6.0 1997-01-29 Шаблон:NA Шаблон:NA Шаблон:NA Формально первый выпуск PostgreSQL. Уникальные индексы, утилита pg_dumpall, аутентификация с использованием ident
6.1 1997-06-08 Шаблон:Version 1997-07-22 Шаблон:NA Многоколоночные индексы, последовательности, тип данных money, GEQO (GEnetic Query Optimizer)
6.2 1997-10-02 Шаблон:Version 1997-10-17 Шаблон:NA Интерфейс JDBC, триггеры, интерфейс программирования сервера, ограничения
6.3 1998-03-01 Шаблон:Version 1998-04-07 2003-03-01 Поддержка subselect из SQL-92, PL/pgTCL
6.4 1998-10-30 Шаблон:Version 1998-12-20 2003-10-30 Поддержка VIEW (только в режиме read-only) и правил, PL/pgSQL
6.5 1999-06-09 Шаблон:Version 1999-10-13 2004-06-09 MVCC, временные таблицы, поддержка новых операторов SQL (CASE, INTERSECT и EXCEPT)
7.0 2000-05-08 Шаблон:Version 2000-11-11 2004-05-08 Внешние включи, синтаксис SQL-92 для соединений (JOIN)
7.1 2001-04-13 Шаблон:Version 2001-08-15 2006-04-13 Упреждающая журнализация, OUTER JOIN
7.2 2002-02-04 Шаблон:Version 2005-05-09 2007-02-04 PL/Python, поле OID становится необязательным в таблицах, интернационализация и локализация сообщений
7.3 2002-11-27 Шаблон:Version 2008-01-07 2007-11-27 схемы, табличные функции, подготовленные запросы<ref>Шаблон:Cite magazine</ref>
7.4 2003-11-17 Шаблон:Version 2010-10-04 2010-10-01 Оптимизация в JOINах и функции data warehouse<ref>Шаблон:Cite magazine</ref>
8.0 2005-01-19 Шаблон:Version 2010-10-04 2010-10-01 Версия для Microsoft Windows, точки сохранения в транзакциях, табличные пространства, point-in-time recovery<ref>Шаблон:Cite magazine</ref>
8.1 2005-11-08 Шаблон:Version 2010-12-16 2010-11-08 Оптимизация производительности, двухфазный commit, секционирование таблиц, index bitmap scan в планировщике SQL-запросов, разделяемый режим блокировки на уровне строк, роли
8.2 2006-12-05 Шаблон:Version 2011-12-05 2011-12-05 Оптимизация производительности, построение индексов без остановки работы, рекомендательные блокировки, режим «тёплого резерва» при восстановлении базы по записям WAL<ref>Шаблон:Cite magazine</ref>
8.3 2008-02-04 Шаблон:Version 2013-02-07 2013-02-07 Механизм Heap-only tuples, полнотекстовый поиск<ref>Шаблон:Cite magazine</ref>, SQL/XML, типы ENUM, типы UUID
8.4 2009-07-01 Шаблон:Version 2014-07-24 2014-07-24 Оконные функции, права доступа на уровне полей (колонок) таблицы, параллельное восстановление базы, правила сортировки на уровне базы, общие табличные запросы и рекурсивные запросы<ref>Шаблон:Cite magazine</ref>
9.0 2010-09-20 Шаблон:Version 2015-10-08 2015-10-08 Встроенная потоковая двоичная репликация, режим горячего резерва, обновление без остановки сервера, поддержка 64-битных версий Windows<ref>Шаблон:Cite web</ref>
9.1 2011-09-12 Шаблон:Version 2016-10-27 2016-10-27 Синхронная репликация, правила сортировки, задаваемые для отдельных колонок, нелоггируемые таблицы, уровень изоляции транзакций «сериализуемая изоляция снимков», возможность записи в общих табличных запросах SQL, интеграция с SELinux, расширения, внешние таблицы<ref>Шаблон:Cite magazine</ref>
9.2 2012-09-10<ref>Шаблон:Cite web</ref> Шаблон:Version 2017-11-09 2017-11-09 Каскадная потоковая репликация, сканирование только индекса, прямая поддержка JSON, улучшенное управление блокировками, диапазонные типы, утилита pg_receivexlog, индексы space-partitioned GiST
9.3 2013-09-09 Шаблон:Version 2018-11-08 2018-11-08 Настраиваемые фоновые рабочие процессы, контрольные суммы страниц для обнаружения повреждённых данные, операторы JSON, LATERAL JOIN, ускорена работа pg_dump, новая утилита pg_isready для мониторинга сервера, доработанные возможности триггеров и представлений базы (view), записываемые внешние таблицы, материализованные представления, улучшения репликации
9.4 2014-12-18 Шаблон:Version 2020-02-13 2020-02-13 Тип данных JSONB, Оператор ALTER SYSTEM для изменения значений в конфигурации системы, возможность обновлять материализованные представления без блокировки чтения, динамическая регистрация/запуск/остановка фоновых рабочих процессов, API логического декодирования для подключения к БД, улучшение работы индексов GIN, поддержка страниц типа huge для Linux, перезагрузка кэша базы данных с использованием pg_prewarm, новая ускоренная версия Hstore позиционируемая как предпочтительный способ хранения колоночных данных<ref>Шаблон:Cite web</ref>
9.5 2016-01-07 Шаблон:Version 2021-02-11 2021-02-11 UPSERT, политики защиты строк, TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS, и новый тип индекса BRIN<ref>Шаблон:Cite magazine</ref>
9.6 2016-09-29 Шаблон:Version 2021-11-11 2021-11-11 Поддержка параллельных запросов, усовершенствования функционала PostgreSQL для работы со сторонними данными (FDW) — добавлен параметр pushdown для sort/join, множественные синхронные сервера горячего резерва, ускорена операция vacuum на больших таблицах
10 2017-10-05 Шаблон:Version 2022-11-10 2022-11-10 Логическая репликация<ref>Шаблон:Cite web</ref>, декларативное секционирование таблиц, улучшенное параллельное выполнение в запросах
11 2018-10-18 Шаблон:Version 2023-11-09 2023-11-09 Улучшены устойчивость и производительность при секционировании, поддержка транзакций в хранимых процедурах, улучшенные возможности для параллельного выполнения в запросах, just-in-time (JIT) компиляция выражений<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>
12 2019-10-03 Шаблон:Version 2024-11-21 2024-11-21 Ускорение запросов и более экономное использование дискового пространства; поддержка выражений языка путей SQL/JSON; генерируемые столбцы; улучшения в интернационализации и аутентификации; новый интерфейс для создания подключаемых движков работы с таблицами<ref>Шаблон:Cite news</ref>
13 2020-09-24 Шаблон:Version 2025-11-13 2025-11-13 Дедупликация узлов в индексах B-tree ускорена и требует меньше места, увеличена производительность запросов, которые используют агрегаты или секционированные таблицы, улучшено планирование запросов при использовании расширенной статистики, распараллелено вакуумирование индексов, инкрементальная сортировка<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>
14 2021-09-30 Шаблон:Version 2026-02-26 2026-11-12 Разрешены определённые стандартом SQL опции SEARCH и CYCLE в общих табличных запросах, разрешено добавлять DISTINCT к GROUP BY<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>
15 2022-10-13 Шаблон:Version 2026-02-26 2027-11-11
  • Поддержка команды SQL MERGE
  • Выборочная публикация содержимого таблиц в публикациях логической репликации благодаря возможности указывать списки столбцов и условия фильтрации строк
  • Дополнительные возможности сжатия, включая поддержку сжатия Zstandard (zstd). Сюда входит поддержка выполнения сжатия на стороне сервера во время pg_basebackup
  • Поддержка структурированного вывода журналов сервера в формате JSON
  • Улучшена производительность, особенно при сортировке в памяти и на диске<ref>Шаблон:Cite web</ref>
16 2023-09-14 Шаблон:Version 2026-02-26 2028-11-09
  • Возможность распараллеливания FULL и внутренних правых OUTER хэш-соединений
  • Возможность логической репликацию с резервных серверов
  • Возможность подписчикам логической репликации выполнять большие транзакции параллельно
  • Возможность мониторинга статистики ввода-вывода с использованием нового представления pg_stat_io
  • Добавление конструкторов SQL / JSON и функций идентификации
  • Улучшение производительности заморозки сборки мусора
  • Добавлена поддержка сопоставления регулярных выражений имен пользователей и баз данных в pg_hba.conf и имен пользователей в pg_ident.conf<ref>Шаблон:Cite web</ref>
17 2024-09-26 Шаблон:Version 2026-02-26 2029-11-08
  • Новая система управления памятью для VACUUM, которая снижает потребление памяти и может повысить общую производительность сборки мусора
  • Новые возможности SQL / JSON, включая конструкторы, функции идентификации и функцию JSON_TABLE(), которая преобразует данные JSON в табличное представление
  • Различные улучшения производительности запросов, в том числе для последовательного чтения с использованием потокового ввода-вывода, пропускной способности записи при высоком параллелизме и поиска по нескольким значениям в индексе btree
  • Улучшения логической репликации, включая:
    • Управление отказоустойчивостью
    • pg_createsubscriber, утилита, создающая логические копии из физических резервных копий
    • pg_upgrade теперь сохраняет слоты репликации как у издателей, так и у подписчиков
  • Новая опция подключения на стороне клиента, sslnegotiation = direct, которая выполняет прямое «рукопожатие» TLS, чтобы избежать повторного согласования
  • pg_basebackup теперь поддерживает инкрементное резервное копирование
  • COPY добавляет новую опцию ON_ERROR ignore, которая позволяет продолжить операцию копирования в случае ошибки<ref>Шаблон:Cite web</ref>
18 2025-09-25 Шаблон:Version 2026-02-26 2030-11-14 Новая подсистема ввода-вывода и улучшения асинхронного ввода-вывода<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>.

Шаблон:Version

Основные возможности

Функции

Функции являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием одного из следующих языков:

PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса.

Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.

Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие. С девятой версии возможно написание автономных блоков, которые позволяют выполнять код на процедурных языках без написания функций, непосредственно в клиенте.

Триггеры

Триггеры определяются как функции, инициируемые DML-операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования (см. выше).

Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.

Правила и представления

Механизм правил (англ. Шаблон:Lang-en2) представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице. Хорошим примером является реализация механизма представлений (англ. Шаблон:Lang-en2): при создании представления создается правило, которое определяет, что вместо выполнения операции выборки к представлению система должна выполнять операцию выборки к базовой таблице/таблицам с учётом условий выборки, лежащих в основе определения представления. Для создания представлений, поддерживающих операции обновления, правила для операций вставки, изменения и удаления строк должны быть определены пользователем.

Индексы

В PostgreSQL имеется поддержка индексов следующих типов: B-дерево, хеш, GiST, GIN, BRIN, Bloom. При необходимости можно создавать новые типы индексов. Индексы в PostgreSQL обладают следующими свойствами:

  • возможен просмотр индекса не только в прямом, но и в обратном порядке — создание отдельного индекса для работы конструкции ORDER BY ... DESC не нужно;
  • возможно создание индекса над несколькими столбцами таблицы, в том числе над столбцами различных типов данных;
  • индексы могут быть функциональными, то есть строиться не на базе набора значений некоего столбца/столбцов, а на базе набора значений функции от набора значений;
  • индексы могут быть частичными, то есть строиться только по части таблицы (по некоторой её проекции); в некоторых случаях это помогает создавать намного более компактные индексы или достигать улучшения производительности за счёт использования разных типов индексов для разных (например, с точки зрения частоты обновления) частей таблицы;
  • планировщик запросов может использовать несколько индексов одновременно для выполнения сложных запросов.

Многоверсионность (MVCC)

PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID и практически отпадает нужда в блокировках чтения.

Типы данных

PostgreSQL поддерживает большой набор встроенных типов данных:

  • Численные типы
    • Целые
    • С фиксированной точкой
    • С плавающей точкой
    • Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с фиксированной точкой с двумя знаками после запятой)
  • Символьные типы произвольной длины
  • Двоичные типы (включая BLOB)
  • Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая последние изменения в часовых поясах)
  • Булев тип
  • Перечисление
  • Геометрические примитивы
  • Интервалы (RANGE)
  • Сетевые типы
  • UUID-идентификатор
  • XML-данные
  • Массивы
  • JSON
  • Идентификаторы объектов БД
  • Псевдотипы

Более того, пользователь может самостоятельно создавать новые требуемые ему типы и программировать для них механизмы индексирования с помощью GiST.

Пользовательские объекты

PostgreSQL может быть расширен пользователем для собственных нужд практически в любом аспекте. Есть возможность добавлять собственные:

  • Преобразования типов
  • Типы данных
  • Домены (пользовательские типы с изначально наложенными ограничениями)
  • Функции (включая агрегатные)
  • Индексы
  • Операторы (включая переопределение уже существующих)
  • Процедурные языки

Наследование и секционирование

Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице.

В PostgreSQL 10 был добавлен механизм секционирования таблиц. Секционирование предназначено для разделения одной таблицы на несколько так называемых секций (partitions). Секционирование схоже с наследованием, но имеет более дружелюбный к пользователю синтаксис и более строгие ограничения, что позволяет выполнять дополнительные оптимизации при планировании запросов.

Прочие возможности

  • Соблюдение принципов ACID
  • Соответствие стандартам ANSI, SQL-92, SQL-99, SQL:2003, SQL:2011
  • Поддержка запросов с OUTER JOIN, UNION, UNION ALL, EXCEPT, INTERSECT и подзапросов
  • Последовательности
  • Контроль целостности
  • Репликация
  • Общие табличные выражения и рекурсивные запросы
  • Аналитические функции
  • Поддержка Юникода (UTF-8)
  • Поддержка регулярных выражений в стиле Perl
  • Встроенная поддержка SSL, SELinux и Kerberos
  • Протокол разделяемых блокировок
  • Подгружаемые расширения, поддерживающие SHA1, MD5, XML
  • Расширения для написания сложных выборок, отчётов и т. д. (API открыт)
  • Средства для генерации совместимого с другими системами SQL-кода и импорта из других систем
  • Автономные блоки на доступных языках, а не только SQL

Администрирование

Средства администрирования PostgreSQL:

Шаблон:Anchorpsql
Основным интерфейсом для PostgreSQL является интерактивная Шаблон:Не переведено Шаблон:Code, которую можно использовать для прямого ввода SQL-запросов или их выполнения из файла. Кроме того, psql предоставляет ряд метакоманд и различных функций оболочки для облегчения написания скриптов и автоматизации широкого спектра задач; например, автодополнение имён объектов и синтаксиса SQL.
Шаблон:AnchorpgAdmin
Пакет pgAdmin — это бесплатный и открытый графический пользовательский интерфейс для администрирования PostgreSQL, который поддерживается на многих компьютерных платформах<ref name="pgAdmin">Шаблон:Cite web</ref>. Программа доступна более чем на дюжине языков. Первый прототип, названный pgManager, был написан для PostgreSQL 6.3.2 в 1998 году и переписан и выпущен как pgAdmin под лицензией GNU General Public License (GPL) в последующие месяцы. Вторая версия (названная pgAdmin II) была полностью переписана и впервые выпущена 16 января 2002 года. Третья версия, pgAdmin III, изначально была выпущена под лицензией Шаблон:Не переведено, а затем выпущена под той же лицензией, что и PostgreSQL. В отличие от предыдущих версий, написанных на Visual Basic, pgAdmin III написан на C++ с использованием фреймворка wxWidgets<ref>Шаблон:Cite web</ref>, что позволяет ему работать на большинстве распространённых операционных систем. Инструмент запросов включает в себя язык сценариев pgScript для поддержки задач администрирования и разработки. В декабре 2014 года Дэйв Пейдж, основатель и главный разработчик проекта pgAdmin<ref>Шаблон:Cite web</ref>, объявил, что с переходом на веб-модели началась работа над pgAdmin 4 с целью упрощения облачных развёртываний<ref>Шаблон:Cite web</ref>. В 2016 году был выпущен pgAdmin 4. Он был написан на Python с использованием Flask и фреймворка Qt<ref>Шаблон:Cite web</ref>.
phpPgAdmin
phpPgAdmin — веб-инструмент администрирования для PostgreSQL, написанный на PHP и основанный на популярном интерфейсе phpMyAdmin, изначально созданном для администрирования MySQL<ref name="PHPADMIN">Шаблон:Cite web</ref>.
PostgreSQL Studio
PostgreSQL Studio позволяет пользователям выполнять основные задачи разработки баз данных PostgreSQL из веб-консоли. PostgreSQL Studio позволяет пользователям работать с облачными базами данных без необходимости открывать межсетевые экраны<ref name="POSTGRESQLSTUDIO">Шаблон:Cite web</ref>
LibreOffice, OpenOffice.org
LibreOffice и OpenOffice.org Base можно использовать в качестве интерфейса для PostgreSQL<ref name="ooAsFrntEnd">Шаблон:Cite web</ref><ref name="loAsFrntEnd">Шаблон:Cite web</ref>
pgBadger
Анализатор логов PostgreSQL pgBadger создаёт подробные отчёты из файла журналов PostgreSQL<ref name="tuningPGinstance">Шаблон:Cite web</ref>
pgDevOps
pgDevOps — это набор веб-инструментов для установки и управления несколькими версиями PostgreSQL, расширениями и компонентами сообщества, разработки SQL-запросов, мониторинга работающих баз данных и поиска проблем производительности<ref>Шаблон:Cite web</ref>
Adminer
Adminer — простой веб-инструмент администрирования для PostgreSQL и других СУБД, написанный на PHP.
pgBackRest
pgBackRest — инструмент резервного копирования и восстановления для PostgreSQL, который обеспечивает поддержку полного, дифференциального и инкрементного резервного копирования<ref>Шаблон:Cite web</ref>
pgaudit
pgaudit — это расширение PostgreSQL, которое обеспечивает подробное ведение журнала аудита сеанса и/или объекта с помощью стандартного средства ведения журнала, предоставляемого PostgreSQL<ref>Шаблон:Cite web</ref>.
WAL-E
WAL-E — это инструмент резервного копирования и восстановления для PostgreSQL, который обеспечивает поддержку физических (на основе упреждающей журнализации) резервных копий, написанный на Python<ref>Шаблон:Cite web</ref>.

Ряд компаний предлагают собственные инструменты для PostgreSQL. Они часто состоят из универсального ядра, адаптированного для различных конкретных продуктов баз данных. Эти инструменты в основном используют функции администрирования инструментов с открытым исходным кодом, но предлагают улучшения в Шаблон:Не переведено, импорте, экспорте или отчётности.

Качество исходного кода

Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, проведённом в 2005 году, в исходном коде PostgreSQL было найдено Шаблон:Nobr мест на Шаблон:Nobr (в среднем, одна ошибка на Шаблон:Nobr кода)<ref>Шаблон:Cite web</ref>. Для сравнения: MySQL — Шаблон:Nobr одна ошибка на Шаблон:Nobr кода; FreeBSD (целиком) — Шаблон:Nobr одна ошибка на Шаблон:Nobr кода; Linux (только ядро) — Шаблон:Nobr одна ошибка на Шаблон:Nobr кода.

Производные продукты

Лицензия PostgreSQL позволяет на его основе создавать различные, в том числе коммерческие, форки. Их известно несколько десятков<ref>Шаблон:Cite web</ref>.

На базе PostgreSQL компанией EnterpriseDB были разработаны другие варианты этой СУБД, являющиеся платными для коммерческого использования — Postgres Plus (состоит целиком только из продуктов с открытыми исходными кодами; плата требуется только при необходимости приобретения коммерческой поддержки продукта) и Postgres Plus Advanced Server (расширение PostgreSQL специальными возможностями для обеспечения совместимости с Oracle Database)<ref>Шаблон:Cite webШаблон:Недоступная ссылка</ref>. В комплекте поставки данных продуктов содержится набор ПО для разработчиков и администраторов баз данных:

  • Postgres Studio — аналог phpPgAdmin;
  • Postgres Plus Debugger — отладчик для кода на PL/pgSQL, интегрированный с предыдущим пакетом;
  • Migration Studio — инструмент для автоматического преобразования баз данных из MySQL/Oracle в PostgreSQL.

Существуют и другие коммерческие продукты, созданные на базе PostgreSQL и дополняющие её различными функциями:

Postgres Pro

Postgres Pro компании Postgres Professional<ref>Шаблон:Cite web</ref> — разрабатываемый в России дистрибутив, содержащий усовершенствования, впоследствии, как правило, поступающие в апстрим основного проекта. Данная версия PostgreSQL сертифицирована ФСТЭК<ref>Шаблон:Cite web</ref> и рядом крупных российских организаций. В рамках российского импортозамещения рассматривается как замена Oracle<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>.

Примечания

Шаблон:Примечания

Ссылки

  • Балдин Евгений. PostgreSQL — серия из шести статей, опубликованных в журнале Linux Format (2006—2007).
  • Шаблон:Cite web
  • Алексеев Александр. Серия статей о PostgreSQL — примеры использования физической и логической репликации, полнотекстового и пространственного поиска, автоматического восстановления после сбоев, написания расширений.

Шаблон:ВС Шаблон:СУБД Шаблон:Databases