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

PostgreSQL ( / р с т ɡ г ɛ с ˌ к Ju ɛ л / ), [12] , также известный как Postgres , является свободным и открытым исходным кодом реляционной системы управления базами данных (СУБД) подчеркивает расширяемость и соответствие SQL - . Первоначально он назывался POSTGRES, имея в виду его происхождение как преемника базы данных Ingres, разработанной в Калифорнийском университете в Беркли . [13] [14]В 1996 году проект был переименован в PostgreSQL, чтобы отразить поддержку SQL . После обзора в 2007 году команда разработчиков решила сохранить имя PostgreSQL и псевдоним Postgres. [15]

PostgreSQL предлагает транзакции со свойствами атомарности, согласованности, изоляции, долговечности (ACID), автоматически обновляемые представления , материализованные представления , триггеры , внешние ключи и хранимые процедуры . [16] Он предназначен для обработки ряда рабочих нагрузок, от отдельных компьютеров до хранилищ данных или веб-сервисов с множеством одновременных пользователей . Это база данных по умолчанию для macOS Server [17] [18] [19], а также доступна для Windows , Linux ,FreeBSD и OpenBSD .

История [ править ]

PostgreSQL произошел от проекта Ingres в Калифорнийском университете в Беркли. В 1982 году лидер команды Ingres Майкл Стоунбрейкер покинул Беркли, чтобы создать собственную версию Ingres. [13] Он вернулся в Беркли в 1985 году и начал пост-Ingres проект по решению проблем с современными системами баз данных, которые стали все более очевидными в начале 1980-х. В 2014 году он получил премию Тьюринга за эти и другие проекты [20] и впервые примененные в них методы.

Новый проект POSTGRES был направлен на добавление минимального количества функций, необходимых для полной поддержки типов данных . [21] Эти функции включали возможность определять типы и полностью описывать отношения - что-то широко используемое, но полностью поддерживаемое пользователем. В POSTGRES база данных понимала отношения и могла извлекать информацию из связанных таблиц естественным образом, используя правила . ПОСТГРЭС использовал многие идеи Энгра, но не его код. [22]

Начиная с 1986 года в опубликованных статьях описывалась основа системы, а прототип был показан на конференции ACM SIGMOD 1988 года . Команда выпустила версию 1 для небольшого числа пользователей в июне 1989 года, а затем версию 2 с переписанной системой правил в июне 1990 года. Версия 3, выпущенная в 1991 году, снова переписала систему правил и добавила поддержку нескольких менеджеры хранения [23] и улучшенный механизм запросов. К 1993 году количество пользователей начало заваливать проект просьбами о поддержке и функциях. После выпуска версии 4.2 [24] 30 июня 1994 года - в первую очередь очистки - проект завершился. Беркли выпустил ПОСТГРЭС по лицензии Массачусетского технологического институтавариант, который позволил другим разработчикам использовать код для любых целей. В то время POSTGRES использовал интерпретатор языка запросов POSTQUEL под влиянием Ingres , который можно было интерактивно использовать с консольным приложением с именем monitor.

В 1994 году аспиранты Беркли Эндрю Ю и Джолли Чен заменили интерпретатор языка запросов POSTQUEL интерпретатором для языка запросов SQL, создав Postgres95. monitorКонсоль была также заменена psql. Ю и Чен объявили бета-тестерам первую версию (0.01) 5 мая 1995 года. Версия 1.0 Postgres95 была анонсирована 5 сентября 1995 года с более либеральной лицензией, которая позволяла свободно изменять программное обеспечение.

8 июля 1996 года Марк Фурнье из Hub.org Networking Services предоставил первый неуниверситетский сервер разработки для разработки с открытым исходным кодом. [3] При участии Брюса Момджяна и Вадима Б. Михеева началась работа по стабилизации кода, унаследованного от Беркли.

В 1996 году проект был переименован в PostgreSQL, чтобы отразить поддержку SQL. Онлайн-присутствие на веб-сайте PostgreSQL.org началось 22 октября 1996 года. [25] Первый выпуск PostgreSQL образовал версию 6.0 29 января 1997 года. С тех пор разработчики и добровольцы по всему миру поддерживали программное обеспечение как The PostgreSQL Global Development Group. . [2]

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

Управление многоверсионным параллелизмом (MVCC) [ править ]

PostgreSQL управляет параллелизмом посредством управления многоверсионным параллелизмом (MVCC), который дает каждой транзакции «моментальный снимок» базы данных, позволяя вносить изменения, не затрагивая другие транзакции. Это в значительной степени устраняет необходимость в блокировках чтения и гарантирует, что база данных поддерживает принципы ACID . PostgreSQL предлагает три уровня изоляции транзакций : фиксированное чтение, повторное чтение и сериализуемый. Поскольку PostgreSQL невосприимчив к грязному чтению, запрос уровня изоляции транзакции Read Uncommitted вместо этого обеспечивает фиксацию чтения. PostgreSQL поддерживает полную сериализуемость с помощью метода изоляции сериализуемых моментальных снимков (SSI). [26]

Хранение и репликация [ править ]

Репликация [ править ]

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

PostgreSQL включает встроенную синхронную репликацию [27], которая гарантирует, что для каждой транзакции записи мастер ждет, пока хотя бы один узел реплики не запишет данные в свой журнал транзакций. В отличие от других систем баз данных, надежность транзакции (асинхронной или синхронной) может быть указана для каждой базы данных, для каждого пользователя, для сеанса или даже для транзакции. Это может быть полезно для рабочих нагрузок, которые не требуют таких гарантий, и может не требоваться для всех данных, поскольку снижает производительность из-за требования подтверждения транзакции, достигающей синхронного резервного.

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

Синхронная репликация с несколькими мастерами не включена в ядро ​​PostgreSQL. Postgres-XC, основанный на PostgreSQL, обеспечивает масштабируемую синхронную репликацию с несколькими мастерами. [28] Он находится под той же лицензией, что и PostgreSQL. Связанный проект называется Postgres-XL . Postgres-R - еще один форк . [29] Двунаправленная репликация (BDR) - это асинхронная система репликации с несколькими мастерами для PostgreSQL. [30]

Такие инструменты, как repmgr, упрощают управление кластерами репликации.

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

  • Slony-I
  • Лондист, часть SkyTools (разработка Skype )
  • Bucardo multi-master replication (разработано Backcountry.com ) [31]
  • SymmetricDS с несколькими мастерами, многоуровневая репликация

YugabyteDB - это база данных, которая использует интерфейс PostgreSQL с бэкэндом, более похожим на NoSQL . Хотя ее можно рассматривать как другую базу данных, по сути, это PostgreSQL с другим сервером хранения. Он решает проблемы репликации с реализацией идей от Google Spanner . Такие базы данных называются NewSQL и включают , среди прочего, CockroachDB и TiDB .

Индексы [ править ]

PostgreSQL включает встроенную поддержку индексов обычных B-деревьев и хэш-таблиц , а также четыре метода доступа к индексам: обобщенные деревья поиска ( GiST ), обобщенные инвертированные индексы (GIN), GiST с разделением по пространству (SP-GiST) [32] и Block Индексы диапазонов (BRIN). Кроме того, могут быть созданы определяемые пользователем методы индексации, хотя это довольно сложный процесс. Индексы в PostgreSQL также поддерживают следующие функции:

  • Индексы выражения могут быть созданы с помощью индекса результата выражения или функции, а не просто значения столбца.
  • Частичные индексы , которые индексируют только часть таблицы, можно создать, добавив предложение WHERE в конец оператора CREATE INDEX. Это позволяет создать меньший индекс.
  • Планировщик может использовать несколько индексов вместе для удовлетворения сложных запросов, используя временные операции с растровым индексом в памяти (полезно для приложений хранилища данных для присоединения большой таблицы фактов к меньшим таблицам измерений, например, расположенным в схеме звезды ).
  • Индексирование k- ближайших соседей ( k -NN) (также называемое KNN-GiST [33] ) обеспечивает эффективный поиск «ближайших значений» к заданному, что полезно для поиска похожих слов или близких объектов или местоположений с геопространственными данными. Это достигается без исчерпывающего сопоставления значений.
  • Сканирование только индекса часто позволяет системе извлекать данные из индексов, даже не обращаясь к основной таблице.
  • В PostgreSQL 9.5 появились индексы диапазонов блоков (BRIN).

Схемы [ править ]

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

search_pathПараметр определяет порядок , в котором PostgreSQL проверяет схемы для неквалифицированных объектов (те без приставки схемы). По умолчанию он установлен в $user, public( $userотносится к текущему подключенному пользователю базы данных). Это значение по умолчанию может быть установлено на уровне базы данных или роли, но, поскольку это параметр сеанса, его можно свободно изменять (даже несколько раз) во время сеанса клиента, влияя только на этот сеанс.

Несуществующие схемы, перечисленные в search_path, автоматически пропускаются во время поиска объектов.

Новые объекты создаются в зависимости от того, какая действующая схема (существующая в настоящее время) появляется первой в search_path.

Типы данных [ править ]

Поддерживаются самые разные собственные типы данных , в том числе:

  • Логический
  • Произвольные точности Числовых
  • Символ (текст, varchar, char)
  • Двоичный
  • Дата / время (отметка времени / время с / без часового пояса, даты, интервала)
  • Деньги
  • Enum
  • Битовые строки
  • Тип текстового поиска
  • Композитный
  • HStore, хранилище ключей и значений с расширением в PostgreSQL [34]
  • Массивы (переменной длины и могут относиться к любому типу данных, включая текстовые и составные) до 1 ГБ в общем объеме хранилища
  • Геометрические примитивы
  • IPv4 и IPv6 - адрес
  • Блоки и MAC-адреса бесклассовой междоменной маршрутизации (CIDR)
  • XML, поддерживающий запросы XPath
  • Универсальный уникальный идентификатор (UUID)
  • Нотация объектов JavaScript ( JSON ) и более быстрый двоичный JSONB (не то же самое, что BSON [35] ).

Кроме того, пользователи могут создавать свои собственные типы данных, которые обычно можно сделать полностью индексируемыми с помощью инфраструктур индексации PostgreSQL - GiST, GIN, SP-GiST. Примеры включают типы данных географической информационной системы (ГИС) из проекта PostGIS для PostgreSQL.

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

Можно использовать тип данных, представляющий диапазон данных, называемый типами диапазона. Это могут быть дискретные диапазоны (например, все целые значения от 1 до 10) или непрерывные диапазоны (например, любое время между 10:00 и 11:00 ). Доступные встроенные типы диапазонов включают диапазоны целых чисел, большие целые числа, десятичные числа, отметки времени (с часовым поясом и без него) и даты.

Можно создать настраиваемые типы диапазонов, чтобы сделать доступными новые типы диапазонов, например диапазоны IP-адресов, использующие тип inet в качестве основы, или диапазоны с плавающей запятой, используя тип данных float в качестве основы. Типы диапазонов поддерживают включающие и исключающие границы диапазона с использованием символов [/ ]и (/ )соответственно. (например, [4,9)представляет все целые числа, начиная с 4 и заканчивая 9, но не включая 9.) Типы диапазонов также совместимы с существующими операторами, используемыми для проверки на перекрытие, включение, право на и т. д.

Пользовательские объекты [ править ]

Можно создавать новые типы почти всех объектов внутри базы данных, в том числе:

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

Наследование [ править ]

Таблицы можно настроить так, чтобы они наследовали свои характеристики от родительской таблицы. Данные в дочерние таблицы будут отображаться существовать в родительских таблиц, если данные не будут выбраны из родительской таблицы , используя только ключевое слово, то есть . Добавление столбца в родительскую таблицу приведет к тому, что этот столбец появится в дочерней таблице.SELECT * FROM ONLY parent_table;

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

По состоянию на 2010 год эта функция еще не полностью поддерживается - в частности, ограничения таблиц в настоящее время не наследуются. Все проверочные ограничения и ограничения, не равные NULL в родительской таблице, автоматически наследуются ее дочерними элементами. Другие типы ограничений (ограничения уникальности, первичного ключа и внешнего ключа) не наследуются.

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

Другие особенности хранилища [ править ]

  • Ссылочная целостность ограничение в том числе внешнего ключа ограничения, колонки ограничений и проверок строк
  • Двоичное и текстовое хранилище больших объектов
  • Табличные пространства
  • Сортировка по столбцам
  • Онлайн-резервное копирование
  • Восстановление на определенный момент времени, реализованное с использованием ведения журнала с упреждающей записью
  • Обновления на месте с помощью pg_upgrade для сокращения времени простоя (поддерживает обновления с 8.3.x [36] и более поздних версий )

Контроль и связь [ править ]

Оболочки сторонних данных [ править ]

PostgreSQL может подключаться к другим системам для получения данных через оболочки сторонних данных (FDW). [37] Они могут принимать форму любого источника данных, например файловой системы, другой системы управления реляционными базами данных (СУБД) или веб-службы. Это означает, что обычные запросы к базе данных могут использовать эти источники данных, как обычные таблицы, и даже объединять несколько источников данных вместе.

Интерфейсы [ править ]

Для подключения к приложениям PostgreSQL включает встроенные интерфейсы libpq (официальный интерфейс приложения C) и ECPG (встроенная система C). Сторонние библиотеки для подключения к PostgreSQL доступны для многих языков программирования , включая C ++ , [38] Java , [39] Python , [40] Node.js , [41] Go , [42] и Rust . [43]

Процедурные языки [ править ]

Процедурные языки позволяют разработчикам расширять базу данных пользовательскими подпрограммами (функциями), часто называемыми хранимыми процедурами . Эти функции могут использоваться для создания триггеров базы данных (функций, вызываемых при изменении определенных данных), а также для пользовательских типов данных и агрегатных функций . [44] Процедурные языки также можно вызывать без определения функции, используя команду DO на уровне SQL. [45]

Языки разделены на две группы: Процедуры, написанные на безопасных языках, изолированы и могут быть безопасно созданы и использованы любым пользователем. Процедуры, написанные на небезопасных языках, могут быть созданы только суперпользователями , поскольку они позволяют обходить ограничения безопасности базы данных, но также могут обращаться к источникам, внешним по отношению к базе данных. Некоторые языки, такие как Perl, предоставляют как безопасные, так и небезопасные версии.

PostgreSQL имеет встроенную поддержку трех процедурных языков:

  • Обычный SQL (безопасный). Более простые функции SQL могут быть расширены встроенными в вызывающий (SQL) запрос, что экономит накладные расходы на вызов функции и позволяет оптимизатору запросов «заглядывать внутрь» функции.
  • Procedural Language / PostgreSQL ( PL / pgSQL ) (безопасный), который напоминает процедурный язык Oracle Procedural Language for SQL ( PL / SQL ) и SQL / Persistent Stored Modules ( SQL / PSM ).
  • C (небезопасный), который позволяет загружать одну или несколько пользовательских разделяемых библиотек в базу данных. Функции, написанные на C, обеспечивают лучшую производительность, но ошибки в коде могут привести к сбою и потенциально повреждению базы данных. Большинство встроенных функций написано на C.

