Использование DBCatalogManager

Обзор

DBCatalogManager — это одна из реализаций управления каталогами Trino, которая хранит конфигурации каталогов в базе данных ADPG/PostgreSQL, а не в файлах .properties. Хранение метаданных каталога в БД — полезная практика с точки зрения совместного доступа, версионирования, синхронизации настроек, а также безопасности.

Данная реализация позволяет динамически управлять каталогами Trino с помощью команд CREATE CATALOG/DROP CATALOG. DBCatalogManager позволяет обновлять свойства каталогов без необходимости перезапускать сервис Trino. DBCatalogManager поддерживает шифрование для хранения конфиденциальных параметров конфигурации в зашифрованном виде.

По умолчанию DBCatalogManager настроен для работы с ADH-сервисом ADPG. DBCatalogManager может подключаться к ADPG-сервису "из коробки", не требуя дополнительных настроек, а также может инициализировать все необходимые сущности на стороне ADPG (БД, пользователь, роль). Больше информации об использовании DBCatalogManager с сервисом ADPG можно найти в разделе Пример подключения к ADPG.

Активация DBCatalogManager

DBCatalogManager можно активировать с помощью ADCM. Для этого укажите значение DB в параметре catalog.management (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → Trino catalog management) и перезапустите сервис Trino.

РЕКОМЕНДАЦИЯ
При выборе DBCatalogManager и последующем рестарте сервиса Trino ADCM предлагает автоматически создать необходимые сущности в ADPG (БД, пользователь, роли).

После активации DBCatalogManager новые каталоги можно создавать с помощью команды CREATE CATALOG, а сервис Trino будет сохранять конфигурацию каталогов в БД, указанной в свойстве Postgres JDBC URL (БД по умолчанию — catalog).

DBCatalogManager сохраняет конфигурации каталогов в таблицах в схеме trino. Например, чтобы увидеть эти таблицы с помощью psql, используйте команду:

\c catalog
\dt trino.*

Вывод:

                    List of relations
 Schema |             Name             | Type  |  Owner
--------+------------------------------+-------+---------
 trino  | catalog                      | table | catalog
 trino  | catalog_property             | table | catalog
 trino  | catalog_scheduler_job_launch | table | catalog

Настройка

ADCM предоставляет список конфигурационных параметров для настройки DBCatalogManager. Эти параметры приведены ниже.

Trino catalog management
Параметр Описание Значение по умолчанию

catalog.management

Тип менеджера каталогов

static

Postgres JDBC URL

URL для JDBC-подключения к хранилищу каталогов Postgres

jdbc:postgresql://{{ groups['adpg.adpg'][0] | d(omit) }}:5432/catalog

Postgres username

Имя пользователя хранилища каталогов Postgres для JDBC-подключения

catalog

Postgres password

Пароль для JDBC-подключения к хранилищу каталогов Postgres

 — 

Enable cleanup

Определяет, включена ли очистка каталогов старых версий

true

Encryption password

Пароль для шифрования свойств

 — 

RegEx pattern

Шаблон регулярного выражения для определения свойств, подлежащих шифрованию

 — 

Cleanup old version catalogs

Интервал очистки каталогов старых версий. Минимальное значение --10d

30d

Time to live of old version catalogs

Время жизни (TTL) каталогов старых версий. Минимальное значение — 1d

365d

Версионирование и удаление каталогов

Выполнение команды DROP CATALOG для DBCatalogManager не удаляет данные каталога мгновенно, а помечает каталог как неактивный. Такой каталог не будет отображаться при последующих операциях SHOW CATALOGS.

Неактивные каталоги могут храниться в базе данных в течение определенного периода времени, который можно указать с помощью параметра Time to live of old version catalogs в настройках ADCM. После этого каталоги старше указанного time-to-live значения удаляются планировщиком, который регулярно запускает процесс очистки через определенный интервал (свойство Cleanup old version catalogs).

Шифрование

DBCatalogManager позволяет шифровать определенные поля конфигурации перед записью в базу данных. Чтобы указать поле, которое необходимо зашифровать, используйте параметр RegEx pattern в ADCM. В значении параметра необходимо указать регулярное выражение, соответствующее одному или нескольким ключам свойств конфигурации каталога, которые необходимо зашифровать. Например, для шифрования паролей можно использовать следующее выражение:

.*password

Специальные команды SQL

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

Миграция каталогов

Trino-каталоги, конфигурация которых хранится в файлах .properties, можно мигрировать в область видимости DbCatalogManager. В таком случае конфигурация будет перенесена в соответствующую базу данных. Для миграции используйте команду:

MIGRATE CATALOG [IF NOT EXISTS] ALL | <catalog_name>;

Ниже показаны примеры миграции одного каталога, а также всех доступных каталогов:

MIGRATE CATALOG IF NOT EXISTS test_trino_catalog
MIGRATE CATALOG IF NOT EXISTS ALL

История каталога

Для просмотра истории каталога используйте команду:

SHOW CATALOG HISTORY <catalog_name>;

Например:

SHOW CATALOG HISTORY test_gg_catalog;

catalog_name   |catalog_version|connector_name|start_time         |end_time           |is_active|
---------------+---------------+--------------+-------------------+-------------------+---------+
test_gg_catalog|              2|greengagedb   |2026-03-18 12:25:13|                   |true     |
test_gg_catalog|              1|greengagedb   |2026-03-18 12:24:46|2026-03-18 12:25:13|false    |

Управление свойствами каталога

Для просмотра свойств каталога используйте команду:

SHOW CATALOG PROPERTIES <catalog_name>;
ПРИМЕЧАНИЕ
Конфиденциальные данные (пароли, токены, секретные ключи) хранятся и отображаются в зашифрованном виде.

Например:

SHOW CATALOG PROPERTIES test_gg_catalog;

Вывод:

catalog_version|property_name                 |property_value                |
---------------+------------------------------+------------------------------+
              2|connection-user               |gpadmin                       |
              2|connection-password           |0hYfloia/FMT3cezkVqFnQ==      |
              2|connection-url                |jdbc:postgresql://mdw:6000/adb|

Чтобы получить свойства для конкретной версии каталога, используйте синтаксис:

SHOW CATALOG PROPERTIES <catalog_name> VERSION <version_number>;

Например:

SHOW CATALOG PROPERTIES test_gg_catalog VERSION 1;

Вывод:

catalog_version|property_name      |property_value                |
---------------+-------------------+------------------------------+
              1|connection-user    |gpadmin                       |
              1|connection-url     |jdbc:postgresql://mdw:6000/adb|
              1|connection-password|0hYfloia/FMT3cezkVqFnQ==      |

Для установки свойств каталога используйте команду:

ALTER CATALOG <catalog_name> SET PROPERTIES (FROM VERSION <version_number> | key1=value [, key2=value] ...);

Например:

ALTER CATALOG test_gg_catalog SET PROPERTIES "case-insensitive-name-matching"='false'; (1)
ALTER CATALOG test_gg_catalog SET PROPERTIES FROM VERSION 1; (2)
1 Установка одного свойства каталога.
2 Создание новой версии каталога с установкой всех свойств, которые ранее были заданы в версии каталога 1.

Пример подключения к ADPG

В следующем примере показано использование DBCatalogManager с сервисом ADPG, работающим в том же кластере ADH. Сценарий предполагает, что оба сервиса Trino и ADPG используют настройки по умолчанию, что позволяет установить соединение без каких-либо манипуляций на стороне ADPG. Если для подключения к ADPG необходимо использовать другого пользователя, пароль или базу данных, укажите их с помощью соответствующих настроек.

  1. Активируйте DBCatalogManager, используя параметр Trino catalog.management в ADCM (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → Trino catalog management) и перезапустите сервис Trino. При выполнении действия Restart убедитесь, что выбрана опция Init DB credentials.

  2. Создайте тестовый каталог Trino. Для этого подключитесь к Trino Coordinator и выполните команду:

    CREATE CATALOG test_trino_catalog USING memory
    WITH ("memory.max-data-per-node"='128MB');
  3. Убедитесь, что каталог создан:

    SHOW CATALOGS;

    Вывод:

    information_schema
    test_trino_catalog
  4. Проверьте базу данных ADPG на наличие новых таблиц. Например, с помощью psql запросите таблицы, принадлежащие схеме trino:

    \c catalog
    SELECT * FROM trino.catalog;

    Пример вывода:

     id |        name        | connector_name |         date_from          | date_to | is_active
    ----+--------------------+----------------+----------------------------+---------+-----------
      1 | test_trino_catalog | memory         | 2025-06-03 21:12:11.193509 |         | t
  5. Чтобы перенести в базу данных существующий каталог, хранящийся в файле .properties (например, /etc/trino/catalogs/hive-adh.properties), выполните команду:

    MIGRATE CATALOG "hive-adh"

    Убедитесь, что каталог появился в списке доступных:

    SHOW CATALOGS;

    Вывод:

    Catalog           |
    ------------------+
    hive-adh          |
    system            |
    test_trino_catalog|

    Проверьте информацию о каталоге в ADPG:

    \c catalog
    SELECT * FROM trino.catalog;

    Вывод:

     id |        name        | connector_name |         date_from          | date_to | is_active
    ----+--------------------+----------------+----------------------------+---------+-----------
      1 | test_trino_catalog | memory         | 2025-06-03 21:12:11.193509 |         | t
      2 | hive-adh           | hive           | 2025-06-03 22:10:43.222419 |         | t
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней