PDA

Просмотр полной версии : Началось бета-тестирование СУБД PostgreSQL 10


madik
22.05.2017, 15:28
Источник: https://www.opennet.ru/opennews/art.shtml?num=46572

================================================== ================

Доступна (https://www.postgresql.org/about/news/1749/) для тестирования бета-версия СУБД PostgreSQL 10 (https://www.postgresql.org/docs/devel/static/release-10.html). Релиз ожидается в начале осени. Выбор номера версии 10.0 вместо 9.7.0 связано с переходом (http://www.databasesoup.com/2016/05/changing-postgresql-version-numbering.html) проекта на новую нумерацию выпусков. Вместо трёхуровневневой нумерации (Major1.Major2.Minor) отныне будет применяться схема "Major.Minor", в которой "Major" указывает номер значительной ветки, а "Minor" - номер корректирующего обновления, не требующего перезаливки БД. Таким образом, первым корректирующим релизом PostgreSQL 10 станет 10.1, а следующей значительной версией PostgreSQL 11. Как и раньше значительные версии будут формироваться раз в год.

Основные (https://wiki.postgresql.org/wiki/New_in_postgres_10) улучшения (http://rhaas.blogspot.com/2017/04/new-features-coming-in-postgresql-10.html):


Режим логической репликации (https://blog.2ndquadrant.com/logical-replication-postgresql-10/), позволяющий выборочно реплицировать только заданные таблицы или использовать репликацию в процессе обновления. Данный вид репликации манипулирует логическими изменениями на уровне выполняемых операций, в то время как традиционная репликация работает на очень низком уровне, перенося байтовые изменения в WAL-журнале;

Добавлены встроенные возможности партицирования таблиц по диапазонам значений и спискам - разбивка теперь может задаваться (https://www.postgresql.org/docs/devel/static/ddl-partitioning.html#ddl-partitioning-declarative) через выражения "PARTITION BY" и "PARTITION OF" в директиве "CREATE TABLE". Например:

CREATE TABLE padre (

id serial not null,

nombre text not null,

fch_creado timestamptz not null

)

PARTITION BY RANGE ( id );

CREATE TABLE hijo_0

partition of padre (id, primary key (id), unique (nombre))

for values from (unbounded) to (9);

CREATE TABLE hijo_1

partition of padre (id, primary key (id), unique (nombre))

for values from (10) to (unbounded);

Обеспечено распараллеливание с задействованием нескольких ядер CPU таких операций, как сканирование индексов и битовых карт, выполнение запросов со слиянием таблиц (JOIN);

Возможность подтверждения коммитов на основе кворума для предотвращения потери данных после выхода из строя сразу нескольких синхронно реплицируемых узлов. Например, теперь можно указать, что коммит должен быть подтверждён любыми К из N запасных синхронно реплицируемых серверов, без жестко заданной последовательности проверки;

Поддержка отслеживания (https://blog.2ndquadrant.com/traceable-commit-postgresql-10/) незавершённых коммитов - позволяет выяснить статус недавно запущенной транзакции для организации восстановления после краха или обрыва соединения;

Поддержка аутентификации SCRAM (https://ru.wikipedia.org/wiki/SCRAM) для организации более безопасного доступа по паролю;

Многохостовый режим отказоустойчивости в libpq, при котором клиент соединяется с первым работающим хостом из заданного списка;

Добавлен параметр "target_session_attrs", позволяющий клиенту запросить хост, доступный на запись или чтение;

Для индексов типа Hash обеспечена поддержка репликации и повышена устойчивость к сбоям после крахов;

Добавлен новый тип полномочий, определяющий доступ к функциям мониторинга;

Добавлено выражение XMLTABLE (https://blog.2ndquadrant.com/xmltable-intro/), позволяющее представить XML-документ в табличном формате, что существенно упрощает разбор XML-данных, хранимых в БД;

Поддержка полнотекстового поиска для типов JSON и JSONB;

Поддержка сжатия данных в журналах pg_receivewal (https://www.postgresql.org/docs/10/static/app-pgreceivewal.html);

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

Добавлена независимая от операционной системы реализация свойства локали "Collation", позволяющего задавать правила сортировки и методы сопоставления с учётом смысла символов. Реализация основана на libicu и идентична для Linux и Windows;

Увеличена производительность функции SUM(), преобразования кодировок символов, выполнение выражений, группировки множеств и выполнения операций JOIN над уникальными столбцами. При выполнении аналитических запросов над большим числом строк наблюдается ускорение до 40%;

Из нарушающих совместимость изменений отмечается переименование "xlog" в "wal", прекращение поддержки устаревшего протокола FE/BE 1.0, изменение настроек по умолчанию для репликации и резервирования (pg_basebackup), прекращение поддержки значений времени (Timestamps) с плавающей запятой, удаление contrib/tsearch2 и прекращение поддержки в pg_dump баз данных от PostgreSQL 7.4 и более ранних выпусков.