Сжатие данных в Greenplum

сжатие таблиц Greenplum, Greenplum курсы, сжатие данных Greenplum примеры курсы обучение, использование Greenplum, обучение Arenadata DB курсы, Greenplum для инженеров данных и архитекторов СУБД, Greenplum особенности хранения данных, хранение и аналитика больших данных с Greenplum, Школа Больших Данных Учебный центр Коммерсант

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

Как Greenplum сжимает данные: примеры настроек и SQL-запросов

Эффективное сжатие данных позволяет Greenplum снижать потребление памяти и повышать производительность SQL-запросов. Greenplum предлагает несколько методов сжатия данных, снижения затрат на хранение и повышения производительности запросов.

В Greenplum доступны два типа сжатия в базе данных. Сжатие на уровне таблицы применяется ко всей таблице. Сжатие на уровне столбца применяется к конкретному столбцу. К разным столбцам можно применять разные алгоритмы сжатия на уровне столбца. Сжатие снижает использование диска и улучшает ввод-вывод во всей системе, однако оно увеличивает производительность при сжатии и распаковке данных. Разная ориентация таблицы поддерживает разные алгоритмы сжатия.

Ориентация таблицы

Доступные типы сжатия

Поддерживаемые алгоритмы

Строковая

На уровне таблицы

ZLIB и ZSTD

Колоночная

На уровне столбца и таблицы

RLE_TYPE, ZLIB и ZSTD

Для использования алгоритма ZLIB требуются пакеты ПО, установленные в хост-системе Greenplum.

Например, следующий SQL-запрос позволяет создать таблицу со сжатием на уровне строк и на уровне таблицы с использованием алгоритма zlib:

CREATE TABLE table_name (id INT, name TEXT) WITH (APPENDOPTIMIZED=TRUE, COMPRESSTYPE=zlib);

Эта команда создает новую таблицу с названием table_name, ​​в которой каждый сегмент Greenplum сжимает добавленные строки с использованием алгоритма сжатия ZLIB.

А следующий запрос создаст таблицу со сжатием по столбцам и на уровне таблицы:

CREATE TABLE table_name (id INT, name TEXT) WITH (APPENDOPTIMIZED=TRUE, orientation=column, COMPRESSTYPE=zstd);

Greenplum поддерживает разные уровни для разных алгоритмов сжатия. Более высокий уровень имеет большее сжатие, но скорость сжатия и распаковки остаются прежними. Уровень сжатия ZTSD может быть установлен на значения от 1 до 19. Уровень сжатия ZLIB может быть установлен на значения от 1 до 9. Уровень сжатия RLE может быть установлен на значения от 1 до 4. К примеру, запрос

CREATE TABLE table_name (id INT, name TEXT) WITH (APPENDOPTIMIZED=TRUE, COMPRESSTYPE=zstd, COMPRESSLEVEL=5);

создает AO-таблицу с названием table_name, применяя к ней алгоритм сжатия ZTSD с уровнем сжатия 5.

Можно использовать различные кодеки сжатия для разных столбцов колоночно-ориентированной таблицы:

CREATE TABLE T1 (c1 int ENCODING (compresstype=zstd), c2 char ENCODING (compresstype=zlib, blocksize=65536), c3 char) WITH (appendoptimized=true, orientation=column);

В этом примере столбец c1 сжимается с помощью кодека ZTSD и использует размер блока, определенный системой. Столбец c2 сжимается с помощью алгоритма ZLIB и использует размер блока 65536. Столбец c3 не сжимается и использует размер блока, определенный системой.

Примечательно, что можно изменить параметры сжатия для уже существующих таблиц, используя команду ALTER TABLE, например:

ALTER TABLE table_name SET (COMPRESSTYPE=zstd);

Аналогично с помощью этой же команды можно отключить сжатие, ранее настроенное для уже существующих таблиц, установив значение none в параметр COMPRESSTYPE:

ALTER TABLE table_name SET (COMPRESSTYPE=none);

Greenplum предоставляет встроенные функции для проверки степени сжатия таблицы, оптимизированной для добавления. Функции принимают либо идентификатор объекта, либо имя таблицы. К примеру, следующая команда покажет степень сжатия AO-таблицы с названием table_name:

SELECT get_ao_compression_ratio(’ table_name’);

При загрузке объемных данных из файла CSV в сжатую таблицу автоматически применяется установленный метод сжатия, например, следующая команда заполняет таблицу products данными из CSV-файла /home/gpadmin/products.csv, разделителем столбцов в котором является запятая, а пропуски значений маркируются как отсутствующие данные (NULL):

COPY products FROM ‘/home/gpadmin/products.csv’ WITH DELIMITER ‘,’ NULL as ‘NULL’;

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

Некоторые утилиты базы данных Greenplum поддерживают сжатие для ускорения передачи или обработки данных, например gpbackup, gprestore, gpcopy, gpload и gplogfilter. Например, команда резервного копирования gpcopy сжимает данные во время передачи из исходной базы данных в целевую при копировании данных на другой хост. Если для gpcopy указан флаг –no-compression, данные передаются без сжатия.

Читайте в нашей новой статье о других приемах эффективного управления данными в Greenplum и Arenadata DB.

Освойте администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://greenplum.org/10-examples-of-compression-enablement-in-greenplum/
  2. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/admin_guide-managing-compression.html

Поиск по сайту