[Документация Yandex Cloud](../../index.md) > [Yandex MPP Analytics for PostgreSQL](../index.md) > [Концепции](overview.md) > Хранилище в Yandex MPP Analytics for PostgreSQL > Гибридное хранилище

# Гибридное хранилище в Yandex MPP Analytics for PostgreSQL


{% note info %}

Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md) и не тарифицируется.

{% endnote %}


В кластерах Yandex MPP Analytics for PostgreSQL поддерживается _гибридное хранилище_: часть данных может находиться в хранилище кластера, а часть — в холодном хранилище. По умолчанию данные хранятся в хранилище кластера [на дисках выбранного типа](storage.md). Данные, с которыми работают редко, но которые нужно хранить долго, можно перенести из хранилища кластера в холодное хранилище — в служебный бакет Yandex Object Storage. Так хранение [будет дешевле](../pricing/index.md#rules-storage).

Гибридное хранилище можно включить в кластерах Yandex MPP Analytics for PostgreSQL при [создании](../operations/cluster-create.md) или [изменении](../operations/update.md#change-additional-settings) кластера.

{% note warning %}

Включенное в кластере гибридное хранилище нельзя отключить.

{% endnote %}

## Область применения гибридного хранилища {#usage-scope}

Гибридное хранилище можно использовать только для таблиц, которые [оптимизированы для добавления](tables.md) (append-optimized). При переносе данных между хранилищем кластера и холодным хранилищем переносятся таблицы целиком. Для работы с таблицами используется [расширение Yezzey](https://github.com/open-gpdb/yezzey), разработанное Yandex Cloud.

Данные таблиц, оптимизированных для добавления, хранятся в виде набора сегментных файлов в сжатом и зашифрованном виде в служебном бакете Object Storage. Количество сегментных файлов зависит от количества сегментов в кластере и от структуры таблицы.

## Управление вводом-выводом при использовании гибридного хранилища {#io-planning}

При выполнении SQL-запросов к таблицам, оптимизированным для добавления, происходит множество обращений к сегментным файлам в хранилище. Время выполнения SQL-запросов зависит от того, насколько эффективно планируются запросы ввода-вывода к сегментным файлам. Если не планировать запросы ввода-вывода, то страдает производительность хранилища, увеличивается потребление оперативной памяти и время выполнения SQL-запросов. Использование планировщика позволяет защитить кластер от деградации производительности при выполнении SQL-запросов, требующих обработки большого количества данных.

Когда данные хранятся в хранилище кластера, планированием запросов ввода-вывода занимается операционная система на хостах кластера.

Когда данные хранятся в холодном хранилище, операционная система не может планировать запросы ввода-вывода к служебному бакету Object Storage. Поэтому, чтобы избежать деградации производительности, в кластерах Yandex MPP Analytics for PostgreSQL планированием таких запросов занимается специальный прокси YProxy, разработанный Yandex Cloud. Благодаря использованию YProxy, даже если таблица размещена в холодном хранилище, то это оказывает минимальное влияние на время выполнения SQL-запросов.

Пропускная способность при обращении к данным в холодном хранилище ограничивается значением в 1 гигабайт в секунду с одного сегментного хоста вне зависимости от числа сегментов на хост. Например, если в вашем кластере 8 сегментных хостов, то максимальная пропускная способность при обращении к данным в холодном хранилище для всего кластера не будет превышать 8 гигабайт в секунду.

Подробнее про архитектуру гибридного хранилища читайте в [статье на Хабре](https://habr.com/ru/companies/yandex_cloud_and_infra/articles/831780/). В статье также приводятся тесты производительности для разных типов хранилищ.

## Очистка гибридного хранилища {#storage-vacuum}

Для таблиц AO и AOCO в гибридном хранилище операции `VACUUM` и `VACUUM FULL` выполняются так же, как и для подобных таблиц в хранилище кластера. Однако, так как данные в холодном хранилище не затрагиваются процессом очистки, для автоматического удаления ненужных сегментных файлов выполняется следующая процедура:

1. В ходе выполнения операций `VACUUM` и `VACUUM FULL` для таблиц гибридного хранилища список сегментных файлов в холодном хранилище обновляется. В списке остаются только файлы, в которых содержатся актуальные строки таблиц.
1. Сервис Yezzey сохраняет в служебной таблице имена файлов, не включенных в список, и время операции. Эти файлы становятся кандидатами на удаление.
1. Независимо от операций очистки, сервис Yezzey еженедельно проверяет записи в этой служебной таблице. Если файловая запись создана раньше, чем самая старая автоматическая [резервная копия](backup.md), файл удаляется из служебного бакета Object Storage в «корзину», а его запись — из служебной таблицы. По истечении недели файл удаляется из «корзины».

Эта процедура гарантирует, что из холодного хранилища не будут удалены файлы, необходимые для восстановления из резервной копии кластера с гибридным хранилищем.

## Примеры использования {#examples}

* [Выгрузка данных Greenplum® в холодное хранилище Yandex Object Storage](../tutorials/yezzey.md)

_Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах._