PostgreSQL (произносится «Пост-Грес-Кью-Эл»[6]) — свободная объектно-реляционная система управления базами данных (СУБД).
PostgreSQL | |
---|---|
Тип | реляционная СУБД и SQL server[вд] |
Автор | Майкл Стоунбрейкер[2] |
Разработчик | сообщество PostgreSQL |
Написана на | Си[3][4] |
Операционные системы | FreeBSD[5], OpenBSD[5], Linux[5], macOS[5], Solaris[5], Windows[5] и Unix-подобная операционная система |
Первый выпуск | 1996 |
Последняя версия | |
Репозиторий | git.postgresql.org/gitwe… |
Лицензия | PostgreSQL License (free and open-source) |
Сайт | postgresql.org (англ.) |
Медиафайлы на Викискладе |
Существует в реализациях для множества UNIX-подобных платформ, включая различные BSD-системы, HP-UX, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.
Поддержка стандартов, возможности, особенности
правитьPostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2011[7][8] и ряд возможностей SQL:2016 в части работы с данными в формате JSON[9].
В PostgreSQL версии 12 есть следующие ограничения[10]:
Максимальный размер базы данных | Нет ограничений |
Максимальный размер таблицы | 32 Тбайт |
Максимальный размер поля | 1 Гбайт |
Максимум записей в таблице | Ограничено размерами таблицы |
Максимум полей в записи | 250—1600, в зависимости от типов полей |
Максимум индексов в таблице | Нет ограничений |
Сильными сторонами PostgreSQL считаются:
- высокопроизводительные и надёжные механизмы транзакций и репликации;
- расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки модулей расширения на языке C[11];
- наследование;
- возможность индексирования геометрических (в частности, географических) объектов и наличие базирующегося на ней расширения 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.
Версия | Дата первого релиза | Последняя минорная версия | Дата последнего релиза | Окончание поддержки[12] | Реализованные возможности |
---|---|---|---|---|---|
6.0 | 1997-01-29 | н/д | н/д | н/д | Формально первый выпуск PostgreSQL. Уникальные индексы, утилита pg_dumpall, аутентификация с использованием ident |
6.1 | 1997-06-08 | 6.1.1 | 1997-07-22 | н/д | Многоколоночные индексы, последовательности, тип данных money, GEQO (GEnetic Query Optimizer) |
6.2 | 1997-10-02 | 6.2.1 | 1997-10-17 | н/д | Интерфейс JDBC, триггеры, интерфейс программирования сервера, ограничения |
6.3 | 1998-03-01 | 6.3.2 | 1998-04-07 | 2003-03-01 | Поддержка subselect из SQL-92, PL/pgTCL |
6.4 | 1998-10-30 | 6.4.2 | 1998-12-20 | 2003-10-30 | Поддержка VIEW (только в режиме read-only) и правил, PL/pgSQL |
6.5 | 1999-06-09 | 6.5.3 | 1999-10-13 | 2004-06-09 | MVCC, временные таблицы, поддержка новых операторов SQL (CASE, INTERSECT и EXCEPT) |
7.0 | 2000-05-08 | 7.0.3 | 2000-11-11 | 2004-05-08 | Внешние включи, синтаксис SQL-92 для соединений (JOIN) |
7.1 | 2001-04-13 | 7.1.3 | 2001-08-15 | 2006-04-13 | Упреждающая журнализация, OUTER JOIN |
7.2 | 2002-02-04 | 7.2.8 | 2005-05-09 | 2007-02-04 | PL/Python, поле OID становится необязательным в таблицах, интернационализация и локализация сообщений |
7.3 | 2002-11-27 | 7.3.21 | 2008-01-07 | 2007-11-27 | схемы, табличные функции, подготовленные запросы[13] |
7.4 | 2003-11-17 | 7.4.30 | 2010-10-04 | 2010-10-01 | Оптимизация в JOINах и функции data warehouse[14] |
8.0 | 2005-01-19 | 8.0.26 | 2010-10-04 | 2010-10-01 | Версия для Microsoft Windows, точки сохранения в транзакциях, табличные пространстваs, point-in-time recovery[15] |
8.1 | 2005-11-08 | 8.1.23 | 2010-12-16 | 2010-11-08 | Оптимизация производительности, двухфазный commit, секционирование таблиц, index bitmap scan в планировщике SQL-запросов, разделяемый режим блокировки на уровне строк, роли |
8.2 | 2006-12-05 | 8.2.23 | 2011-12-05 | 2011-12-05 | Оптимизация производительности, построение индексов без остановки работы, рекомендательные блокировки, режим «тёплого резерва» при восстановлении базы по записям WAL[16] |
8.3 | 2008-02-04 | 8.3.23 | 2013-02-07 | 2013-02-07 | Механизм Heap-only tuples, полнотекстовый поиск[17], SQL/XML, типы ENUM, типы UUID |
8.4 | 2009-07-01 | 8.4.22 | 2014-07-24 | 2014-07-24 | Оконные функции, права доступа на уровне полей (колонок) таблицы, параллельное восстановление базы, правила сортировки на уровне базы, общие табличные запросы и рекурсивные запросы[18] |
9.0 | 2010-09-20 | 9.0.23 | 2015-10-08 | 2015-10-08 | Встроенная потоковая двоичная репликация, режим горячего резерва, обновление без остановки сервера, поддержка 64-битных версий Windows[19] |
9.1 | 2011-09-12 | 9.1.24 | 2016-10-27 | 2016-10-27 | Синхронная репликация, правила сортировки, задаваемые для отдельных колонок, нелоггируемые таблицы, уровень изоляции транзакций «сериализуемая изоляция снимков» , возможность записи в общих табличных запросах SQL, интеграция с SELinux, расширения, внешние таблицы[20] |
9.2 | 2012-09-10[21] | 9.2.24 | 2017-11-09 | 2017-11-09 | Каскадная потоковая репликация, сканирование только индекса, прямая поддержка JSON, улучшенное управление блокировками, диапазонные типы, утилита pg_receivexlog, индексы space-partitioned GiST |
9.3 | 2013-09-09 | 9.3.25 | 2018-11-08 | 2018-11-08 | Настраиваемые фоновые рабочие процессы, контрольные суммы страниц для обнаружения повреждённых данные, операторы JSON, LATERAL JOIN, ускорена работа pg_dump, новая утилита pg_isready для мониторинга сервера, доработанные возможности триггеров и представлений базы (view), записываемые внешние таблицы, материализованные представления, улучшения репликации |
9.4 | 2014-12-18 | 9.4.26 | 2020-02-13 | 2020-02-13 | Тип данных JSONB, Оператор ALTER SYSTEM для изменения значений в конфигурации системы, возможность обновлять материализованные представления без блокировки чтения, динамическая регистрация/запуск/остановка фоновых рабочих процессов, API логического декодирования для подключения к БД, улучшение работы индексов GIN, поддержка страниц типа huge для Linux, перезагрузка кэша базы данных с использованием pg_prewarm, новая ускоренная версия Hstore позиционируемая как предпочтительный способ хранения колоночных данных[22] |
9.5 | 2016-01-07 | 9.5.25 | 2021-02-11 | 2021-02-11 | UPSERT, политики защиты строк, TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS, и новый тип индекса BRIN[23] |
9.6 | 2016-09-29 | 9.6.24 | 2021-11-11 | 2021-11-11 | Поддержка параллельных запросов, усовершенствования функционала PostgreSQL для работы со сторонними данными (FDW) - добавлен параметр pushdown для sort/join, множественные синхронные сервера горячего резерва, ускорена операция vacuum на больших таблицах |
10 | 2017-10-05 | 10.20 | 2022-02-10 | 2022-11-10 | Логическая репликация[24], декларативное секционирование таблиц, улучшенное параллельное выполнение в запросах |
11 | 2018-10-18 | 11.15 | 2022-02-10 | 2023-11-09 | Улучшены устойчивость и производительность при секционировании, поддержка транзакций в хранимых процедурах, улучшенные возможности для параллельного выполнения в запросах, just-in-time (JIT) компиляция выражений[25][26] |
12 | 2019-10-03 | 12.10 | 2022-02-10 | 2024-11-14 | Ускорение запросов и более экономное использование дискового пространства; поддержка выражений языка путей SQL/JSON; генерируемые столбцы; улучшения в интернационализации и аутентификации; новый интерфейс для создания подключаемых движков работы с таблицами[27] |
13 | 2020-09-24 | 13.6 | 2022-02-10 | 2025-11-13 | Дедупликация узлов в индексах B-tree ускорена и требует меньше места, увеличена производительность запросов, которые используют агрегаты или секционированные таблицы, улучшено планирование запросов при использовании расширенной статистики, распараллелено вакуумирование индексов, инкрементальная сортировка[28][29] |
14 | 2021-09-30 | 14.2 | 2022-02-10 | 2026-11-12 | Разрешены определённые стандартом SQL опции SEARCH и CYCLE в общих табличных запросах, разрешено добавлять DISTINCT к GROUP BY[30][31] |
Основные возможности
правитьФункции
правитьФункции являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием одного из следующих языков:
- Встроенный процедурный язык PL/pgSQL, во многом аналогичный языку PL/SQL, используемому в СУБД Oracle;
- Скриптовые языки — PL/Lua, PL/LOLCODE, PL/Perl, PL/PHP, PL/Python, PL/Ruby, PL/sh, PL/Tcl, PL/Scheme, PL/v8 (Javascript);
- Классические языки — C, C++, Java (через модуль PL/Java);
- Статистический язык R (через модуль PL/R).
PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса.
Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.
Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие. С девятой версии возможно написание автономных блоков, которые позволяют выполнять код на процедурных языках без написания функций, непосредственно в клиенте.
Триггеры
правитьТриггеры определяются как функции, инициируемые DML-операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования (см. выше).
Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.
Правила и представления
правитьМеханизм правил (англ. rules) представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице. Хорошим примером является реализация механизма представлений (англ. views): при создании представления создается правило, которое определяет, что вместо выполнения операции выборки к представлению система должна выполнять операцию выборки к базовой таблице/таблицам с учётом условий выборки, лежащих в основе определения представления. Для создания представлений, поддерживающих операции обновления, правила для операций вставки, изменения и удаления строк должны быть определены пользователем.
Индексы
правитьВ PostgreSQL имеется поддержка индексов следующих типов: B-дерево, хеш, GiST, GIN, BRIN, Bloom. При необходимости можно создавать новые типы индексов. Индексы в PostgreSQL обладают следующими свойствами:
- возможен просмотр индекса не только в прямом, но и в обратном порядке — создание отдельного индекса для работы конструкции
ORDER BY ... DESC
не нужно; - возможно создание индекса над несколькими столбцами таблицы, в том числе над столбцами различных типов данных;
- индексы могут быть функциональными, то есть строиться не на базе набора значений некоего столбца/столбцов, а на базе набора значений функции от набора значений;
- индексы могут быть частичными, то есть строиться только по части таблицы (по некоторой её проекции); в некоторых случаях это помогает создавать намного более компактные индексы или достигать улучшения производительности за счёт использования разных типов индексов для разных (например, с точки зрения частоты обновления) частей таблицы;
- планировщик запросов может использовать несколько индексов одновременно для выполнения сложных запросов.
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
Качество исходного кода
правитьСогласно результатам автоматизированного исследования различного ПО на предмет ошибок, проведённом в 2005 году, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода)[32]. Для сравнения: MySQL — 97 проблем, одна ошибка на 8 000 строк кода; FreeBSD (целиком) — 306 проблем, одна ошибка на 2 500 строк кода; Linux (только ядро) — 950 проблем, одна ошибка на 800 строк кода.
Производные продукты
правитьЛицензия PostgreSQL позволяет на его основе создавать различные, в том числе коммерческие, форки. Их известно несколько десятков[33].
На базе PostgreSQL компанией EnterpriseDB были разработаны другие варианты этой СУБД, являющиеся платными для коммерческого использования — Postgres Plus (состоит целиком только из продуктов с открытыми исходными кодами; плата требуется только при необходимости приобретения коммерческой поддержки продукта) и Postgres Plus Advanced Server (расширение PostgreSQL специальными возможностями для обеспечения совместимости с Oracle Database)[34]. В комплекте поставки данных продуктов содержится набор ПО для разработчиков и администраторов баз данных:
- Postgres Studio — аналог phpPgAdmin;
- Postgres Plus Debugger — отладчик для кода на PL/pgSQL, интегрированный с предыдущим пакетом;
- Migration Studio — инструмент для автоматического преобразования баз данных из MySQL/Oracle в PostgreSQL.
Существуют и другие коммерческие продукты, созданные на базе PostgreSQL и дополняющие её различными функциями:
- 2ndQPostgres — продукт компании 2nd Quadrant[35];
- Fujitsu Enterprise Postgres — продукт компании Fujitsu[36].
Postgres Pro
правитьPostgres Pro компании Postgres Professional[37] — разрабатываемый в России дистрибутив, содержащий усовершенствования, впоследствии, как правило, поступающие в апстрим основного проекта. Данная версия PostgreSQL сертифицирована ФСТЭК[38] и рядом крупных российских организаций. В рамках российского импортозамещения рассматривается как замена Oracle[39][40][41].
Примечания
править- ↑ Out-of-cycle release scheduled for November 21, 2024 — 2024.
- ↑ https://www.postgresql.org/docs/current/history.html
- ↑ https://github.com/postgres/postgres
- ↑ The postgres Open Source Project on Open Hub: Languages Page — 2006.
- ↑ 1 2 3 4 5 6 https://www.postgresql.org/download/
- ↑ Часто Задаваемые Вопросы: Что такое PostgreSQL? Как произносится это название? Что такое Postgres? PostgreSQL wiki. Дата обращения: 10 февраля 2023. Архивировано 10 февраля 2023 года.
- ↑ «Appendix D. SQL Conformance» Архивная копия от 23 марта 2014 на Wayback Machine. PostgreSQL 9 Documentation Архивная копия от 8 июля 2014 на Wayback Machine. PostgreSQL Global Development Group. 2009 [1996]. Retrieved 2013-04-01.
- ↑ «SQL Conformance» Архивная копия от 21 июля 2014 на Wayback Machine. postgresql.org. 2013-04-04. Retrieved 2013-08-28.
- ↑ obartunov SQL/JSON standard-2016 conformance for PostgreSQL, Oracle, SQL Server and MySQL . ... (16 марта 2018). Дата обращения: 30 июня 2023. Архивировано 30 июня 2023 года.
- ↑ PostgreSQL Limits . www.postgresql.org. Дата обращения: 15 августа 2016. Архивировано 12 ноября 2019 года.
- ↑ PostgreSQL: Documentation: 11: Procedural Languages . www.postgresql.org. Дата обращения: 2 марта 2019. Архивировано 3 марта 2019 года.
- ↑ Versioning policy . PostgreSQL Global Development Group. Дата обращения: 4 октября 2018. Архивировано 4 апреля 2022 года.
- ↑ Vaas, Lisa (2002-12-02). "Databases Target Enterprises". eWeek. Дата обращения: 29 октября 2016.
- ↑ Krill, Paul (2003-11-20). "PostgreSQL boosts open source database". InfoWorld. Архивировано 6 ноября 2018. Дата обращения: 21 октября 2016.
- ↑ Krill, Paul (2005-01-19). "PostgreSQL open source database boasts Windows boost". InfoWorld. Архивировано 6 ноября 2018. Дата обращения: 2 ноября 2016.
- ↑ Weiss, Todd R. (2006-12-05). "Version 8.2 of open-source PostgreSQL DB released". Computerworld. Дата обращения: 17 октября 2016.
- ↑ Gilbertson, Scott (2008-02-05). "PostgreSQL 8.3: Open Source Database Promises Blazing Speed". Wired. Архивировано 16 марта 2017. Дата обращения: 17 октября 2016.
- ↑ Huber, Mathias (2009-07-02). "PostgreSQL 8.4 Proves Feature-Rich". Linux Magazine. Архивировано 9 июня 2020. Дата обращения: 17 октября 2016.
- ↑ Brockmeier, Joe Five Enterprise Features in PostgreSQL 9 . Linux.com. Linux Foundation (30 сентября 2010). Дата обращения: 6 февраля 2017. Архивировано 18 февраля 2021 года.
- ↑ Timothy Prickett Morgan (2011-09-12). "PostgreSQL revs to 9.1, aims for enterprise". The Register. Архивировано 6 ноября 2018. Дата обращения: 6 февраля 2017.
- ↑ PostgreSQL: PostgreSQL 9.2 released . www.postgresql.org (10 сентября 2012). Дата обращения: 5 апреля 2022. Архивировано 21 сентября 2020 года.
- ↑ Reintroducing Hstore for PostgreSQL . InfoQ. Дата обращения: 5 апреля 2022. Архивировано 16 июня 2021 года.
- ↑ Richard, Chirgwin (2016-01-07). "Say oops, UPSERT your head: PostgreSQL version 9.5 has landed". The Register. Архивировано 24 мая 2020. Дата обращения: 17 октября 2016.
- ↑ PostgreSQL: Documentation: 10: Chapter 31. Logical Replication . www.postgresql.org (12 августа 2021). Дата обращения: 5 апреля 2022. Архивировано 5 апреля 2022 года.
- ↑ PostgreSQL 11 Released (18 октября 2018). Дата обращения: 18 октября 2018. Архивировано 14 сентября 2020 года.
- ↑ PostgreSQLRelease Notes . Дата обращения: 18 октября 2018. Архивировано 26 октября 2018 года.
- ↑ "PostgreSQL: PostgreSQL 12 Released!". Postgresql News. 2019-10-03. Архивировано 24 сентября 2020. Дата обращения: 5 апреля 2022.
- ↑ PostgreSQL 13 Release Notes . www.postgresql.org (12 августа 2021). Дата обращения: 5 апреля 2022. Архивировано 5 апреля 2022 года.
- ↑ PostgreSQL 13 Released! www.postgresql.org (24 сентября 2020). Дата обращения: 5 апреля 2022. Архивировано 31 марта 2022 года.
- ↑ PostgreSQL 14 Release Notes . www.postgresql.org (11 ноября 2021). Дата обращения: 5 апреля 2022. Архивировано 25 марта 2022 года.
- ↑ PostgreSQL 14 Released! www.postgresql.org (30 сентября 2021). Дата обращения: 5 апреля 2022. Архивировано 31 марта 2022 года.
- ↑ PostgreSQL Achieves Coverity Quality Certification (англ.). PostgreSQL Global Development Group (24 июля 2005). — Новость о результатах сертификации качества. Дата обращения: 8 сентября 2009. Архивировано из оригинала 24 августа 2011 года.
- ↑ PostgreSQL derived databases . PostgreSQL Wiki. Дата обращения: 30 июля 2018. Архивировано 30 июля 2018 года.
- ↑ Подход к миграции баз данных с Oracle на EnterpriseDB . Бюро Соломатина (13 декабря 2010). — Подход к миграции баз данных с Oracle на EnterpriseDB. Дата обращения: 13 декабря 2010. Архивировано из оригинала 24 августа 2011 года. (недоступная ссылка с 07-03-2017 [2843 дня])
- ↑ 2ndQPostgres . Дата обращения: 8 ноября 2019. Архивировано 8 ноября 2019 года.
- ↑ Fujitsu Enterprise Postgres . Дата обращения: 8 ноября 2019. Архивировано 8 ноября 2019 года.
- ↑ Postgres Pro . Дата обращения: 8 ноября 2019. Архивировано 6 сентября 2019 года.
- ↑ Александр Маляревский. Виртуализация: тренды внутри тренда на российском рынке . CRN (27 июля 2021). Архивировано 30 января 2022 года.
- ↑ Константин Скурат. СУБДсидия в рост . www.comnews.ru (15 ноября 2021). Дата обращения: 27 октября 2023. Архивировано 30 января 2022 года.
- ↑ Денис Воейков. «Росатом» массово меняет СУБД Oracle и Microsoft на российскую Postgres Pro - CNews . CNews.ru. Дата обращения: 27 октября 2023. Архивировано 30 января 2022 года.
- ↑ Денис Воейков. «Гознак» переходит на российскую СУБД Postgres Pro - CNews . CNews.ru. Дата обращения: 27 октября 2023. Архивировано 30 января 2022 года.
Ссылки
править- Балдин Евгений. PostgreSQL — серия из шести статей, опубликованных в журнале Linux Format (2006—2007).
- Панченко Иван. PostgreSQL: вчера, сегодня, завтра . Открытые системы. СУБД, № 03, 2015 (20 июля 2015). Дата обращения: 27 октября 2023. Архивировано 31 марта 2022 года.
- Алексеев Александр. Серия статей о PostgreSQL — примеры использования физической и логической репликации, полнотекстового и пространственного поиска, автоматического восстановления после сбоев, написания расширений.