34.5. Хранилище для аналитических файлов #
Расширение pgpro_duckdb позволяет выполнять аналитические запросы к OLAP-данным, которые хранятся в таблицах Postgres Pro или автономном хранилище. В большинстве случаев используется автономное хранилище. Это вызвано следующими причинами:
OLAP-данные сохраняются в автономное хранилище в столбцовом формате, оптимизированном для выполнения аналитических запросов.
Автономное хранилище позволяет изолировать ввод/вывод аналитических запросов от OLTP-назгрузки.
Сетевые хранилища позволяют хранить большие объёмы исторических данных и обеспечивают достаточную производительность для выполнения ресурсоёмких аналитических запросов.
Общие хранилища могут быть использованы резервными серверами для улучшения масштабируемости и изоляции нагрузки.
Примечание
В настоящее время не рекомендуется использовать локальные хранилища в основном сценарии развёртывания, так как расширение pgpro_duckdb требует членства в глобальной роли, назначающей права пользователя postgres
.
Однако локальное хранилище может использоваться одним экземпляром Postgres Pro Enterprise с выделенным аналитиком, когда данные можно легко восстановить.
34.5.1. Parquet-файлы #
Расширение pgpro_duckdb хранит OLAP-данные в Parquet-файлах. Этот столбцовый формат поддерживает различные методы сжатия, а также включает в себя базовую статистику по данным. Хранимую статистику по данным можно использовать для переноса фильтров и проекций на файловый уровень (filter pushdown и projection pushdown), чтобы уменьшить объём читаемых данных.
34.5.2. Структура каталогов #
Для хранения OLAP-данных можно использовать любую структуру каталогов, например:
В локальном хранилище:
rootpath/db_name/schema_name/table_name
В S3-хранилище:
s3://bucket/db_name/schema_name/table_name
Расширение pgpro_duckdb позволяет автоматически экспортировать OLAP-данные в несколько Parquet-файлов и добавлять уникальный номер к имени каждого файла. OLAP-данные проще хранить в виде нескольких Parquet-файлов одинакового размера.
Вы также можете использовать Hive-секционирование (Hive partitioning), чтобы организовать OLAP-данные по ключам секционирования в иерархии каталогов:
table_name ├── year=2024 │ ├── month=1 │ │ ├── file1.parquet │ │ └── file2.parquet │ └── month=2 │ └── file3.parquet └── year=2025 ├── month=11 │ ├── file4.parquet │ └── file5.parquet └── month=12 └── file6.parquet
Иерархия такого типа может быть полезна для больших исторических таблиц, когда аналитическим запросам необходимы данные, связанные с конкретным набором ключей секционирования.
Также поддерживается перенос фильтров на файловый уровень (filter pushdown) на уровне путей. Это позволяет пропускать при чтении пути, которые не содержат необходимые OLAP-данные.