Глава 15. Хранилища

Хранилища — это физические расположения Parquet-файлов и общих каталогов. Postgres Pro AXE поддерживает следующие типы хранилищ:

  • Локальные хранилища: массивы дисков, поддерживающих протокол NVME (энергонезависимая память Express), на серверах с установленным Postgres Pro AXE.

  • Сетевые хранилища: сетевые файловые системы (Network File Systems, NFS).

  • S3-хранилища.

Чтобы определиться с типом хранилища, используйте информацию из таблицы ниже.

Локальное хранилище

Сетевое хранилище

S3-хранилище

Пропускная способность

Высокая

Определяется количеством NVME-дисков в массиве

Средняя

Ограничена возможностями сетевого интерфейса сервера, сетевой нагрузкой и скоростью сетевого хранилища

Средняя

Ограничена возможностями сетевого интерфейса сервера, сетевой нагрузкой и скоростью S3-хранилища

Масштабируемость данных

Средняя

Определяется количеством NVME-дисков и их объёмом

Высокая

Высокая

Распределение данных по серверам

Не поддерживается

Поддерживается в рамках сети организации

Глобальный

Поставщик отказоустойчивости

Администратор сервера Postgres Pro AXE

Администратор NFS

Поставщик услуг S3-хранилища

Стоимость за терабайт и за одно обращение к хранилищу

Низкая

Средняя

Зависит от поставщика услуг S3-хранилища

Метаданные хранилищ хранятся в таблице метаданных pga_storage.

Для хранения OLAP-данных можно использовать любую структуру каталогов, например:

  • В локальном или сетевом хранилище:

    корневой_путь/имя_бд/имя_схемы/имя_таблицы
  • В S3-хранилище:

      s3://корзина/имя_бд/имя_схемы/имя_таблицы

pgpro_axe позволяет автоматически экспортировать OLAP-данные в несколько Parquet-файлов и добавлять уникальный номер к имени каждого файла. OLAP-данные проще хранить в виде нескольких Parquet-файлов одинакового размера.

Для организации OLAP-данных по ключам секционирования в иерархии каталогов можно также использовать hive-секционирование:

  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

Этот тип иерархии может быть полезен для больших исторических таблиц, когда для выполнения аналитических запросов требуются данные, связанные с определённым подмножеством ключей секционирования.

Перенос фильтров на уровень пути также поддерживается. Благодаря этому в процессе чтения можно пропустить пути, которые не содержат необходимых OLAP-данных.

Для работы с S3-хранилищами используются сторонние серверы Postgres Pro. Благодаря этому параметры подключения и учётные данные пользователей надёжно хранятся в Postgres Pro без их указания в функциях. В настоящее время можно создать только одно S3-хранилище.