Типы хранения данных в Yandex MPP Analytics for PostgreSQL
Yandex MPP Analytics for PostgreSQL позволяет использовать следующие типы хранения данных в таблицах:
-
Без кластеризованных индексов (heap storage).
Таблицы такого типа обеспечивают только строковое хранение данных. Они подходят для обработки транзакций в реальном времени (OLTP), когда данные в таблицах часто обновляются операциями
INSERT,UPDATEиDELETE.Все таблицы, создаваемые в Yandex MPP Analytics for PostgreSQL, по умолчанию используют этот тип хранения данных.
Подробнее в документации Greenplum®
и Apache Cloudberry™ . -
Оптимизированное для добавления (append-optimized storage).
Таблицы такого типа обеспечивают строковое и колоночное хранение. Таблицы для строкового хранения сокращенно называют AO-таблицами (append-optimized), а колоночного — AOCO-таблицами (append-optimized column-oriented). Оба вида таблиц реализованы на основе вспомогательных heap-таблиц. Данные в таблицах AO и AOCO хранятся в сегментных файлах, которые состоят из блоков произвольного объема.
Таблицы AO и AOCO подходят для аналитической обработки больших массивов данных (OLAP), когда данные загружаются большими пакетами и над ними производятся в основном операции чтения.
Колоночное хранение данных значительно снижает затраты на чтение и запись, когда запрос обращается только к небольшому количеству столбцов из множества всех полей таблицы. Колоночные таблицы также лучше поддаются сжатию. При использовании Yandex MPP Analytics for PostgreSQL в качестве аналитической СУБД рекомендуется использовать колоночные таблицы со стандартным сжатием первого уровня.
Для таблиц AO и AOCO в кластерах Yandex MPP Analytics for PostgreSQL доступно гибридное хранилище: с помощью расширения Yezzey можно переместить часть таблиц из хранилища кластера в холодное хранилище и наоборот. Холодное хранилище удобно, если данные таблиц нужно хранить долго, а работать с ними планируется редко. Так хранение будет дешевле.
Подробнее в документации Greenplum®
и Apache Cloudberry™ . -
PAX-формат (PAX storage format). Этот тип хранения доступен только для СУБД Apache Cloudberry™.
PAX (partition attributes across) — это формат, который сочетает в себе преимущества строкового и колоночного хранения данных в базе: строки таблицы объединяются в блоки, а данные каждого блока хранятся в колонках.
Этот формат используется для повышения производительности запросов, особенно с точки зрения эффективности использования кеша. Поэтому PAX-формат подходит для сложных OLAP-приложений, которым требуется обрабатывать большие объемы записываемых данных и выполнять частые запросы.
Особенности PAX-формата:
-
Использует метод обновления и удаления данных без немедленной перезаписи физического файла.
-
Использует многоверсионный контроль параллелизма (multi-version concurrency control, MVCC) для эффективного управления параллелизмом и изоляции чтения и записи. Уровень детализации контроля достигает уровня отдельных файлов с данными.
-
Поддерживает индексы B-дерева, которые повышают скорость извлечения данных при работе с большими объемами информации.
-
Предлагает несколько методов кодирования данных (например, RLE- и дельта-кодирование) и вариантов сжатия (например, zstd и zlib) с различными уровнями сжатия. Эти функции помогают сократить объем хранилища и оптимизировать производительность при чтении.
-
Записывает в файлы с данными подробную статистику об этих данных. Статистика используется для быстрой фильтрации данных и оптимизации запросов.
Подробнее в документации Apache Cloudberry™
. -
-
Динамические таблицы (dynamic tables). Этот тип хранения доступен только для СУБД Apache Cloudberry™.
Динамические таблицы — это объекты базы данных, аналогичные материализованным представлениям, которые автоматически обновляют данные по расписанию и ускоряют выполнение запросов. Динамические таблицы можно создавать на основе базовых таблиц, внешних таблиц или материализованных представлений.
Динамические таблицы подходят для случаев, когда нужно выполнять частые и актуальные запросы, например для финансового анализа или мониторинга операций. В Lakehouse-системах запросы к динамическим таблицам работают быстрее по сравнению с запросами к внешним таблицам.
Подробнее в документации Apache Cloudberry™
.
Создание колоночных таблиц
Для создания колоночной таблицы со сжатием передайте параметры, отвечающие за требуемые настройки, в команде CREATE TABLE:
CREATE TABLE tableName (...)
WITH (
appendonly = true,
orientation = column,
compresstype = zstd,
compresslevel = 1
);
Примеры использования
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.
Apache® и Apache Cloudberry™ являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах.