Подготовка бэкенда для источников данных
Data Catalog использует подключения к источнику для чтения технических метаданных — определений таблиц, представлений (VIEW), материализованных представлений, процедур, индексов и информации из системных таблиц источника. Чтобы получить расширенные статистические оценки данных, Data Catalog может выполнять запросы на чтение данных или срез данных.
Для корректного и полного чтения метаданных нужно настроить бэкенд источника Data Catalog, т. е. параметры и доступы на уровне БД или другого сервиса, из которого загружаются метаданные.
Примечание
Загрузка из источника не копирует пользовательские данные в каталог метаданных.
Общие рекомендации по настройке
Чтобы Data Catalog выгружал максимально полные метаданные, настройте дополнительные права, доступы и параметры БД:
-
Для подключения к источнику создайте отдельного технического пользователя с правами только на чтение. Права на изменение данных, DDL-операции, удаление объектов или управление пользователями назначать не нужно.
-
Выдайте созданному пользователю доступ ко всем объектам, которые нужно каталогизировать. Если у технического пользователя нет доступа к схеме, таблице, представлению или индексу, Data Catalog может не выгрузить метаданные этого объекта или выгрузить их не полностью.
Рекомендуется:
- Выдавать права на все схемы и базы, которые должны попасть в каталог.
- Не выдавать права на временные, системные и служебные схемы, если их не нужно показывать пользователям.
- Использовать фильтры в настройках загрузок, чтобы явно исключать технические объекты.
-
Для полной выгрузки метаданных выдайте доступы не только к таблицам, но и к другим объектам:
- представлениям;
- материализованным представлениям;
- хранимым процедурам и функциям, если источник поддерживает их выгрузку;
- комментариям и описаниям полей;
- системным каталогам;
- статистике и логам запросов.
-
Включайте профилирование отдельно после оценки нагрузки на источник и проверки работоспособности загрузки.
Если включено профилирование, при загрузке собирается статистика по таблицам и столбцам, а также могут выполняться дополнительные запросы на чтение данных или срез данных, чтобы получить расширенные статистические оценки. Это приводит к повышенной нагрузке на источник.
Для источников в продуктивной среде лучше начинать с облегченного режима. Это регулируется размером выборки и набором статистических оценок.
Настройка бэкендов разных типов
PostgreSQL
Настройте бэкенд для загрузки метаданных источника PostgreSQL:
-
Создайте отдельного технического пользователя для загрузки:
CREATE USER data_catalog_reader WITH PASSWORD '<пароль>';Укажите его в настройках подключения к источнику.
-
Выдайте пользователю доступ к нужным базам:
GRANT CONNECT ON DATABASE <имя_БД> TO data_catalog_reader; -
Выдайте пользователю доступ к схемам:
GRANT USAGE ON SCHEMA <имя_схемы> TO data_catalog_reader; -
Выдайте пользователю доступ к таблицам и представлениям:
GRANT SELECT ON ALL TABLES IN SCHEMA <имя_схемы> TO data_catalog_reader; -
Чтобы вновь созданные таблицы тоже были доступны для загрузки, выдайте права на чтение:
ALTER DEFAULT PRIVILEGES IN SCHEMA <имя_схемы> GRANT SELECT ON TABLES TO data_catalog_reader; -
В каждой базе, для которой выполняется профилирование данных:
-
Установите расширение для сбора статистики:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -
Выдайте пользователю права на чтение статистики:
GRANT pg_read_all_stats TO data_catalog_reader; -
Проверьте, что для истории запросов установлен срок хранения (retention) не менее недели.
-
Примените настройки PostgreSQL:
shared_preload_libraries = 'pg_stat_statements'— после изменения перезапустите PostgreSQL.pg_stat_statements.max = 10000— позволяет увеличить число сохраняемых уникальных запросов для сбора статистики по редко исполняемым запросам.pg_stat_statements.track = all— позволяет отслеживать nested statements в функциях и процедурах.
-
MySQL®
Настройте бэкенд для загрузки метаданных источника MySQL®:
-
Создайте отдельного технического пользователя для загрузки:
CREATE USER 'data_catalog_reader'@'%' IDENTIFIED BY '<пароль>';Укажите его в настройках подключения к источнику.
-
Выдайте пользователю доступ к нужным базам данных:
GRANT SELECT ON <имя_БД>.* TO 'data_catalog_reader'@'%'; GRANT SHOW VIEW ON <имя_БД>.* TO 'data_catalog_reader'@'%';
Привилегия SELECT нужна для сбора метаданных и профилирования, SHOW VIEW — для чтения определений представлений. Без привилегии SHOW VIEW загрузка увидит представление как объект, но не сможет полноценно прочитать его определение и построить связи с другими объектами.
Для отображения информации о хранимых процедурах в каталоге пользователь должен иметь доступ к метаданным процедур. Обычно достаточно доступа к базе, но в Yandex Managed Service for MySQL® права могут быть ограничены политиками сервиса. Проверьте, что пользователю видны процедуры:
SHOW PROCEDURE STATUS WHERE Db = '<имя_БД>';
ClickHouse®
Настройте бэкенд для загрузки метаданных источника ClickHouse®:
-
Создайте отдельного технического пользователя для загрузки:
CREATE USER data_catalog_reader IDENTIFIED BY '<пароль>';Укажите его в настройках подключения к источнику.
-
Выдайте пользователю доступ к нужным базам данных:
GRANT SELECT ON <имя_БД>.* TO data_catalog_reader; -
Для чтения метаданных выдайте доступ к системным таблицам:
GRANT SELECT ON system.databases TO data_catalog_reader; GRANT SELECT ON system.tables TO data_catalog_reader; GRANT SELECT ON system.columns TO data_catalog_reader; -
Если используются системные словари ClickHouse®, также выдайте к ним доступ:
GRANT SELECT ON system.dictionaries TO data_catalog_reader;
Если используется RBAC и профили ClickHouse®, можно дополнительно ограничить пользователя режимом «только чтение». При этом будут разрешены запросы на чтение, включая SELECT, SHOW, DESCRIBE, EXISTS. Такие команды считаются эквивалентными чтению из системных таблиц.
OpenSearch
Настройте бэкенд для загрузки метаданных источника OpenSearch:
-
Создайте роль с правами доступа на чтение метаданных. Рекомендуемый набор прав на уровне индексов:
PUT /_plugins/_security/api/roles/read_indices_data_catalog { "index_permissions": [ { "index_patterns": ["*"], "allowed_actions": ["read", "view_index_metadata"] } ] }Для более строгой настройки рекомендуем ограничить
namesнужными шаблонами индексов, например:PUT /_plugins/_security/api/roles/read_indices_data_catalog { "index_permissions": [ { "index_patterns": ["prod-*", "analytics-*"], "allowed_actions": ["read", "view_index_metadata"] } ] } -
Создайте отдельного технического пользователя для загрузки и назначьте ему созданную роль:
PUT /_plugins/_security/api/internalusers/data_catalog_reader { "password": "<пароль>", "opendistro_security_roles": ["read_indices_data_catalog"] }Укажите его в настройках подключения к источнику.
Greenplum®
Настройте бэкенд для загрузки метаданных источника Greenplum®:
-
Создайте отдельного технического пользователя:
CREATE USER datacatalog_ingest WITH PASSWORD '<пароль>';Укажите его в настройках подключения к источнику.
-
Выдайте доступ к базе:
GRANT CONNECT ON DATABASE <имя_БД> TO datacatalog_ingest; -
Выдайте доступ к нужным схемам:
GRANT USAGE ON SCHEMA <имя_схемы> TO datacatalog_ingest; -
Выдайте доступ на чтение таблиц:
GRANT SELECT ON ALL TABLES IN SCHEMA <имя_схемы> TO datacatalog_ingest;Если нужно выгружать только структуру без профилирования и проверки доступности объектов, привилегия
SELECTна все таблицы необязательна. -
Чтобы вновь созданные таблицы тоже были доступны для загрузки, выдайте права на чтение:
ALTER DEFAULT PRIVILEGES IN SCHEMA <имя_схемы> GRANT SELECT ON TABLES TO datacatalog_ingest; -
Для анализа наиболее частых запросов могут потребоваться дополнительные права. Например:
GRANT pg_read_all_stats TO datacatalog_ingest;Также может потребоваться включенное расширение
pg_stat_statements:CREATE EXTENSION IF NOT EXISTS pg_stat_statements;Важно
Доступность
pg_stat_statementsи ролиpg_read_all_statsзависит от версии Greenplum® и настроек кластера. -
Чтобы Data Catalog автоматически отображал бизнес-описания, добавьте комментарии к таблицам и столбцам. Например:
COMMENT ON TABLE mart.orders_daily IS 'Daily aggregated order metrics'; COMMENT ON COLUMN mart.orders_daily.orders_count IS 'Number of orders per day';
Yandex StoreDoc/MongoDB
Настройте бэкенд для загрузки метаданных источников Yandex StoreDoc/MongoDB:
-
Создайте отдельного технического пользователя:
db.createUser({ user:"datacatalog_ingest", pwd:"<пароль>", roles:[]});Укажите его в настройках подключения к источнику.
-
Для стандартной выгрузки выдайте техническому пользователю минимально необходимые права:
-
Доступ на чтение ограниченного списка баз, если нужно выгрузить только их метаданные:
db.grantRolesToUser("datacatalog_ingest", [ { role: "read", db: "<имя_БД>" } ]); -
Роль
readAnyDatabase, если нужно выгрузить метаданные всех доступных баз:db.grantRolesToUser("datacatalog_ingest", [ { role: "readAnyDatabase", db: "admin" } ]);
-
Обзор необходимых требований для загрузки
|
Источник |
Минимальные права |
Для представлений / связей объектов |
Для статистики выполнения запросов |
Для профилирования |
|
PostgreSQL, Greenplum® |
|
Доступ к определениям представлений |
|
|
|
MySQL® |
|
|
Не поддерживается |
|
|
ClickHouse® |
|
|
Не поддерживается |
|
|
OpenSearch |
Чтение индексов и метаданных |
Не применимо |
Не поддерживается |
Доступ на чтение индексов |
|
Yandex StoreDoc/MongoDB |
Чтение БД |
Настройка не требуется |
Не поддерживается |
Не поддерживается |
|
Yandex Data Transfer, WebSQL |
Настройка не требуется |
Не поддерживается |
Не поддерживается |
Не поддерживается |
|
DataLens |
Для сервисного аккаунта источника данных необходим доступ к нужным дашбордам, датасетам, чартам и отчетам |
Не поддерживается |
Не поддерживается |
Не поддерживается |
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.