PostgreSQL 9.5: UPSERT, RLS и Big Data

PostgreSQL Global Development Group объявила о выходе PostgreSQL 9.5. Среди прочих нововведений можно отметить функцию UPSERT, безопасность на уровне строк (Row Level Security, RLS) и несколько функций работы с Big Data. По мнению разработчиков, новые функции делают PostgreSQL лучшим вариантом среди всех возможных для стартапов, больших корпораций, правительственных организаций.

UPSERT

Наиболее востребованная функция среди разработчиков приложений, UPSERT является сокращением для «INSERT, ON CONFLICT UPDATE». Новая возможность позволяет обработать ситуацию невозможности добавления данных через «INSERT», например, из-за нарушения условий уникальности или недопустимости значения одного из полей, и вместо вывода ошибки игнорировать выполнение оператора или изменить связанные с ключевым полем данные (т.е. если запись уже существует, вместо INSERT выполнить UPDATE).

По словам представителей команды, UPSERT упрощает разработку веб и мобильных приложений. Условие ON CONFLICT позволяет игнорировать новые данные, или обновлять различные столбцы или связи таким образом, чтобы осуществлялась поддержка ETL (Extract, Transform, Load) наборов компиляторов для загрузки массивов данных. Новая функция полностью совместима со всеми другими возможностями PostgreSQL, включая Logical Replication.

Row-Level Security (RLS)

Эта функция — результат работы продолжительностью в пять лет. RLS предоставляет возможность создания политик безопасности, которые ограничивают доступ пользователям к информации в БД. Политики безопасности позволяют либо «закрыть» информацию полностью или частично, либо разрешить выполнение определенных действий с информацией.

Big Data

Здесь разработчики добавили сразу несколько новых функций, включая Block Range Indexes (BRIN), обеспечивающий более быстрый поиск некоторых типов данных. На поиск таких данных, по заявлению представителей команды, будет уходить всего 5% времени, требуемого для осуществления поиска B-tree.

BRIN-индексы. Этот новый тип индексов позволяет создавать крошечные, но эффективные индексы для очень больших таблиц, данные в которых «естественным образом упорядочены». Например, таблицы, содержащие данные системных журналов с миллиардами строк, могут быть проиндексированы и просканированы всего за 5% от времени, которое требуется для стандартных BTree-индексов.

Ускоренная сортировка. Теперь PostgreSQL сортирует текстовые данные и данные типа NUMERIC быстрее, используя алгоритм «сокращенных ключей». Это ускоряет некоторые запросы, требующие сортировки больших объёмов данных, от 2-х до 12-и раз и может ускорить создание индексов до 20-и раз.
CUBE, ROLLUP и GROUPING SETS. Эти новые предложения стандартного языка SQL позволяют пользователям создавать отчёты с несколькими уровнями подведения итогов в одном-единственном запросе. Предложение CUBE также позволяет тесно интегрировать PostgreSQL с бо́льшим числом инструментов создания OLAP-отчётов (Online Analytic Processing) — таких как Tableau.

Адаптеры внешних данных (Foreign Data Wrappers, FDW). Этот функционал и ранее позволял использовать PostgreSQL как среду для запросов к другим «Big Data»-системам — например, Hadoop и Cassandra. В версии 9.5 добавлены команда IMPORT FOREIGN SCHEMA и JOIN-вытеснение (JOIN pushdown), что делает запросы к внешним базам данных как более лёгкими в установке, так и более эффективными.

TABLESAMPLE. Это SQL-предложение позволяет быстро получить статистическую выборку для огромной таблицы без необходимости ресурсоёмкой сортировки.

В целом, в версии 9.5 много нового, реально полезного для разработчиков. При этом стоит помнить, что при обновлении некоторых старых БД могут возникнуть проблемы, об этом стоит помнить.

Еще более подробная информация о нововведениях в версии 9.5 (Wiki от разработчиков) можно доступна здесь или здесь (русский пресс-релиз).

Источник: habrahabr.ru

Добавить комментарий