LINUX.ORG.RU

PostgreSQL 10 вышел

 , , ,


1

3

5 октября 2017 Всемирная группа разработки PostgreSQL объявила о выпуске PostgreSQL 10, новой версии реляционной системы управления базами данных с открытым исходным кодом.

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

«Наше сообщество разработчиков сфокусировано на развитии таких свойств системы, которые позволяют наиболее полно использовать возможности современных инфраструктур с распределённым характером нагрузки», — говорит Магнус Хагандер (Magnus Hagander), член основной команды Всемирной группы разработки PostgreSQL. — «Такие функции как логическая репликация и улучшенный параллелизм исполнения запросов отражают годы работы и демонстрируют постоянный фокус сообщества на обеспечении лидирующей роли PostgreSQL в условиях растущих технологических требований».

С появлением данного релиза меняется схема версий PostgreSQL, новый формат — «x.y». Это означает, что следующее минорная версия будет 10.1, а следующий мажорный релиз — 11.

Логическая репликация — фреймворк для распространения данных по модели «публикация/подписка»

Логическая репликация расширяет дополняет существующий набор видов репликации в PostgreSQL за счёт возможности передавать данные о модификации данных на уровне конкретной базы данных или на уровне таблиц в другие базы данных PostgreSQL. Пользователи теперь могут определять, какие именно данные нужно реплицировать. Кроме этого, появляется возможность выполнять переход на новые мажорные версии PostgreSQL без простоя и за счёт встроенных в ядро СУБД средств.

«Мы активно используем PostgreSQL, начиная с версии 9.3, и очень рады появлению версии 10, так как она содержит долгожданные возможности партиционирования и встроенной логической репликации. Это позволит нам использовать PostgreSQL в ещё большем количестве сервисов», — заявил Владимир Бородин, компания «Яндекс».

Декларативное партиционирование таблиц

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

Улучшенный параллелизм выполнения запросов

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

Кворум-коммит для синхронной репликации

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

«Кворум-коммит для синхронной репликации в PostgreSQL 10 даёт нам больше вариантов расширять нашу инфраструктуру баз данных с временем простоя работы приложений, стремящимся к нулю. Это позволяет нам непрерывно выкатывать изменения и обновлять нашу инфраструктуру без необходимости объявления длительных периодов обслуживания», — сказал Курт Микол (Curt Micol), инженер инфраструктуры в компании Simple Finance.

Аутентификация SCRAM-SHA-256

SCRAM (The Salted Challenge Response Authentication Mechanism), описанный в RFC5802, определяет протокол безопасного хранения и передачи паролей за счёт использования специального фреймворка для более строгого сопоставления паролей. В PostgreSQL 10 представлена поддержка метода SCRAM-SHA-256, описанного в RFC7677. Данный подход является намного более безопасным, чем существующий метод аутентификации с использованием MD5.

>>> Подробности



Проверено: leave ()
Ответ на: комментарий от postgresmen

А кто пробовал Citus?

Когда проводил исследование всех доступных на то время решений, этот проект не встречал. Единственным решением которое подошло по всем параметрам была galera. И галеру начали юзать почти что с момента выпуска первого релиза. Сейчас все ноды крутятся на FreeBSD 11-STABLE с ZFS(l2arc+ZIL) + MariaDB 10.1. Обновлять MariaDB+galera не планируем, так как пока что все устраивает.

iron ★★★★★ ()
Последнее исправление: iron (всего исправлений: 1)
Ответ на: комментарий от WereFox

Пожалуйте в биореактор.

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

Йода Мастер новость писал эту.

«Предпочитаемый им порядок — «объект-субъект-предикат», OSV. Однако, иногда персонаж говорит, используя менее экзотический порядок субъект-предикат-объект.»

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

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

GanGSISoft ★★ ()
Последнее исправление: GanGSISoft (всего исправлений: 1)
Ответ на: комментарий от anonymous

Удваиваю.

> разделяйте ваши данные с лёгкостью захватите власть над данными распределяйте данные надёжно обезопасьте доступ к вашим данным

Там в оригинале Quickly conquer your analysis

Как хорошо перевести не уверен. Речь о том, что теперь запросы выполняются быстрее и закрывать задачи по анализу данных будет легче.

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

айти профессианалы, которые не могут в перевод английский->русский, должны быть обоссаны и с позором выгнаны из профессии.

Я поправил

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

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

Примеры?

PgSQL не масштабируема под задачу

Да что ты говоришь... Вообще-то, одна из проблем внедрения PostgreSQL - это то, что по умолчанию он сконфигурирован, чтобы запуститься на древнем-древнем хламе и что-то выдать. И многие пытаются его в таком режиме и эксплуатировать, а потом жалуются на тормоза. В то время как его надо конфигурировать под современное железо. А масштабируемость у него просто потрясающая.

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

Если фраза не содержит смысла, а написана для раздувания текста - её не обязательно переводить. Язык-то как раз позволяет, не позволять должна совесть.

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

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

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

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

Как он определяет, какой диф годнее, если происходит конфликт?

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

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

Это если кворум есть, а если отвалится много нод одновременно и произойдет сплитбрейн?

Да, и придется определять какая из нод имеет самые свежие данные ручками синкать.

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

Есть ли минусы в PostgresXL по сравнению с сабжем?

Я не тестировал XL версии 10. У меня не проработан траблшутинг, раздражает что документации не сильно много.

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

Отвратно пашет по сравнению с Oracle, поэтому ждем их революционных изменений. Надеюсь уже в 11 версии.

Нормально оно пашет и уже годами.

Кстати Оракл тоже надо уметь готовить, а то совсем не торт.

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

А сколько на это может потребоваться времени?

Столько же, сколько занимает копирование базы по сети. Т.е. от объема базы и скорости соединения.

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

Кстати Оракл тоже надо уметь готовить, а то совсем не торт.

Если руки из попы лучше вообще к СУБД не подходить. Но все же у Оракл это на уровне ядра сделано, а не тригерами. Правда это дорого, очень дорого.

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

копирование базы по сети

Не совсем понял что куда будет копироваться. Я думал, что нужно определить самую консистентную ноду, сказать, что она теперь single source of truth и остальные начинают забирать с нее диффы. Но ты говоришь, что нужно качать целиком базу.

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

Я думал, что нужно определить самую консистентную ноду, сказать, что она теперь single source of truth и остальные начинают забирать с нее диффы. Но ты говоришь, что нужно качать целиком базу.

Все верно. Только в том случае, если galera уверена в том, что именно эта нода самая свежая. А если в момент обрыва связи на другие ноды пишуться данные, тут не понятно где данные свежее. И самый надежный но трудоемкий вариант - дропнуть базу на неконсистентной ноде и засинкать актуальную версию по сети ручками. Я не сильно вникал в то, как galera себя ведет при различных сценариях, так как на это не выделялись человеко-часы работы. Просто придерживаюсь золотого правила, что должно быть в онлайне минимальное количество нод чтоб кластер не развалился.

iron ★★★★★ ()