34.5. Хранилище для аналитических файлов #

34.5.1. Parquet-файлы
34.5.2. Структура каталогов

Расширение pgpro_duckdb позволяет выполнять аналитические запросы к OLAP-данным, которые хранятся в таблицах Postgres Pro или автономном хранилище. В большинстве случаев используется автономное хранилище. Это вызвано следующими причинами:

Примечание

В настоящее время не рекомендуется использовать локальные хранилища в основном сценарии развёртывания, так как расширение 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-данные.