Самая продвинутая в мире реляционная база данных с открытым исходным кодом | |
Разработчик (и) | Global Development Group PostgreSQL |
---|---|
Первоначальный выпуск | 8 июля 1996 г.;. 24 года назад (1996-07-08) |
Стабильный выпуск | 13.0 / 24 сентября 2020; 40 дней назад (24 сентября 2020 г.) |
Репозиторий | |
Написано на | C |
Операционная система | FreeBSD, Linux, macOS, OpenBSD, Windows |
Тип | СУБД |
Лицензия | Лицензия PostgreSQL (бесплатно и с открытым исходным кодом, разрешающий ) |
Веб-сайт | postgresql.org |
Издатель | PostgreSQL Группа глобального развития. Регенты Калифорнийского университета |
---|---|
Совместимость с Debian FSG | Да |
FSF одобрено | Да |
OSI одобрено | Да |
Совместимость с GPL | Да |
Копилефт | No |
Ссылка из кода с другой лицензией | Да |
Веб-сайт | postgresql.org / о / license |
PostgreSQL (), также известный как Postgres, является бесплатным и открытым исходным кодом система управления реляционными базами данных (СУБД), подчеркивающая расширяемость и соответствие SQL. со юзник по имени POSTGRES, ссылаясь на его происхождение как преемника базы данных Ingres, разработанной в Калифорнийском университете в Беркли. В 1996 году проект был переименован в PostgreSQL, чтобы отразить поддержку SQL. После обзора в 2007 году группа разработчиков решила сохранить имя PostgreSQL и псевдоним Postgres.
PostgreSQL включает транзакции с атомарностью, согласованностью, изоляцией, долговечностью (ACID), автоматически обновляемые представления, материализованные представления, триггеры, внешние ключи и хранимые процедуры. Он для обработки ряда рабочих нагрузок, от отдельных компьютеров до хранилищ данных или веб-сервисов с множеством одновременных пользователей. Это база данных по умолчанию для macOS Server, а также для Linux, FreeBSD, OpenBSD и Windows.
PostgreSQL произошел от проекта Ingres в университете. Калифорнии, Беркли. В 1982 году лидер команды Ingres, Майкл Стоунбрейкер, покинул Беркли, чтобы создать частную версию Ingres. Он вернулся в Беркли в 1985 году и начал пост-Ingres решение проблемы с современными системами баз данных, которые стали все более очевидными в начале 1980-х. Он выиграл Премию Тьюринга в 2014 году за эти и другие проекты и впервые примененные в них методы.
Новый проект POSTGRES был нацелен на добавление минимального количества функций, необходимых для поддержки типов. Эти функции включали возможность определять и полностью описывать отношения - что-то широко используемое, но полностью используемое средство. В POSTGRES база данных могла получить информацию из соответствующих таблиц естественным образом, используя правила. POSTGRES использовал многие идеи Энгра, но не его код.
SIGMOD 1988 года, начиная с 1986 года, опубликована основа системы, прототипная версия описанных данных. Конференция. Команда выпустила версию 1 для небольшого числа пользователей в июне 1989 г., а затем версию 2 с переписанной системой правил в июне 1990 г. Версия 3, выпущенная в 1991 г., снова переписала систему правил и добавила поддержку нескольких менеджеров хранения и улучшенный механизм запросов. К 1993 году количество пользователей начало заваливать проект просьбами о поддержке и функциях. После выпуска версии 4.2 30 июня 1994 г. - в первую очередь очистки - проект завершился. Беркли выпустил POSTGRES в соответствии с использованием лицензии MIT, что позволяет другим разработчикам использовать код для любого использования. В то время POSTGRES использовал интерпретатор языка запросов POSTQUEL под регионом Ingres, который можно интерактивно использовать с консольным приложением с именем monitor.. В 1994 году аспиранты Беркли Эндрю Ю и Джолли Чен заменили интерпретатор языка запросов POSTQUEL на интерпретатор для языка запросов SQL, создаваемый Postgres95. monitorтакже был заменен на psql. Ю и Чен объявили о первой версии (0.01) для бета-тестеров 5 мая 1995 года. Версия 1.0 Postgres95 была анонсирована 5 сентября 1995 года с более либеральной лицензией, которая позволяетла свободно программное обеспечение..
8 июля 1996 года Марк Фурнье из Hub.org Сетевые службы предоставил первый неуниверситетский сервер разработки для разработки с открытым исходным кодом. При участии Брюса Момджяна и Вадима Б. Михеева началась работа по стабилизации кода, унаследованного от Беркли.
В 1996 году был проект переименован в PostgreSQL, чтобы отразить поддержку SQL. Онлайн-присутствие на веб-сайте PostgreSQL.org началось 22 октября 1996 года. Первый выпуск PostgreSQL образовал версию 6.0 29 января 1997 года. С тех пор разработчики и добровольцы по всему миру программного обеспечения как The PostgreSQL Global Development Group.
Проект продолжает делать выпуски доступными под бесплатным программным обеспечением с открытым исходным кодом лицензией PostgreSQL. Код поступает от поставщиков проприетарных решений, компаний поддержки и программистов с открытым исходным кодом.
PostgreSQL управляет параллелизмом через управление многоверсионным параллелизмом (MVCC), которое дает каждую транзакцию «моментальный снимок» базы данных, позволяющая вносить изменения, не рассматривающая другие транзакции. Это в степени устраняет необходимость в блокировках чтения и гарантирует, что база данных поддерживает принципы ACID. PostgreSQL предлагает три уровня изолированной транзакции : фиксированное чтение, повторное чтение и сериализуемый. PostgreSQL невосприимчив к грязному чтению, запрос уровня изоляции транзакции Прочитать без фиксации вместо этого обеспечивает фиксацию чтения. PostgreSQL поддерживает полную сериализуемость с помощью сериализуемого метода изоляции моментальных снимков (SSI).
PostgreSQL включает встроенную двоичную репликацию, основанную на асинхронной доставке изменений (журналов упреждающей записи (WAL)) на реплики узлов с помощью выполнения запросов только для чтения к этим реплицированным узлам. Это позволяет эффективно распределять трафик между узлами. Более раннее программное обеспечение, позволяющее подобное масштабирование чтения, обычно на добавление триггеров репликации к главному устройству, увеличивая нагрузку.
PostgreSQL включает встроенную синхронную репликацию, которая гарантирует, что для каждой транзакции записи мастер ждет, пока хотя бы один узел реплики не запишет данные в свой журнал транзакций. В отличие от других систем базовых данных, может быть указана надежность транзакций (асинхронной синхронной) для каждой базы данных, для каждого пользователя, для сеанса или даже для транзакции. Это может быть полезно для рабочих нагрузок, которые не требуют таких гарантий, и может не требоваться для всех данных, поскольку снижает производительность из-за требований подтверждения транзакции, достигнув синхронного резервирования.
Резервные серверы могут быть синхронными или асинхронными. Синхронные резервные серверы могут быть указаны в конфигурации, которая определяет, какой сервер является кандидатом для синхронной репликации. Первый в списке активный серверый сервер будет в качестве текущего синхронного сервера. Когда это не удается, система переключается на следующую в очереди.
Синхронная репликация с использованием мастеров не включена в ядро PostgreSQL. Postgres-XC, основанный на PostgreSQL, обеспечивает масштабируемую синхронную репликацию с использованием мастерами. Он находится под той же лицензией, что и PostgreSQL. Связанный проект называется Postgres-XL. Postgres-R - это еще один форк . Двунаправленная репликация (BDR) - это асинхронная система репликации с использованием мастеров для PostgreSQL.
Такие инструменты, как repmgr, упрощают управление кластерами репликации.
Доступно несколько пакетов асинхронной репликации на основе триггеров. Они остаются полезными даже после внедрения расширенных возможностей ядра в ситуациях, когда двоичная репликация всего кластера базы данных неуместна:
YugabyteDB - это база данных, которая использует интерфейс PostgreSQL с дополнительными возможностями NoSQL -подобный бэкэнд. Он решает проблемы репликации с помощью реализации идей из Google Spanner. Такие базы данных называются NewSQL и включают в себя, его можно другую базу данных, по сути рассматривать это PostgreSQL с помощью других бэкэнд-хранилищ. Среди прочего, CockroachDB и TiDB.
PostgreSQL включает встроенные -в поддержки обычных индексов B-tree и хэш-таблицы, а также четырех методов доступа к индексу: обобщенные деревья поиска (GiST ), обобщенные инвертированные индексы (GIN), GiST с разделением по пространству (SP-GiST) и индексы диапазонов блоков (BRIN). Кроме того, можно создать используемые методы индексции, хотя это довольно сложный процесс. Индексы в PostgreSQL также следующие функции: Индексы выражений могут быть созданы с помощью индекса результата выражения или функции, а не просто значения столбца.
В PostgreSQL схема содержит все объекты, кроме ролей и табличных пространств. твуют как пространство имен, разрешая объекты с тем именем сосуществовать в одной базе данных. По умолчанию созданные базы данных имеют схему, называемую общедоступной, но могут быть добавлены любые дополнительные схемы, и общедоступная схема не является обязательной.
A search_path Параметр
определяет порядок, в котором PostgreSQL проверяет схемы на наличие неквалифицированных рабочих объектов (тех, у которых нет схемы с префиксом). По умолчанию установлено значение $ user, public
($ user
относится к текущему подключенному пользователю базы данных). Это значение по умолчанию может быть установлено на уровне базы данных или роли, но, поскольку это параметр сеанса, его можно свободно использовать (даже несколько раз) во время сеанса клиента, влияя только на этот сеанс.
Несуществующие схемы, перечисленные в search_path, автоматически пропускаются во время поиска объектов.
Новые объекты в зависимости от того, какая действующая схема (существующая в настоящее время) появляется первой в search_path.
Поддерживается широкий спектр типов данных, в том числе:
Кроме того, пользователи могут создать свои собственные данные, которые обычно можно сделать полностью индивидуальными exable через инфраструктуру индексирования PostgreSQL - GiST, GIN, SP-GiST. Примеры таких данных включают типы данных географической информационной системы (ГИС) из проекта PostGIS для PostgreSQL.
Существует также тип данных, называемый доменом, который совпадает с другими типом данных, но с дополнительными ограничениями, определенными создателем этого домена. Это означает, что любые данные, введенные в столбец с использованием домена, должны соответствовать тем ограничениям, которые используются как часть домена.
Можно использовать тип данных, представляющий диапазон данных, называемый типом диапазона. Это могут быть дискретные диапазоны (например, все целые числа от 1 до 10) или непрерывные диапазоны (например, любое время между 10:00 и 11:00). Доступные встроенные типы диапазонов включают диапазоны целых чисел, большие целые числа, десятичные числа, отметки времени (с часовым поясом и без него) и даты.
Пользовательские типы диапазонов могут быть созданы, чтобы сделать доступные новые типы диапазонов, например диапазоны IP-адресов, использующие тип inet в качестве основы, или диапазоны с плавающей запятой, использующие тип данных float в качестве основы. Типы диапазонов включающие и исключающие границы диапазона с использованием символов [/]и (/)соответственно. (например, [4,9)
представляет все целые числа, начиная с 4 и заканчивая 9, но не включая его.) Типы диапазонов также совместимы с существующими операторами, используемыми для проверки перекрытия, включения, права на и его. т. д.
Могут быть созданы новые типы почти всех объектов внутри базы данных, включая:
Таблицы можно настроить так, чтобы они наследовали свои характеристики от родительской таблицы. Данные в дочерних таблицах будут существовать в родительских таблицах, если данные не выбраны из родительской таблицы ТОЛЬКО с помощью ключевого слова, т. Е. SELECT * FROM parent_table;
. Добавление столбца в родительскую таблицу приведет к тому, что этот столбец появится в дочерней таблице.
Наследование ca n можно использовать для реализации разделения таблицы с использованием триггеров или правил для направления вставок в роди тельскую таблицу в соответствующие дочерние таблицы.
По состоянию на 2010 год эта функция еще не полностью поддерживается - в части ограничения таблицы в настоящее время не наследуются. Все проверочные ограничения и ограничения, не равные NULL в родительской таблице, автоматически наследуются ее дочерними элементами. Другие типы ограничений (ограничения уникальности, первичного ключа и внешнего ключа) не наследуются.
Наследование позволяет отображать особенности иерархий обобщения, изображенные на диаграммах отношений сущностей (ERD), непосредственно в базу данных PostgreSQL.
PostgreSQL может связываться с другими системами для получения данных через сторонние данные обертки (FDW). Они могут принимать форму любого источника данных, например файловой системы, другой реляционной базы данных системы управления (RDBMS) или веб-службы. Это означает, что обычные запросы к базе данных могут использовать эти источники данных как обычные таблицы и даже объединять несколько источников данных вместе.
Для подключения к приложениям PostgreSQL включает встроенные интерфейсы libpq (официальный интерфейс приложения C) и ECPG (встроенная система C). Сторонние библиотеки для подключения к PostgreSQL доступны для многих языков программирования, включая C ++, Java, Python, Node.js,Go и Rust.
процедурные языки позволяют разработчикам расширять базу данных с помощью пользовательских подпрограмм (функций), часто называемых хранимых процедур. Эти функции могут использоваться для создания триггеров базы данных (функции, вызываемые при изменении определенных данных), а также пользовательских типов данных и агрегатных функций. Процедурные языки также могут быть вызваны без определения функции с помощью команды DO на уровне SQL.
Языки делятся на две группы: Процедуры, написанные на безопасных языках, изолированы от и могут быть безопасно созданы и используется любым пользователем. Процедуры, написанные на небезопасных языках, могут быть созданы только суперпользователями, поскольку они позволяют обходить ограничения безопасности базы данных, но также могут обращаться к источникам, внешним по отношению к базе данных. Некоторые языки, такие как Perl, предоставляют как безопасные, так и небезопасные версии.
PostgreSQL имеет встроенную поддержку трех процедурных языков:
Кроме того, PostgreSQL позволяет загружать процедурные языки в базу данных через расширения. В PostgreSQL включены три языковых расширения для поддержки Perl, Python (по умолчанию Возможно Python 2 или Python 3) и Tcl. Существуют внешние проекты для добавления поддержки многих других языков, включая Java, JavaScript (PL / V8), R, 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, комбинацию, которая существует с PostgreSQL версии 9.5
Правила позволяют переписывать «дерево запросов» входящего запроса. «Правила перезаписи запросов» прикрепляются к таблице / классу и «перезаписывают» входящий DML (выбор, вставка, обновление и / или удаление) в один или несколько запросов, которые либо заменяют исходный оператор DML, либо выполняются в дополнение к нему. Повторная запись запроса происходит после синтаксического анализа оператора DML, но до планирования запроса.
Сервер PostgreSQL основан на процессах (без потоков) и использует один процесс операционной системы на сеанс базы данных. Несколько сеансов автоматически распределяются между всеми доступными процессорами операционной системой. Начиная с PostgreSQL 9.6, многие типы запросов также могут быть распараллелены между несколькими фоновыми рабочими процессами, используя преимущества нескольких процессоров или ядер. Клиентские приложения могут использовать потоки и создавать несколько подключений к базе данных из каждого потока.
PostgreSQL управляет своей внутренней безопасностью для каждой роли. Роль обычно рассматривается как пользователь (роль, которая может войти в систему) или группа (роль, членами которой являются другие роли). Разрешения могут быть предоставлены или отозваны для любого объекта до уровня столбца, а также могут разрешить / запретить создание новых объектов на уровне базы данных, схемы или таблицы.
Функция SECURITY LABEL PostgreSQL (расширение стандартов SQL) обеспечивает дополнительную безопасность; со встроенным загружаемым модулем, который поддерживает управление принудительным доступом на основе меток (MAC) на основе политики безопасности Security-Enhanced Linux (SELinux).
PostgreSQL изначально поддерживает большое количество внешних механизмов аутентификации, в том числе:
Методы GSSAPI, SSPI, Kerberos, однорангового узла, идентификатора и сертификата также могут использовать указанный файл "карты", в котором перечислены пользователи, сопоставленные с этой системой аутентификации. подключиться как конкретные данные базовый пользователь.
Эти методы указаны в файле конфигурации аутентификации на основе хоста кластера (pg_hba.conf), который определяет, какие соединения разрешены. Это позволяет контролировать, какой пользователь может подключаться к какой базе данных, откуда они могут подключаться (IP-адрес, диапазон IP-адресов, доменный сокет), какая система аутентификации будет применяться, и должно ли соединение использовать Transport Layer Security (TLS).
PostgreSQL заявляет о высоком, но не полном соответствии стандарту SQL. Единственным исключением является обработка идентификаторов без кавычек, таких как имена таблиц или столбцов. В PostgreSQL они сворачиваются внутри до символов нижнего регистра, тогда как в стандарте говорится, что идентификаторы без кавычек должны быть свёрнуты до верхнего регистра. Таким образом, Foo
должен быть эквивалентен FOO
, а не foo
согласно стандарту.
Было проведено много неофициальных исследований производительности PostgreSQL. Улучшения производительности, направленные на улучшение масштабируемости, в значительной степени начались с версии 8.1. Простые тесты между версией 8.0 и версией 8.4 показали, что последняя была более чем в 10 раз быстрее для рабочих нагрузок только для чтения и как минимум в 7,5 раз быстрее для рабочих нагрузок чтения и записи.
Первый отраслевой стандарт и одноранговый проверенный эталонный тест был завершен в июне 2007 г. с использованием сервера приложений Sun Java System (проприетарная версия GlassFish ) 9.0 Platform Edition, сервер Sun Fire на основе UltraSPARC T1 и PostgreSQL 8.2. Этот результат 778,14 JOPS @ Standard в SPECjAppServer2004 выгодно отличается от 874 JOPS @ Standard с Oracle 10 в системе Itanium HP-UX.
В августе 2007 г., Sun представила улучшенный результат теста SPECjAppServer2004 JOPS @ Standard - 813,73. С тестируемой системой по сниженной цене соотношение цена / производительность улучшилось с 84,98 долл. / JOPS до 70,57 долл. США / JOPS.
В конфигурации PostgreSQL по умолчанию используется только небольшой объем выделенной памяти для критически важные для производительности цели, такие как кэширование блоков базы данных и сортировка. Это ограничение в первую очередь связано с тем, что старые операционные системы требовали изменений ядра, чтобы разрешить выделение больших блоков разделяемой памяти. PostgreSQL.org предоставляет советы по основным рекомендуемым практикам производительности в вики.
В апреле 2012 года Роберт Хаас из EnterpriseDB продемонстрировал линейную масштабируемость ЦП PostgreSQL 9.2 с использованием сервера с 64 ядрами.
Matloob Khushi провели сравнительный анализ Postgresql 9.0 и MySQL 5.6.15 на их способность обрабатывать геномные данные. В своем анализе производительности он обнаружил, что PostgreSQL извлекает перекрывающиеся области генома в восемь раз быстрее, чем MySQL, используя два набора данных по 80000 в каждом, формируя случайные участки ДНК человека. Вставка и загрузка данных в PostgreSQL также были лучше, хотя общие возможности поиска в обеих базах данных были почти одинаковыми.
PostgreSQL доступен для следующих операционных систем: Linux (все последние дистрибутивы), доступны 64-разрядные установщики для macOS (OS X) версии 10.6 и новее - Windows (с установщиками, доступными для 64-разрядной версии; протестировано на последних версиях и назад к Windows 2012 R2, в то время как для PostgreSQL версии 10 и старше доступен 32-разрядный установщик, который протестирован до 32-разрядной версии Windows 2008 R1; компилируется, например, Visual Studio, от версии 2013 до последней версии 2019) - FreeBSD, OpenBSD, NetBSD, AIX, HP-UX, Solaris и UnixWare ; и официально не тестировались: DragonFly BSD, BSD / OS, IRIX, OpenIndiana, OpenSolaris, OpenServer и Tru64 UNIX. Большинство других Unix-подобных систем также могут работать; самая современная вообще поддержка.
PostgreSQL работает на любой из следующих архитектур набора команд : x86 и x86-64 в Windows и других операционных системах; они поддерживаются не в Windows: IA-64 Itanium (внешняя поддержка HP-UX), PowerPC, PowerPC 64, S / 390, S / 390x, SPARC, SPARC 64, ARMv8 -A (64-бит ) и более ранние версии ARM (32-бит, включая более старые, такие как ARMv6 в Raspberry Pi ), MIPS, MIPSel и PA-RISC. Также известно, что он работает на некоторых других платформах (хотя не тестировался годами, то есть для последних версий).
Интерфейсы с открытым исходным кодом и инструменты для администрирования PostgreSQL включают :
psql
программа командной строки, которую можно использовать для ввода Запросы SQL напрямую или их выполнение из файла. Кроме того, psql предоставляет ряд мета-команд и различных функций, подобных оболочке, для облегчения написания сценариев и автоматизации широкого спектра задач; например, завершение имен объектов с помощью табуляции и синтаксиса SQL.Ряд компаний предлагают проприетарные инструменты для PostgreSQL. Часто они состоят из универсального ядра, адаптированного для различных конкретных продуктов баз данных. Эти инструменты в основном разделяют функции администрирования с инструментами с открытым исходным кодом, но предлагают улучшения в моделировании данных, импорте, экспорте или отчетности.
Известные организации и продукты, использующие PostgreSQL в качестве первичной базы данных, включают:
Некоторые известные производители предоставляют PostgreSQL as программное обеспечение как услуга :
Выпуск | Первый выпуск | Последняя дополнительная версия | Последняя версия | Конец. жизни | Основные этапы |
---|---|---|---|---|---|
6.0 | 1997-01 -29 | Н / Д | Н / П | Н / П | Первый официальный выпуск PostgreSQL, уникальные индексы, pg_dumpall служебная программа, идентификация аутентификации |
6.1 | 1997-06-08 | Старая версия, больше не поддерживается: 6.1.1 | 1997-07-22 | Н / Д | Многоколоночные индексы, используйте, денежный тип данных, 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 | S Возможность подвыбора QL-92, PL / pgTCL |
6.4 | 1998-10-30 | Старая версия, больше не поддерживается: 6.4.2 | 1998-12-20 20 | 2003-10-30 | ПРОСМОТРЫ (тогда только для чтения) и ПРАВИЛА, PL / pgSQL |
6.5 | 1999-06-09 | Старая версия, больше не поддерживается: 6.5.3 | 1999-10-13 | 2004-06-09 | MVCC, временные таблицы, пр. Поддержка операторов SQL (CASE, INTERSECT и EXCEPT) |
7.0 | 2008-05-08 | Старая версия, больше не поддерживается: 7.0.3 | 2000-11 -11 | 08.05.2004 | Внешние ключи, синтаксис SQL-92 для объединений |
7.1 | 13.04.2001 | Старая версия, больше не поддерживается: 7.1.3 | 15.08.2001 | 13.04.2006 | Журнал упреждающей записи, внешние соединения |
7.2 | 04.02.2002 | Старая версия, больше не поддерживается: 7.2.8 | 2005-05-09 | 2007-02-04 | PL / Python, OID больше не требуется, интернационализация сообщений |
7.3 | 27.11.2002 | Старая версия, больше не поддерживается: 7.3.21 | 2007-01-07 | 2007-11-27 | Схема, табличная функция, подготовленный запрос |
7.4 | 17.11.2003 | Старая версия, больше не поддерживается: 7.4.30 | 04.10.2010 | 01.10.2010 | Оптимизация JOINs и функций х ранилища данных |
8.0 | 2005-01-19 | Старая версия, больше не поддерживается: 8.0.26 | 04.10.2010 | 01.10.2010 | Собственный сервер в Microsoft Windows, точки сохранения, табличные пространства, восстановление на момент времени |
8.1 | 2005-11-08 | Старая версия, больше не поддерживается: 8.1.23 | 16.12.2010 | 08.11.2010 | Оптимизация производительности, двухэтапная фиксация, разделение таблицы , сканирование растрового изображения индекс, общая строка блокировка, роли |
8.2 | 05.12.2006 | Старая версия, больше не поддерживается: 8.2.23 | 05.12.2011 | 05.12.2011 | Оптимизация производительности, построение онлайн-индексов, советник y блокировки, теплый режим ожидания |
8.3 | 04.02.2008 | Старая версия, больше не поддерживается: 8.3.23 | 07.02.2013 | 07.02.2013 | Кортежи только в куче, полнотекстовый поиск, SQL / XML, типы ENUM, типы UUID |
8.4 | 01.07.2009 | Старая версия, больше не поддерживается: 8.4.22 | 24.07.2014 | 24.07.2014 | Оконные функции, разрешение на уровне столбцов, параллельное восстановление базы данных, сортировка для каждой базы данных, общие табличные выражения и рекурсивные запросы |
9.0 | 2010-09-20 | Старая версия, больше не поддерживается: 9.0.23 | 08.10.2015 | 08.10.2015 | Встроенная двоичная потоковая передача репликация, горячее резервирование, возможность обновления на месте, 64-битная Windows |
9.1 | 2011-09-12 | Старая версия, больше не поддерживается: 9.1.24 | 27.10.2016 | 27.10.2016 | Синхронная репликация, сопоставления по столбцам , незарегистрированные таблицы, сериализуемый снимок изоляции, общие табличные выражения с помощью запи си, интеграция с SELinux, расширения, сторонние таблицы |
9.2 | 2012-09-10 | Старая версия, больше не поддерживается: 9.2.24 | 09.11.2017 | 09.11.2017 | Каскадная потоковая репликация, сканирование только индекс, встроенная поддержка JSON, улучшенное управление блокировками, типы диапазонов, инструмент pg_receivexlog, индексы GiST с разделением по пространству |
9.3 | 09.09.2013 | Старая версия, больше не поддерживается: 9.3.25 | 08.11.2013 | 2018-11-08 | Пользовательские фоновые рабочие процессы, контрольные суммы данных, выделенные операторы JSON, LATERAL JOIN, более быстрый pg_dump, новый инструмент мониторинга сервера pg_isready, функции триггеров, функции просмотра, внешние таблицы с помощью записи, материализованные представления, улучшения репликации |
9.4 | 18.12.2014 | Старая версия, больше не поддерживается: 9.4.26 | 2020-02-13 | 202 0-02-13 | Тип данных JSONB, оператор ALTER SYSTEM для изменения значений конфигурации, возможность обновления мата эриализованные представления без блокировки чтения, динамическая регистрация / запуск / остановка фоновых рабочих процессов, API-кодирования, улучшение индекс GiN, поддержка огромных страниц в Linux, перезагрузка кеша базы данных через pg_prewarm, повторное введение Hstore в качестве типа столбца для данных в стиле документа. |
9.5 | 07.01.2016 | Старая версия, но все еще поддерживается: 9.5.23 | 13.08.2020 | 2021 - 02-11 | UPSERT, безопасность на уровне строк, TABLESAMPLE, CUBE / ROLLUP, GROUPING SETS и новый индекс BRIN |
9.6 | 29.09.2016 | Старая версия, но все еще поддерживается: 9.6.19 | 13.08.2020 | 11.11.2021 | Поддержка параллельных запросов, внешние данные PostgreSQL улучшения оболочки (FDW) с сортировкой / объединением, множественными синхронными резервными серверами, более быстрой очисткой большой таблицы |
10 | 05.10.2017 | Старая версия, но все еще поддерживается : 10.14 | 2020-08-13 | 2022-11-10 | Логическая репликация, декларативное разбиение таблицы, изменение параллелизма запросов ed |
11 | 18.10.2018 | Старая версия, но все еще поддерживается: 11.9 | 13.08.2018 | 2023-11-09 | Повышенная надежность и способность для секцио нирования, транзакции, поддерживаемые хранимыми процедурами, расширенные возможности для параллелизма запросов, JIT-компиляция для выражений |
12 | 2019-10-03 | Старая версия, но все еще поддерживается: 12.4 | 13.08.2020 | 14.11.2024 | Улучшения в запросе производительности и использовании пространства; Поддержка выражений пути SQL / JSON; сгенерированные столбцы; улучшения интернационализации и аутентификации; новый подключаемый интерфейс хранения таблиц. |
13 | 2020-09-24 | Текущая стабильная версия: 13 | 2020-09-17 | 2025-11-13 | Экономия места и повышение производительности за счет исключения дублирования индекса индексов B-дерева, повышение производительности запросов, использующих агрегаты или многораздельные таблицы, лучшее планирование запросов при использовании расширенной статистики, параллельная очистка индексов, инкрементная сортировка |
На Викискладе есть материалы, связанные с PostgreSQL. |
В Викиучебниках есть книга по тема: PostgreSQL |