LINUX.ORG.RU

Релиз PostgreSQL 12

 


0

1

Группа разработчиков PostgreSQL объявила о выходе PostgreSQL 12, новейшей версии реляционной системы управления базами данных с открытым исходным кодом.
В PostgreSQL 12 значительно улучшена производительность запросов – особенно это касается работы с большими объёмами данных, также произведена оптимизация использования дискового пространства в целом.

Среди новых возможностей:

  • реализация языка запросов JSON Path (важнейшей части стандарта SQL/JSON);
  • оптимизация исполнения общих табличных выражений (WITH);
  • поддержка генерируемых столбцов

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

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

Улучшения производительности

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

Индексы B-tree — стандартный тип индексирования в PostgreSQL, были оптимизированы в версии 12 для нагрузок, предполагающих частые модификации индексов. Использование эталонного теста TPC-C для PostgreSQL 12 продемонстрировало сокращение использования пространства в среднем на 40% и общий прирост производительности запросов.

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

В PostgreSQL 12 были произведены дополнительные усовершенствования в индексировании, которые влияют на общую производительность, включая:

  • снижение накладных расходов при генерации WAL для типов индексов GiST, GIN и SP-GiST;
  • возможность создавать так называемые покрывающие индексы (covering indexes, предложение INCLUDE) на GiST-индексы;
  • возможность выполнять запросы «ближайших соседей» (k-NN search) с помощью оператора расстояния (<->) и использованием индексов SP-GiST;
  • поддержку сбора статистики наиболее распространенных значений (most-common value, MCV) с помощью CREATE STATISTICS, что помогает получать лучшие планы выполнения запросов при использовании столбцов, значения для которых распределены неравномерно.

JIT-компиляция с использованием LLVM, появившаяся в PostgreSQL 11, теперь включена по умолчанию. JIT-компиляция позволяет повышать производительность при работе с выражениями в предложениях WHERE, целевых списках, агрегатах и некоторых внутренних операциях. Она доступна, если вы скомпилировали PostgreSQL с LLVM или используете пакет PostgreSQL, который был создан с включённым LLVM.

Улучшения возможностей языка SQL и совместимости со стандартом

В PostgreSQL 12 появилась возможность выполнять запросы к документам JSON с использованием выражений пути JSON, определенных в стандарте SQL/JSON. Такие запросы могут использовать существующие механизмы индексации для документов, хранящихся в формате JSONB, для эффективного извлечения данных.

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

В PostgreSQL 12 появляется поддержка «генерируемых столбцов». Описанный в стандарте SQL, этот тип столбца вычисляет значение на основе содержимого других столбцов в той же таблице. В этой версии PostgreSQL поддерживает «хранимые генерируемые столбцы», где вычисленное значение хранится на диске.

Интернационализация

PostgreSQL 12 расширяет поддержку ICU-сопоставлений, разрешая пользователям определять «недетерминированные сопоставления», которые могут, например, позволять сравнения без учёта регистра или ударения.

Аутентификация

PostgreSQL расширяет свою поддержку надёжных методов аутентификации с помощью нескольких улучшений, которые обеспечивают дополнительную безопасность и функциональность. В этом выпуске представлено шифрование на стороне клиента и на стороне сервера для аутентификации через интерфейсы GSSAPI, а также возможность PostgreSQL обнаруживать серверы LDAP, если PostgreSQL скомпилирован с OpenLDAP.

Кроме того, PostgreSQL 12 теперь поддерживает вариант многофакторной аутентификации. Теперь сервер PostgreSQL может затребовать у клиента предоставление валидного SSL-сертификата с соответствующим именем пользователя с использованием clientcert=verify-full, и комбинировать это с отдельным требованием метода аутентификации (например, scram-sha-256).

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

В PostgreSQL 12 появилась возможность выполнять неблокирующее перестроение индексов с помощью команды REINDEX CONCURRENTLY. Это позволяет пользователям избегать простоя в работе СУБД при длительном перестроении индексов.

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

>>> Источник

★★★★★

Проверено: alexferman ()

Очень интересно было бы послушать в ютубчике спеца уровня Олега Бартунова по поводу этого выпуска, и почему PostgreSQL > mongodb и вообще почему именно PostgreSQL самая лучшая СУБД

shprotua ()
Ответ на: комментарий от gtk3

mysql - довольно убог, это база данных для какого-нибудь хостинга веб-страниц на пхп. sqlite - хорош, но это больше для встраиваемых решений, там весьма специфичное понятие типов и для неподготовленного человека может быть непривычно. я бы выбрал postgresql.

а как гитеа вообще, норм для разработки, всё на месте, всего хватает?

anonymous ()
Ответ на: комментарий от nightsinger

у адептов постгри ничего не работает, кроме постгри. У которого даже толкового дизастер рекавери нет и мастер-мастер клайстера без говна и подпорок.

mrdeath ★★★★★ ()

поддержка генерируемых столбцов

То чувство когда узнал про SQL на примере interbase 4.2, и вот теперь одна из фич той базы появилась в постгре...

AVL2 ★★★★★ ()

JIT-компиляция с использованием LLVM, появившаяся в PostgreSQL 11, теперь включена по умолчанию

И всем пофиг, что по сравнению с десяткой постгре стал весить на порядок больше, из-за зависимости от llvm-рантайма?

spoonbob ()
Ответ на: комментарий от spoonbob

Пофиг, да. От llvm на системе и так уже что только не зависит. А JIT-компиляция это прикольно, модно и молодёжно (несколько десятилетий уже как). Честно говоря не думал, что у них до сих пор не было похожего самопального решения, неужели до сих пор хранимки в интерпретаторе работали?