Кроме того, PostgreSQL позволяет загружать процедурные языки в базу данных через расширения. В PostgreSQL включены три языковых расширения для поддержки Perl , Python (по умолчанию используется прекращенный Python 2, даже в PostgreSQL 13; Python 3 также поддерживается по выбору plpython3u) [46] и Tcl . Существуют внешние проекты для добавления поддержки многих других языков [47], включая Java , JavaScript (PL / V8), R (PL / R), [48] Ruby и другие.

Триггеры [ править ]

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

Триггеры полностью поддерживаются и могут быть прикреплены к таблицам. Триггеры могут быть для столбцов и условными, в том смысле, что триггеры UPDATE могут нацеливаться на определенные столбцы таблицы, а триггерам можно указать выполнение при наборе условий, указанных в предложении WHERE триггера. Триггеры могут быть прикреплены к представлениям с помощью условия INSTEAD OF. Несколько триггеров запускаются в алфавитном порядке. Помимо вызова функций, написанных на родном PL / pgSQL, триггеры также могут вызывать функции, написанные на других языках, таких как PL / Python или PL / Perl.

Асинхронные уведомления [ править ]

PostgreSQL предоставляет асинхронную систему обмена сообщениями, доступ к которой осуществляется с помощью команд NOTIFY, LISTEN и UNLISTEN. Сеанс может выдать команду NOTIFY вместе с указанным пользователем каналом и дополнительной полезной нагрузкой, чтобы отметить происходящее конкретное событие. Другие сеансы могут обнаруживать эти события с помощью команды LISTEN, которая может прослушивать определенный канал. Эта функция может использоваться для самых разных целей, например, для сообщения другим сеансам информации об обновлении таблицы или для обнаружения отдельными приложениями, когда было выполнено определенное действие. Такая система исключает необходимость непрерывного опроса.приложениями, чтобы увидеть, не изменилось ли что-нибудь, и сократить ненужные накладные расходы. Уведомления являются полностью транзакционными, поскольку сообщения не отправляются до тех пор, пока транзакция, из которой они были отправлены, не зафиксирована. Это устраняет проблему отправки сообщений о выполняемом действии, которое затем откатывается.

Многие соединители для PostgreSQL обеспечивают поддержку этой системы уведомлений (включая libpq, JDBC, Npgsql, psycopg и node.js), поэтому ее могут использовать внешние приложения.

PostgreSQL может действовать как эффективный, постоянный сервер "pub / sub" или сервер заданий, комбинируя LISTEN с FOR UPDATE SKIP LOCKED, [49] комбинация, которая существует с PostgreSQL версии 9.5 [50] [51]

Правила [ править ]

Правила позволяют переписывать «дерево запросов» входящего запроса. «Правила перезаписи запросов» прикрепляются к таблице / классу и «перезаписывают» входящий DML (выбор, вставка, обновление и / или удаление) в один или несколько запросов, которые либо заменяют исходный оператор DML, либо выполняются в дополнение к нему. Повторная запись запроса происходит после синтаксического анализа оператора DML, но до планирования запроса.

Другие функции запросов [ править ]

  • Сделки
  • Полнотекстовый поиск
  • Взгляды
    • Материализованные представления [52]
    • Обновляемые представления [53]
    • Рекурсивные представления [54]
  • Внутреннее, внешнее (полное, левое и правое) и перекрестные соединения
  • Суб выбирает
    • Коррелированные подзапросы [55]
  • Регулярные выражения [56]
  • общие табличные выражения и доступные для записи общие табличные выражения
  • Зашифрованные соединения через Transport Layer Security (TLS); текущие версии не используют уязвимый SSL, даже с этой опцией конфигурации [57]
  • Домены
  • Точки сохранения
  • Двухфазная фиксация
  • Техника хранения негабаритных атрибутов (TOAST) используется для прозрачного хранения больших атрибутов таблиц (таких как большие вложения MIME или XML-сообщения) в отдельной области с автоматическим сжатием.
  • Встроенный SQL реализован с помощью препроцессора. Код SQL сначала пишется встроенным в код C. Затем код запускается через препроцессор ECPG, который заменяет SQL вызовами библиотеки кода. Затем код можно скомпилировать с помощью компилятора C. Встраивание работает также с C ++, но не распознает все конструкции C ++.

Модель параллелизма [ править ]

Сервер PostgreSQL основан на процессах (а не на потоках) и использует один процесс операционной системы на сеанс базы данных. Операционная система автоматически распределяет несколько сеансов по всем доступным ЦП. Начиная с PostgreSQL 9.6, многие типы запросов также можно распараллеливать между несколькими фоновыми рабочими процессами, используя преимущества нескольких процессоров или ядер. [58] Клиентские приложения могут использовать потоки и создавать несколько соединений с базой данных из каждого потока. [59]

Безопасность [ править ]

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

Функция SECURITY LABEL PostgreSQL (расширение стандартов SQL) обеспечивает дополнительную безопасность; со встроенным загружаемым модулем, который поддерживает обязательный контроль доступа (MAC) на основе меток на основе политики безопасности Linux с усиленной безопасностью (SELinux). [60] [61]

PostgreSQL изначально поддерживает большое количество внешних механизмов аутентификации, в том числе:

  • Пароль: SCRAM-SHA-256 (начиная с PostgreSQL 10 [62] ), MD5 или обычный текст.
  • Общий прикладной программный интерфейс служб безопасности (GSSAPI)
  • Интерфейс поставщика поддержки безопасности (SSPI)
  • Kerberos
  • Идентификатор (сопоставляет имя пользователя O / S, предоставленное сервером идентификатора, с именем пользователя базы данных)
  • Peer (сопоставляет имя локального пользователя с именем пользователя базы данных)
  • Облегченный протокол доступа к каталогам (LDAP)
    • Active Directory (AD)
  • РАДИУС
  • Сертификат
  • Подключаемый модуль аутентификации (PAM)

Методы GSSAPI, SSPI, Kerberos, однорангового узла, идентификатора и сертификата также могут использовать указанный файл «карты», в котором перечислены пользователи, соответствующие этой системе аутентификации, которым разрешено подключаться в качестве конкретного пользователя базы данных.

Эти методы указываются в файле конфигурации аутентификации на основе хоста кластера ( pg_hba.conf), который определяет, какие соединения разрешены. Это позволяет контролировать, какой пользователь может подключаться к какой базе данных, откуда они могут подключаться (IP-адрес, диапазон IP-адресов, доменный сокет), какая система аутентификации будет применяться, и должно ли соединение использовать безопасность транспортного уровня (TLS).

Соответствие стандартам [ править ]

PostgreSQL заявляет о высоком, но не полном соответствии стандарту SQL. Единственным исключением является обработка идентификаторов без кавычек, таких как имена таблиц или столбцов. В PostgreSQL они внутри сворачиваются до символов нижнего регистра [63], тогда как стандарт говорит, что идентификаторы без кавычек должны быть свёрнуты до верхнего регистра. Таким образом, Fooдолжно быть эквивалентно FOOне в fooсоответствии со стандартом.

Тесты и производительность [ править ]

Было проведено много неформальных исследований производительности PostgreSQL. [64] Улучшение производительности, направленное на улучшение масштабируемости, во многом началось с версии 8.1. Простые тесты между версией 8.0 и версией 8.4 показали, что последняя была более чем в 10 раз быстрее для рабочих нагрузок только для чтения и по крайней мере в 7,5 раз быстрее для рабочих нагрузок чтения и записи. [65]

