Официальный пресс-релиз PostgreSQL 9.5: UPSERT, Row Level Security и Big Data

 Официальный пресс-релиз PostgreSQL 9.5: UPSERT, Row Level Security и Big Data

Всемирная группа разработки PostgreSQL объявляет о выходе PostgreSQL 9.5. В этом релизе представлены такие возможности как UPSERT, безопасность на уровне строк (Row Level Security) и ряд функций для работы с большими данными (Big Data) — всё это призвано увеличить число пользователей самой развитой системы управления базами данных (СУБД) с открытым исходным кодом. Новый PostgreSQL — отличный выбор для самого широкого круга стартапов, крупных корпораций и государственных организаций.

Анни Прево (Annie Prévot), ИТ-директор в CNAF (Национальная касса семейных пособий, государственная организация во Франции), рассказывает: «Организация CNAF предоставляет услуги 11 миллионам человек, распределяя 73 миллиарда евро ежегодно, обеспечивая 26 видов различных компенсаций. Такой сервис очень важен для населения и в основе его — информационная система, которая должна быть абсолютно эффективна и надёжна. ИТ-система организации CNAF успешно использует PostgreSQL в качестве системы управления базами данных.»

UPSERT

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

Разрабатываемая в течение двух лет программистом компании Heroku Питером Гейганом (Peter Geoghegan), реализация UPSERT в PostgreSQL является существенно более гибкой и мощной, чем те, что предлагаются другими реляционными СУБД. Новое предложение ON CONFLICT позвляет игнорировать новые данные или же обновлять другие столбцы или таблицы таким образом, который будет совместим с комплексными ETL-решениями (Extract, Transform, Load — дословно «извлечение, преобразование, загрузка») для массовой загрузки данных. И, как и всё в PostgreSQL, это решение абсолютно безопасно с точки зрения конкурентного доступа и может использоваться в совокупности с любыми другими возможностями системы, включая Логическую репликацию (Logical Replication).

Row Level Security

PostgreSQL продолжает расширять возможности по обеспечению безопасного доступа к данным, на этот раз за счёт безопасности на уровне строк (Row Level Security, RLS). RLS реализует полноценный контроль за доступом на уровне отдельных строк и столбцов, который также может быть интегрирован с внешними системами управления доступом, такими как SE Linux. PostgreSQL уже хорошо известна как «по умолчанию максимально защищённая» система. RLS закрепляет эту позицию, являясь отличной возможностью для приложений с высокими требованиями безопасности — например, когда требуется соблюдать нормы PCI (приложения, обрабатывающие данные кредитных карт), законов Евросоюза о защите персональных данных (European Data Protection Directive), а также стандартов защиты медицинских данных.

RLS — кульминация пятлетнего развития возможностей безопасности в PostgreSQL, включающего обширную работу, проделанную Кай-Гаем Кохей (KaiGai Kohei) из японской корпорации NEC, Стефеном Фростом (Stephen Frost) из Crunchy Data, и Дином Рашидом (Dean Rasheed). Теперь администраторы баз данных могут устанавливать «политики» безопасности (security "policies"), фильтрующие доступ для определенных пользователей к определённым строкам — как на обновление, так и на чтение. Реализованная таким образом модель безопасности предоставляет улучшенную защиту данных от SQL-инъекций и других проблем безопасности уровня приложений.

Работа с Big Data

PostgreSQL 9.5 содержит сразу несколько новых возможностей для больших баз данных и для интеграции с другими системами, известными как "Big Data". Это позволяет PostgreSQL и впредь занимать сильные позиции на стремительно растущем рынке открытых систем для Big Data. Среди новинок стоит выделить следующие.

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-предложение позволяет быстро получить статистическую выборку для огромной таблицы без необходимости ресурсоёмкой сортировки.

«Новые BRIN-индексы в PostgreSQL 9.5 — это мощная новинка, позволяющая PostgreSQL индексировать такие объёмы данных, которые ранее было непрактично либо невозможно обрабатывать. Расширяемость данных и производительность выходят на такие уровни, которые ранее считались недостижимым для традиционных реляционных баз данных. Это делает PostgreSQL превосходным решением для аналитики в области Big Data», — рассказывает Бойан Ботев (Boyan Botev), ведущий администратор баз данных в Premier, Inc.