dimgel ★★ ()
Ответ на: комментарий от Jopich1

Oracle 8 уже догнало ?

Там уже на оборот ситуация, Oracle 18с пытается догнать postgres.

Хотя по объему откатов за установку в гос компаниях наверное Oracle еще впереди планеты всей.

Yilativs ★★★ ()
Ответ на: комментарий от spoonbob

И всем пофиг, что по сравнению с десяткой постгре стал весить на порядок больше, из-за зависимости от llvm-рантайма?

Нет конечно, всех просто смертельно удручает необходимость выделить ещё целых 100 мегов на системном разделе. Сейчас админы на митинг выйдут под офисом EnterpriseDB и 2ndQuadrant.

Ну лол же.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Для разработчика:
Удобство работы с geo spatial данными, c json, ну и то, что самое важное для большинства проектов - простота в использовании в разработке.
Попробуй сделать docker-compose который бы тебе поднимал oracle во время прогона интеграционных тестов и сравни это с postgres.

Также тот факт, что большинство Cloud Managed решений - основаны на Postgres, а не Oracle как бы намекает на то, что даже высококвалифицированным профи обслуживать легче именно Postgres.
У того же AWS на нем сделаны RedShift и Aurora.

Yilativs ★★★ ()
Ответ на: комментарий от no-such-file

Ньінешний постгрес просто замечателен. Вообще не понимаю єтого хайпа вокруг мускуля. Лет 10 назад может и бьіл какой-то толк. Мускуль уже умеет в пареллелньіе запросьі?

anonymous ()
Ответ на: комментарий от spoonbob

Серьезно, на порядок?

docker images | grep postgres | sort -k 2 -n

postgres 9 61c59b9a763f 3 weeks ago 230MB

postgres 10 ee2097dc5afa 3 weeks ago 230MB

postgres 11 4557416bbe04 34 hours ago 293MB

postgres 12 f9b3d2f9a593 34 hours ago 348MB

О боже, нет, где же взять еще 120Мб?!

anonymous ()
Ответ на: комментарий от spoonbob

не поверил, что на порядок. Впрочем, я уже давно перешёл на 11 и сейчас буду на 12. Сейчас установил PostgreSQL 12 в Ubuntu 18.04, где не было PostgreSQL. При установке (по инструкции с сайта PostgreSQL) было предупреждение, что на диске будет занято дополнительно 54 МБ. Потом поставил pgAdmin4. О нём было предупреждение, что дополнительно займёт 30 МБ.

Базы данных, которые хранятся в PostgreSQL, обычно несравненно больше, чем сама PostgreSQL. Так что ваши мелкие мегабайты действительно никого не интересуют.

Partisan ★★ ()
Ответ на: комментарий от Yilativs

Удобство работы с geo spatial данными, c json

Это сейчас везде есть. Я ж и говорю, 10 (а то и 20) лет назад это была фишечка.

большинство Cloud Managed решений - основаны на Postgres

Большинство на выбор предлагает и мускул и постгрес.

как бы намекает на то

Что для оракеля нужна лицензия. У оракеля есть своё облако и там они внезапно предлагают именно Oracle SQL.

no-such-file ★★★★★ ()
Ответ на: комментарий от southern_sun

У вас, судя по вопросу - тормозит и будет. Новая версия не предназначена для исправления кривизны рук (иначе это было бы указано в замечаниях по реализации).

Partisan ★★ ()
Ответ на: комментарий от turtle_bazon

мускуль хорош для веб-страничек на пхп, если проект выходит за select count(*) from table, то сразу упирается в какие-то ограничения, поэтому, там где применимо, желательно всё таки использовать настоящую реляционную базу данных, а не какой-то огрызок.

anonymous ()

Можно узнать, чем PostgreSQL лучше, чем DB2, кроме опенсорности и версионности? Хотя версионность, может быть и хуже с точки зрения пожираемого дискового пространства во время создания очередной версии данных.

anonymous ()
Ответ на: комментарий от anonymous

Мускуль хорош для много чего. А галера у него так вообще хороша. Пусть что-нибудь доступное будет у постгреса, тогда можно будет говорить про веб странички на пхп, а пока мимо.

turtle_bazon ★★★ ()
Ответ на: комментарий от anonymous

db2 это блокировочный динозавр, а бесплатная версия еще и четырьмя ядрами была ограничена. никому с такими ограничениями не нужно оказалось и ibm уже убрала с сайта эту extress-c редакцию.

iDesperado ()
Ответ на: комментарий от turtle_bazon

Имхо, он изначально создавался с очень лояльным отношением к синтаксису: вернуть результат, даже если запрос странный и неоднозначный.. Там, где постгрес выдаст ошибку. Поэтому в мускуле проще написать хрень

spoonbob ()
Ответ на: комментарий от iDesperado

IBM убрала express-c почти без ограничений по объему базы, и добавила developer-c почти без ограничений по функционалу, но с ограничением объема базы в 100 гиг:

db2 express-c накрылась?

А то, что блокировочник, так ведь большинство СУБД гибридны (нет чистых версионников или блокировочников и в той или иной степени реализация ближе к одному или к другому).

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

anonymous ()
Ответ на: комментарий от anonymous

какой бы ни был версионник он не ставит блокировки на чтение, db2 же лочит при чтении что выливается в тотальный дедлок на пустом месте. версионники совсем победили, даже если db2 начнут раздавать совсем бесплатно, это мало кого заинтересует. и в первую очередь из-за блокировок. место на диске мягко говоря смешной аргумент.

iDesperado ()