Первый эталонный тест, соответствующий отраслевым стандартам и подтвержденный коллегами, был завершен в июне 2007 года с использованием сервера приложений Sun Java System Application Server (проприетарная версия GlassFish ) 9.0 Platform Edition, сервера Sun Fire на базе UltraSPARC T1 и PostgreSQL 8.2. [66] Этот результат 778.14 SPECjAppServer2004 JOPS @ Standard выгодно отличается от 874 JOPS @ Standard с Oracle 10 на качестве Itanium основанного HP-UX систему. [64]

В августе 2007 года Sun представила улучшенный результат теста SPECjAppServer2004 JOPS @ Standard, составивший 813,73 балла. С тестируемой системой по сниженной цене соотношение цена / производительность улучшилось с 84,98 долл. США / JOPS до 70,57 долл. США / JOPS. [67]

Конфигурация PostgreSQL по умолчанию использует только небольшой объем выделенной памяти для критических для производительности целей, таких как кэширование блоков базы данных и сортировка. Это ограничение в первую очередь связано с тем, что более старые операционные системы требовали изменений ядра, чтобы разрешить выделение больших блоков разделяемой памяти . [68] PostgreSQL.org предоставляет советы по основным рекомендуемым практикам производительности в вики . [69]

В апреле 2012 года Роберт Хаас из EnterpriseDB продемонстрировал линейную масштабируемость ЦП PostgreSQL 9.2 с использованием сервера с 64 ядрами. [70]

Matloob Khushi провел сравнительный анализ PostgreSQL 9.0 и MySQL 5.6.15 на предмет их способности обрабатывать геномные данные. В своем анализе производительности он обнаружил, что PostgreSQL извлекает перекрывающиеся области генома в восемь раз быстрее, чем MySQL, используя два набора данных по 80000 в каждом, формируя случайные участки ДНК человека. Вставка и загрузка данных в PostgreSQL также были лучше, хотя общие возможности поиска в обеих базах данных были почти одинаковыми. [71]

Платформы [ править ]

PostgreSQL доступен для следующих операционных систем: Linux (все последние дистрибутивы), 64-разрядные установщики x86 доступны и протестированы для macOS (OS X) [19] версии 10.6 и новее - Windows (с установщиками доступны и протестированы для 64-разрядной Windows. Server 2019 и 2016; некоторые старые версии PostgreSQL протестированы до Windows 2012 R1 , [72] в то время как для PostgreSQL версии 10 и старше доступен и протестирован 32-разрядный установщик до 32-разрядной версии Windows 2008 R1; компилируется, например, Visual Studio , от версии 2013 до последней версии 2019) - FreeBSD , OpenBSD, [73] NetBSD , AIX , HP-UX , Solaris и UnixWare ; и официально не тестировались: DragonFly BSD , BSD / OS , IRIX , OpenIndiana , [74] OpenSolaris , OpenServer и Tru64 UNIX . Большинство других Unix-подобных систем также могут работать; самая современная вообще поддержка.

PostgreSQL работает на любой из следующих архитектур набора команд : x86 и x86-64 в Windows XP (или новее) и других операционных системах; они поддерживаются кроме Windows: IA-64 Itanium (внешняя поддержка HP-UX), PowerPC , PowerPC 64, S / 390 , S / 390x , SPARC , SPARC 64, ARMv8 -A ( 64-бит ) [75] и более старые ARM ( 32-разрядные , включая более старые, такие как ARMv6 в Raspberry Pi [76] ), MIPS, MIPSel и PA-RISC . Также было известно, что он работает на некоторых других платформах (хотя не тестировался годами, то есть для последних версий). [77]

Администрирование базы данных [ править ]

Интерфейсы с открытым исходным кодом и инструменты для администрирования PostgreSQL включают:

psql
Основным интерфейсом для PostgreSQL является программа psql командной строки , которую можно использовать для прямого ввода SQL-запросов или их выполнения из файла. Кроме того, psql предоставляет ряд мета-команд и различных функций, подобных оболочке, для облегчения написания сценариев и автоматизации широкого спектра задач; например, завершение имен объектов с помощью табуляции и синтаксиса SQL.
pgAdmin
Пакет pgAdmin - это бесплатный инструмент администрирования с графическим пользовательским интерфейсом (GUI) с открытым исходным кодом для PostgreSQL, который поддерживается на многих компьютерных платформах. [78] Программа доступна более чем на десятке языков. Первый прототип, названный pgManager, был написан для PostgreSQL 6.3.2 с 1998 года, а в последующие месяцы переписан и выпущен как pgAdmin под лицензией GNU General Public License (GPL). Второе воплощение (названное pgAdmin II) было полностью переписанным, впервые выпущенным 16 января 2002 года. Третья версия, pgAdmin III, первоначально была выпущена под лицензией Artistic License, а затем выпущена под той же лицензией, что и PostgreSQL. В отличие от предыдущих версий, написанных на Visual Basic , pgAdmin III написан на C ++ с использованиемИнфраструктура wxWidgets [79], позволяющая ему работать в большинстве распространенных операционных систем. Инструмент запросов включает язык сценариев pgScript для поддержки задач администрирования и разработки. В декабре 2014 года Дейв Пейдж, основатель проекта pgAdmin и основной разработчик, [80] объявил, что с переходом к веб-моделям началась работа над pgAdmin 4 с целью облегчить развертывание в облаке. [81] В 2016 году был выпущен pgAdmin 4. Бэкэнд pgAdmin 4 был написан на Python с использованием фреймворка Flask и Qt . [82]
phpPgAdmin
phpPgAdmin - это веб-инструмент администрирования PostgreSQL, написанный на PHP и основанный на популярном интерфейсе phpMyAdmin, изначально написанном для администрирования MySQL . [83]
Студия PostgreSQL
PostgreSQL Studio позволяет пользователям выполнять важные задачи разработки баз данных PostgreSQL с веб-консоли. PostgreSQL Studio позволяет пользователям работать с облачными базами данных без необходимости открывать брандмауэры. [84]
TeamPostgreSQL
Управляемый AJAX / JavaScript веб-интерфейс для PostgreSQL. Позволяет просматривать, поддерживать и создавать данные и объекты базы данных через веб-браузер. Интерфейс предлагает редактор SQL с вкладками с автозаполнением, виджеты редактирования строк, навигацию по внешнему ключу между строками и таблицами, управление избранным для часто используемых сценариев, а также другие функции. Поддерживает SSH как для веб-интерфейса, так и для соединений с базой данных . Доступны установщики для Windows, Macintosh и Linux, а также простой кроссплатформенный архив, запускаемый из сценария. [85]
LibreOffice, OpenOffice.org
LibreOffice и OpenOffice.org Base можно использовать в качестве интерфейса для PostgreSQL. [86] [87]
pgBadger
Анализатор журналов pgBadger PostgreSQL генерирует подробные отчеты из файла журнала PostgreSQL. [88]
pgDevOps
pgDevOps - это набор веб-инструментов для установки и управления несколькими версиями PostgreSQL, расширений и компонентов сообщества, разработки SQL-запросов, мониторинга запущенных баз данных и поиска проблем с производительностью. [89]
Администратор
Adminer - это простой веб-инструмент администрирования PostgreSQL и других, написанный на PHP.
pgBackRest
pgBackRest - это инструмент резервного копирования и восстановления для PostgreSQL, который обеспечивает поддержку полного, дифференциального и инкрементного резервного копирования. [90]
pgaudit
pgaudit - это расширение PostgreSQL, которое обеспечивает подробное ведение журнала аудита сеанса и / или объекта с помощью стандартной функции ведения журнала, предоставляемой PostgreSQL. [91]
Wal-e
Wal-e - это инструмент резервного копирования и восстановления для PostgreSQL, который обеспечивает поддержку физических (основанных на WAL) резервных копий, написанных на Python [92]

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

Известные пользователи [ править ]

Известные организации и продукты, использующие PostgreSQL в качестве основной базы данных, включают:

  • В 2009 году сайт социальной сети Myspace использовал базу данных nCluster от Aster Data Systems для хранения данных, которая была построена на немодифицированном PostgreSQL. [93] [94]
  • Geni.com использует PostgreSQL в качестве своей основной генеалогической базы данных. [95]
  • OpenStreetMap , совместный проект по созданию бесплатной редактируемой карты мира. [96]
  • Afilias , реестры доменов для .org , .info и других. [97] [98]
  • Многопользовательские онлайн-игры Sony Online . [99]
  • BASF , торговая платформа для портала агробизнеса. [100]
  • Социальный новостной сайт Reddit . [101]
  • Приложение Skype VoIP, центральные бизнес- базы данных. [102]
  • Sun xVM , пакет Sun для виртуализации и автоматизации центров обработки данных. [103]
  • MusicBrainz , открытая музыкальная онлайн-энциклопедия. [104]
  • Международная космическая станция - для сбора телеметрических данных на орбите и скопировать его на землю. [105]
  • Социальная сеть MyYearbook . [106]
  • Instagram , мобильный сервис для обмена фотографиями. [107]
  • Disqus , онлайн-сервис для обсуждения и комментирования. [108]
  • TripAdvisor , туристический информационный сайт, содержащий в основном пользовательский контент. [109]
  • Яндекс , российская интернет-компания, перешла на сервис Яндекс.Почта с Oracle на Postgres. [110]
  • Amazon Redshift , часть AWS, системы онлайновой аналитической обработки данных (OLAP), основанной на модификациях Postgres от ParAccel .
  • Национальная метеорологическая служба (NWS) Национального управления океанических и атмосферных исследований (NOAA) , интерактивная система подготовки прогнозов (IFPS), система, которая объединяет данные с метеорологических радаров NEXRAD , наземных и гидрологических систем для построения подробных локализованных моделей прогнозов. [98] [111]
  • Национальная служба погоды Соединенного Королевства , Met Office , начала замену Oracle на PostgreSQL в рамках стратегии по развертыванию большего количества технологий с открытым исходным кодом. [111] [112]
  • WhitePages.com использовал Oracle и MySQL , но когда дело дошло до перемещения основных каталогов внутри компании, он обратился к PostgreSQL. Поскольку WhitePages.com необходимо объединять большие наборы данных из нескольких источников, способность PostgreSQL загружать и индексировать данные с высокой скоростью была ключом к его решению использовать PostgreSQL. [98]
  • FlightAware , сайт отслеживания рейсов. [113]
  • Grofers , онлайн-сервис доставки продуктов. [114]
  • The Guardian перешел с MongoDB на PostgreSQL в 2018 году. [115]

Реализации службы [ править ]

Некоторые известные производители предлагают PostgreSQL как программное обеспечение как услугу :

  • Heroku , платформа как сервис - провайдер, поддерживает PostgreSQL с самого начала в 2007 году [116] Они предлагают стоимость добавить функции , такие как полная база данных откат (возможность восстановления базы данных из любого заданного времени), [117] , который на основе WAL-E, программного обеспечения с открытым исходным кодом, разработанного Heroku. [118]
  • В январе 2012 года EnterpriseDB выпустила облачную версию PostgreSQL и собственного проприетарного сервера Postgres Plus Advanced Server с автоматическим выделением ресурсов для аварийного переключения, репликации, балансировки нагрузки и масштабирования. Он работает на Amazon Web Services . [119] С 2015 года Postgres Advanced Server предлагается в качестве ApsaraDB для PPAS, реляционной базы данных как службы в Alibaba Cloud. [120]
  • VMware предлагает vFabric Postgres (также называемый vPostgres [121] ) для частных облаков на VMware vSphere с мая 2012 года. [122] Компания объявила об окончании доступности (EOA) продукта в 2014 году. [123]
  • В ноябре 2013 года Amazon Web Services объявила о добавлении PostgreSQL в свое предложение службы реляционных баз данных . [124] [125]
  • В ноябре 2016 года Amazon Web Services объявила о добавлении совместимости с PostgreSQL к своим облачным управляемым базам данных Amazon Aurora . [126]
  • В мае 2017 года Microsoft Azure анонсировала Базы данных Azure для PostgreSQL [127]
  • В мае 2019 года Alibaba Cloud анонсировала PolarDB для PostgreSQL. [128]
  • Платформа Jelastic Multicloud как услуга обеспечивает поддержку PostgreSQL на основе контейнеров с 2011 года. Они предлагают автоматическую асинхронную репликацию PostgreSQL «главный-подчиненный», доступную на торговой площадке . [129]
  • В июне 2019 года IBM Cloud анонсировала IBM Cloud Hyper Protect DBaaS для PostgreSQL . [130]
  • В сентябре 2020 года Crunchy Data анонсировала Crunchy Bridge . [131]

История выпусков [ править ]

Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Будущий выпуск

См. Также [ править ]

  • Сравнение систем управления реляционными базами данных
  • Масштабируемость базы данных
  • Список баз данных, использующих MVCC
  • LLVM (llvmjit - это JIT-движок, используемый PostgreSQL)
  • Соответствие SQL

Ссылки [ править ]

  1. ^ "PostgreSQL" . Проверено 21 сентября 2019 года . PostgreSQL: самая продвинутая в мире реляционная база данных с открытым исходным кодом
  2. ^ a b «Профили авторов» . Группа глобального развития PostgreSQL . Проверено 14 марта 2017 года .
  3. ^ a b «С Днем Рождения, PostgreSQL!» . Группа глобального развития PostgreSQL. 8 июля 2008 г.
  4. ^ "PostgreSQL 13.2, 12.6, 11.11, 10.16, 9.6.21 и 9.5.25 выпущен!" . Проверено 11 февраля 2021 года .
  5. ^ «PostgreSQL: Загрузки» . Проверено 12 апреля 2019 года .
  6. ^ a b «Лицензия» . Группа глобального развития PostgreSQL . Проверено 20 сентября 2010 года .
  7. ^ "Лицензия PostgreSQL одобрена OSI" . Crynwr. 18 февраля 2010 года в архив с оригинала на 8 августа 2016 года . Проверено 18 февраля 2010 года .
  8. ^ a b «Лицензия OSI PostgreSQL» . Инициатива открытого исходного кода. 20 февраля 2010 . Проверено 20 февраля 2010 года .
  9. ^ "Debian - Подробная информация о пакете postgresql в sid" . packages.debian.org . Проверено 25 января 2021 года .
  10. ^ «Лицензирование: Основное» . FedoraProject .
  11. ^ "PostgreSQL" . fsf.org .
  12. ^ "Аудио образец, 5.6k MP3" .
  13. ^ a b Stonebraker, M .; Роу, штат Луизиана (май 1986 г.). Дизайн ПОСТГРЭС (PDF) . Proc. 1986 Конференция ACM SIGMOD по управлению данными. Вашингтон, округ Колумбия . Проверено 17 декабря 2011 года .
  14. ^ «PostgreSQL: История» . Группа глобального развития PostgreSQL. Архивировано из оригинального 26 марта 2017 года . Проверено 27 августа 2016 года .
  15. ^ «Название проекта - заявление основной команды» . archives.postgresql.org. 16 ноября 2007 . Проверено 16 ноября 2007 года .
  16. ^ "Что такое PostgreSQL?" . Документация по PostgreSQL 9.3.0 . Группа глобального развития PostgreSQL . Проверено 20 сентября 2013 года .
  17. ^ «OS X Lion Server - Технические характеристики» . 4 августа 2011 . Проверено 12 ноября 2011 года . Веб-хостинг [..] PostgreSQL
  18. ^ «Lion Server: MySQL не включен» . 4 августа 2011 . Проверено 12 ноября 2011 года .
  19. ^ a b «Пакеты Mac OS X» . Группа глобального развития PostgreSQL . Проверено 27 августа 2016 года .
  20. ^ "Майкл Стоунбрейкер - лауреат премии AM Тьюринга" . amturing.acm.org . Проверено 20 марта 2018 года . Методы, впервые примененные в Postgres, были широко реализованы [...] Стоунбрейкер - единственный обладатель премии Тьюринга, который занимался серийным предпринимательством в чем-либо подобном этому масштабу, что дает ему отличительный взгляд на академический мир.
  21. ^ Stonebraker, M .; Роу, Л.А. Модель данных POSTGRES (PDF) . Материалы 13-й Международной конференции по очень большим базам данных. Брайтон, Англия: Издательство Морган Кауфманн. С. 83–96. ISBN  0-934613-46-X.
  22. ^ Павел Stehule (9 июня 2012). "Historie projektu PostgreSQL" (на чешском языке).
  23. ^ Краткая история PostgreSQL «Версия 3 появилась в 1991 году и добавила поддержку нескольких менеджеров хранилища, улучшенного исполнителя запросов и переписанной системы правил». . postgresql.org . The PostgreSQL Global Development Group , последнее посещение - 18 марта 2020 г.
  24. ^ "Университетский ПОСТГРЭС, Версия 4.2" . 26 июля 1999 г.
  25. ^ Пейдж, Дэйв (7 апреля 2015 г.). "Re: 20-летие PostgreSQL?" . pgsql-advacy (список рассылки) . Проверено 9 апреля 2015 года .
  26. ^ Дэн РК Порты; Кевин Гриттнер (2012). «Сериализуемая изоляция моментальных снимков в PostgreSQL» (PDF) . Труды эндаумента VLDB . 5 (12): 1850–1861. arXiv : 1208.4179 . Bibcode : 2012arXiv1208.4179P . DOI : 10.14778 / 2367502.2367523 .
  27. ^ PostgreSQL 9.1 с синхронной репликацией (новости), H Online
  28. ^ "Страница проекта Postgres-XC" (веб-сайт). Postgres-XC. Архивировано из оригинала на 1 июля 2012 года.
  29. ^ «Postgres-R: система репликации базы данных для PostgreSQL» . Группа глобального развития Postgres. Архивировано из оригинального 29 марта 2010 года . Проверено 27 августа 2016 года .
  30. ^ "Postgres-BDR" . 2ndQuadrant Ltd . Проверено 27 августа 2016 года .
  31. Марит Фишер (10 ноября 2007 г.). «Backcountry.com наконец-то вернул что-то сообществу открытого исходного кода» (пресс-релиз). Backcountry.com. Архивировано из оригинального 26 декабря 2010 года.
  32. ^ Бартунов, О; Сигаев, Т (май 2011). SP-GiST - новый фреймворк для индексирования PostgreSQL (PDF) . PGCon 2011. Оттава, Канада . Проверено 31 января 2016 года .
  33. ^ Бартунов, О; Сигаев, Т (май 2010). Поиск K-ближайшего соседа для PostgreSQL (PDF) . PGCon 2010. Оттава, Канада . Проверено 31 января 2016 года .
  34. ^ "PostgreSQL, база данных NoSQL | Linux Journal" . www.linuxjournal.com .
  35. ^ Geoghegan, Питер (23 марта 2014). «Что я думаю о jsonb» .
  36. ^ "PostgreSQL: Документация: 9.0: pg_upgrade" . www.postgresql.org . Проверено 9 июня 2020 года .
  37. ^ ОБЕ, Regina; Сюй, Лео С. (2012). «10: Репликация и внешние данные». PostgreSQL: все готово (1-е изд.). Севастополь, Калифорния: O'Reilly Media, Inc. стр. 129. ISBN 978-1-4493-2633-3. Проверено 17 октября, 2016 . Оболочки сторонних данных (FDW) [...] - это механизмы запроса внешних источников данных. В PostgreSQL 9.1 появилась эта функция, совместимая со стандартами SQL / MED .
  38. ^ "libpqxx" . Проверено 4 апреля 2020 года .
  39. ^ "Драйвер PostgreSQL JDBC" . Проверено 4 апреля 2020 года .
  40. ^ "PostgreSQL + Python | Psycopg" . initd.org .
  41. ^ "узел-постгрес" . Проверено 4 апреля 2020 года .
  42. ^ "Драйверы базы данных SQL" . Перейти в вики . golang.org . Проверено 22 июня 2015 года .
  43. ^ "Ржавчина-Постгрес" . Проверено 4 апреля 2020 года .
  44. ^ "Серверное программирование" . Документация PostgreSQL . Проверено 19 мая 2019 года .
  45. ^ "ДЕЛАТЬ" . Документация PostgreSQL . Проверено 19 мая 2019 года .
  46. ^ «PL / Python - процедурный язык Python» . Документация PostgreSQL . Проверено 25 января 2021 года .
  47. ^ «Процедурные языки» . postgresql.org. 31 марта 2016 . Проверено 7 апреля 2016 года .
  48. ^ "PL \ R Github Repo" .
  49. ^ Шартье, Колин. «Уловка системного дизайна: Postgres - отличный паб-сервер и сервер вакансий» . Блог LayerCI . Проверено 24 ноября 2019 года .
  50. ^ "Выпуск 9.5" . postgresql.org .
  51. ^ Рингер, Крейг. "Для чего ЗАПРЕЩЕНО ЗАПРЕЩЕНО в PostgreSQL 9.5?" . 2-й квадрант . Проверено 24 ноября 2019 года .
  52. ^ "Добавить отношения материализованного представления" . 4 марта 2013 . Проверено 4 марта 2013 года .
  53. ^ «Поддержка автоматически обновляемых представлений» . 8 декабря 2012 . Проверено 8 декабря 2012 года .
  54. ^ "Добавить синтаксис CREATE RECURSIVE VIEW" . 1 февраля 2013 . Проверено 28 февраля 2013 года .
  55. ^ Momjian, Брюс (2001). «Подзапросы» . PostgreSQL: Введение и концепции . Эддисон-Уэсли. ISBN 0-201-70331-9. Архивировано из оригинала 9 августа 2010 года . Проверено 25 сентября 2010 года .
  56. Бернье, Роберт (2 февраля 2006 г.). «Использование регулярных выражений в PostgreSQL» . O'Reilly Media . Проверено 25 сентября 2010 года .
  57. ^ «Несколько коротких заметок о PostgreSQL и POODLE» . hagander.net .
  58. ^ Berkus, Джош (2 июня 2016). «PostgreSQL 9.6 Beta и PGCon 2016» . LWN.net .
  59. ^ "FAQ - PostgreSQL wiki" . wiki.postgresql.org . Проверено 13 апреля 2017 года .
  60. ^ "Документация SEPostgreSQL - PostgreSQL wiki" . wiki.postgresql.org .
  61. ^ "NB SQL 9.3 - SELinux Wiki" . selinuxproject.org .
  62. ^ «Документация PostgreSQL 10: Приложение E. Примечания к выпуску» .
  63. ^ "Чувствительность идентификаторов к регистру" . Группа глобального развития PostgreSQL.
  64. ^ a b Беркус, Джош (6 июля 2007 г.). «PostgreSQL публикует первый настоящий тест» . Архивировано из оригинала 12 июля 2007 года . Проверено 10 июля 2007 года .
  65. Вильмос, Дьёрдь (29 сентября 2009 г.). «История PostgreSQL» . Проверено 28 августа 2010 года .
  66. ^ "Результат SPECjAppServer2004" . СПЕЦ . 6 июля 2007 . Проверено 10 июля 2007 года .
  67. ^ "Результат SPECjAppServer2004" . СПЕЦ . 4 июля 2007 . Проверено 1 сентября 2007 года .
  68. ^ «Управление ресурсами ядра» . Руководство по PostgreSQL . PostgreSQL.org . Проверено 12 ноября 2011 года .
  69. Грег Смит (15 октября 2010 г.). PostgreSQL 9.0 Высокая производительность . Packt Publishing . ISBN 978-1-84951-030-1.
  70. Роберт Хаас (3 апреля 2012 г.). "Я сказал 32 ядра? Как насчет 64?" . Проверено 8 апреля 2012 года .
  71. ^ Khushi, Matloob (июнь 2015). «Бенчмаркинг производительности базы данных для геномных данных». J Cell Biochem . 116 (6): 877–83. arXiv : 2008.06835 . DOI : 10.1002 / jcb.25049 . PMID 25560631 . 
  72. ^ «PostgreSQL: установщики Windows» . www.postgresql.org . Проверено 14 октября 2019 года .
  73. ^ "postgresql-client-10.5p1 - СУБД PostgreSQL (клиент)" . Порты OpenBSD . 4 октября 2018 . Проверено 10 октября 2018 года .
  74. ^ "Примечания к выпуску oi_151a" . OpenIndiana . Проверено 7 апреля 2012 года .
  75. ^ "AArch64 планирует BoF на DebConf" . debian.org .
  76. Соуза, Рубенс (17 июня 2015 г.). «Шаг 5 (обновление): установка PostgreSQL на мои Raspberry Pi 1 и 2» . Малина PG . Проверено 27 августа 2016 года .
  77. ^ «Поддерживаемые платформы» . Группа глобального развития PostgreSQL . Проверено 6 апреля 2012 года .
  78. ^ "pgAdmin: инструменты администрирования и управления PostgreSQL" . сайт . Проверено 12 ноября 2011 года .
  79. ^ «Debian - Подробная информация о пакете pgadmin3 в jessie» . Проверено 10 марта 2017 года .
  80. ^ "Команда разработчиков pgAdmin" . pgadmin.org . Проверено 22 июня 2015 года .
  81. Дэйв, Пейдж (7 декабря 2014 г.). «История pgAdmin» . Блог Дэйва Postgres . pgsnake.blogspot.co.uk . Проверено 7 декабря 2014 года .
  82. ^ "pgAdmin 4 README" . Проверено 15 августа 2018 года .
  83. ^ Проект phpPgAdmin (25 апреля 2008 г.). «О phpPgAdmin» . Проверено 25 апреля 2008 года .
  84. ^ PostgreSQL Studio (9 октября 2013 г.). «О PostgreSQL Studio» . Архивировано из оригинального 7 -го октября 2013 года . Проверено 9 октября 2013 года .
  85. ^ "Сайт TeamPostgreSQL" . 3 октября 2013 . Проверено 3 октября 2013 года .
  86. ^ oooforum.org (10 января 2010 г.). «Back Ends для OpenOffice» . Архивировано из оригинального 28 сентября 2011 года . Проверено 5 января 2011 года .
  87. ^ libreoffice.org (14 октября 2012 г.). «Базовые особенности» . Архивировано из оригинала на 7 января 2012 года . Проверено 14 октября 2012 года .
  88. Грег Смит; Роберт Трит и Кристофер Браун. «Настройка вашего сервера PostgreSQL» . Вики . PostgreSQL.org . Проверено 12 ноября 2011 года .
  89. ^ "pgDevOps" . BigSQL.org . Архивировано из оригинала на 1 апреля 2017 года . Проверено 4 мая 2017 года .
  90. ^ "pgbackrest README" .
  91. ^ "pgaudit README" .
  92. ^ "wal-e README" .
  93. ^ Эммануэль Cecchet (21 мая 2009). Создание складов PetaByte с использованием немодифицированного PostgreSQL (PDF) . PGCon 2009 . Проверено 12 ноября 2011 года .
  94. ^ «MySpace.com масштабирует аналитику для всех своих друзей» (PDF) . тематическое исследование. Данные Aster. 15 июня 2010 г. Архивировано 14 ноября 2010 г. (PDF) из оригинала . Проверено 12 ноября 2011 года .
  95. ^ "Отключение на последних выходных" . Блог . Geni. 1 августа 2011 г.
  96. ^ «База данных» . Вики . OpenStreetMap.
  97. ^ Аффилированный домен PostgreSQL .ORG , Австралия: Computer World
  98. ^ a b c W. Джейсон Гилмор; RH Treat (2006). Начиная с PHP и PostgreSQL 8: от новичка до профессионала . Апресс. ISBN 978-1-43020-136-6. Проверено 30 августа 2017 года .
  99. ^ Sony Online предпочитает базу данных с открытым исходным кодом, а не Oracle , Computer World
  100. ^ "Пример использования PostgreSQL группы веб-коммерции" (PDF) (изд. 1.2). PostgreSQL.
  101. ^ «Обзор архитектуры» . Вики по программному обеспечению Reddit . Reddit. 27 марта 2014 . Проверено 25 ноября 2014 года .
  102. ^ Пихлак, Мартин. «PostgreSQL @Skype» (PDF) . wiki.postgresql.org . Проверено 16 января 2019 года .
  103. ^ "Сколько вы платите за свою базу данных?" . Блог Sun Microsystems. 2007. Архивировано из оригинала 7 марта 2009 года . Проверено 14 декабря 2007 года .
  104. ^ "База данных - MusicBrainz" . MusicBrainz Wiki . Проверено 5 февраля 2011 года .
  105. ^ Duncavage, Daniel P (13 июля 2010). «НАСА нужна помощь Postgres-Nagios» .
  106. ^ Рой, Гэвин М (2010). «PostgreSQL на myYearbook.com» (обсуждение). Восток США: конференция PostgreSQL. Архивировано из оригинального 27 июля 2011 года.
  107. ^ «Поддержание Instagram с более чем миллионом новых пользователей за двенадцать часов» . Instagram-engineering.tumblr.com. 17 мая 2011 . Проверено 7 июля 2012 года .
  108. ^ "Postgres at Disqus" . Проверено 24 мая 2013 года .
  109. Келли, Мэтью (27 марта 2015 г.). В сердце гиганта: Postgres на сайте TripAdvisor . PGConf США 2015. Архивировано из оригинала 23 июля 2015 года . Проверено 23 июля 2015 года .( Презентационное видео )
  110. ^ «Успешный переход Яндекс.Почты с Oracle на Postgres [pdf]» . Новости хакеров: news.ycombinator.com . Проверено 28 сентября 2016 года .
  111. ^ а б С. Риггс; Г. Чолли; Х. Кросинг; Дж. Бартолини (2015). Поваренная книга администратора PostgreSQL 9 - второе издание . Packt. ISBN 978-1-84951-906-9. Проверено 5 сентября 2017 года .
  112. ^ "Met Office меняет Oracle на PostgreSQL" . computerweekly.com . 17 июня 2014 . Проверено 5 сентября 2017 года .
  113. ^ «Программное обеспечение с открытым исходным кодом» . FlightAware . Проверено 22 ноября 2017 года .
  114. ^ «Ansible at Grofers (Часть 2) - Управление PostgreSQL» . Lambda - Технический блог Grofers . 28 февраля 2017 года . Проверено 5 сентября 2018 года .
  115. ^ МакМэхон, Филип; Киореянка Мария-Ливия; Коулман, Сьюзи; Аскулум, Акаш (30 ноября 2018 г.). «Цифровой блог: до свидания, Монго, привет, Postgres» . Хранитель . ISSN 0261-3077 . 
  116. Алекс Уильямс (1 апреля 2013 г.). «Heroku принудительно обновляет клиентов, чтобы исправить критическую дыру в безопасности PostgreSQL» . TechCrunch .
  117. Барб Дэрроу (11 ноября 2013 г.). «Heroku запускает Postgres с помощью отката базы данных и упреждающих предупреждений» . ГигаОМ.
  118. ^ Craig Kerstiens (26 сентября 2013). «WAL-E и непрерывная защита с помощью Heroku Postgres» . Блог Heroku.
  119. ^ «EnterpriseDB предлагает облачную базу данных Postgres Plus» . Techweekeurope.co.uk. 27 января 2012 . Проверено 7 июля 2012 года .
  120. ^ «Alibaba Cloud расширяет техническое партнерство с EnterpriseDB» . Milestone Partners . 26 сентября 2018 . Проверено 9 июня 2020 года .
  121. ^ О'Догерти, Пол; Асселин, Стефан (2014). «3: Архитектура VMware Workspace». VMware Horizon Suite: создание служб для конечных пользователей . VMware Press Technology. Река Аппер Сэдл, Нью-Джерси: VMware Press. п. 65. ISBN 978-0-13-347910-2. Проверено 19 сентября 2016 года . Помимо версии PostgreSQL с открытым исходным кодом, VMware предлагает vFabric Postgres или vPostgres. vPostgres - это виртуальное устройство PostgreSQL, настроенное для виртуальных сред.
  122. Аль Сарджент (15 мая 2012 г.). «Представляем VMware vFabric Suite 5.1: автоматическое развертывание, новые компоненты и поддержка открытого исходного кода» . Блоги VMware.
  123. ^ https://www.vmware.com/products/vfabric-postgres.html
  124. Джефф (14 ноября 2013 г.). «Amazon RDS для PostgreSQL - теперь доступен» . Блог Amazon Web Services.
  125. Алекс Уильямс (14 ноября 2013 г.). «PostgreSQL теперь доступен в службе реляционных баз данных Amazon» . TechCrunch .
  126. ^ «Обновление Amazon Aurora - Совместимость с PostgreSQL» . Блог AWS . 30 ноября 2016 . Проверено 1 декабря 2016 года .
  127. ^ «Объявление базы данных Azure для PostgreSQL» . Блог Azure . Проверено 19 июня 2019 года .
  128. ^ https://developpaper.com/aliyun-polardb-released-major-updates-to-support-one-click-migration-of-databases-such-as-oracle-to-the-cloud/
  129. ^ «Асинхронная репликация главного-подчиненного баз данных PostgreSQL в один клик» . DZone . Проверено 26 мая 2017 года .
  130. ^ «Документация по IBM Cloud Hyper Protect DBaaS для PostgreSQL» . cloud.ibm.com . Проверено 24 июня 2020 года .
  131. ^ «Crunchy Data продолжает поддерживать PostgreSQL с выпуском Crunchy Bridge» . 18 сентября 2020.
  132. ^ «Политика управления версиями» . Группа глобального развития PostgreSQL . Проверено 4 октября 2018 года .
  133. ^ Vaas, Лиза (2 декабря 2002). "Базы данных для предприятий" . eWeek . Проверено 29 октября, 2016 .
  134. ^ Криль, Пол (20 ноября 2003). «PostgreSQL расширяет базу данных с открытым исходным кодом» . InfoWorld . Проверено 21 октября 2016 года .
  135. ^ Криль, Пол (19 января 2005). «База данных с открытым исходным кодом PostgreSQL может похвастаться поддержкой Windows» . InfoWorld . Проверено 2 ноября 2016 года .
  136. Перейти ↑ Weiss, Todd R. (5 декабря 2006 г.). «Выпущена версия 8.2 БД PostgreSQL с открытым исходным кодом» . Компьютерный мир . Проверено 17 октября, 2016 .
  137. ^ Gilbertson, Скотт (5 февраля 2008). «PostgreSQL 8.3: база данных с открытым исходным кодом обещает невероятную скорость» . Проводной . Проверено 17 октября, 2016 .
  138. Хубер, Матиас (2 июля 2009 г.). «PostgreSQL 8.4 доказал свою многофункциональность» . Журнал Linux . Проверено 17 октября, 2016 .
  139. ^ Brockmeier, Джо (30 сентября 2010). «Пять корпоративных функций в PostgreSQL 9» . Linux.com . Linux Foundation . Проверено 6 февраля 2017 года .
  140. ^ Тимоти Прикетт Морган (12 сентября 2011). «Версия PostgreSQL до 9.1 предназначена для предприятий» . Реестр . Проверено 6 февраля 2017 года .
  141. ^ «PostgreSQL: выпущен PostgreSQL 9.2» . www.postgresql.org .
  142. ^ «Повторное введение Hstore для PostgreSQL» . InfoQ .
  143. Ричард, Чиргвин (7 января 2016 г.). «Скажи ой, UPSERT твою голову: PostgreSQL версии 9.5 приземлился» . Реестр . Проверено 17 октября, 2016 .
  144. ^ «PostgreSQL: Документация: 10: Глава 31. Логическая репликация» . www.postgresql.org .
  145. ^ «PostgreSQL 11 выпущен» . Проверено 18 октября 2018 года .
  146. ^ "Примечания к выпуску PostgreSQL" . Проверено 18 октября 2018 года .
  147. ^ "PostgreSQL: выпущен PostgreSQL 12!" . www.postgresql.org .
  148. ^ "PostgreSQL: примечания к выпуску PostgreSQL 13!" . www.postgresql.org .
  149. ^ "PostgreSQL: выпущен PostgreSQL 13!" . www.postgresql.org .

Дальнейшее чтение [ править ]

  • Обе, Регина; Сюй, Лев (8 июля 2012 г.). PostgreSQL: готово и работает . О'Рейли . ISBN 978-1-4493-2633-3.
  • Кросинг, Ханну; Ройбал, Кирк (15 июня 2013 г.). Программирование сервера PostgreSQL (второе изд.). Packt Publishing . ISBN 978-1-84951-698-3.
  • Риггс, Саймон; Кросинг, Ханну (27 октября 2010 г.). Поваренная книга администратора PostgreSQL 9 (второе изд.). Packt Publishing . ISBN 978-1-84951-028-8.
  • Смит, Грег (15 октября 2010 г.). PostgreSQL 9 Высокая производительность . Packt Publishing . ISBN 978-1-84951-030-1.
  • Гилмор, У. Джейсон; Угощение, Роберт (27 февраля 2006 г.). Начиная с PHP и PostgreSQL 8: от новичка до профессионала . Апресс . п. 896. ISBN 1-59059-547-5. Архивировано из оригинала на 8 июля 2009 года . Проверено 28 апреля 2009 года .
  • Дуглас, Корри (5 августа 2005 г.). PostgreSQL (второе изд.). Sams . п. 1032. ISBN 0-672-32756-2.
  • Мэтью, Нил; Камни, Ричард (6 апреля 2005 г.). Начало баз данных с PostgreSQL (второе изд.). Апресс . п. 664. ISBN 1-59059-478-9. Архивировано из оригинала 9 апреля 2009 года . Проверено 28 апреля 2009 года .
  • Уорсли, Джон С; Дрейк, Джошуа Д. (январь 2002 г.). Практичный PostgreSQL . O'Reilly Media . С.  636 . ISBN 1-56592-846-6.

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • PostgreSQL в компании Curlie
  • PostgreSQL на GitHub