Перейти к содержанию

Синхронизация и сканирование баз данных

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

  • Синхронизация схемы базы данных: получает схему базы данных, структуру таблиц, поля, ограничения (первичные и внешние ключи) и деактивирует удалённые таблицы.

  • Сканирование значения полей: берёт образцы значений столбцов, чтобы заполнять выпадающие списки фильтров, находить уникальные значения и предлагать подходящие визуализации. Glarus BI не хранит полные таблицы из вашей базы данных.

  • Снятие слепков: берёт первые 10 000 строк таблицы и рассчитывает статистики по каждому полю выборки в зависимости от типа, в частности: количество уникальных значений, долю NULL (для всех типов), среднее, медиану, минимум, максимум и квартили (для числовых типов).

Первоначальная синхронизация, сканирование и снятие слепков

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

За ходом выполнения этих задач можно следить: откройте Управление > Инструменты > Фоновые задачи и отфильтруйте список по задачам синхронизации.

После завершения задач вы можете просматривать и редактировать синхронизированные метаданные в Управление > Метаданные таблиц. Подробнее см. в разделе редактирование метаданных.

Выберите, когда запускать синхронизацию и сканирование

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

  1. Выберите Управление > Базы данных > (ваше подключение к базе данных). Откройте настройки подключения.
  2. В разделе Подключение и синхронизация нажмите Редактировать детали подключения.
  3. Разверните Отобразить дополнительные опции.
  4. Включите Выберите, когда будет выполняться синхронизация и сканирование.

После этого вы сможете настроить расписание синхронизации и сканирования.

Синхронизация базы данных

Варианты:

  • частота синхронизации: каждый час или ежедневно;
  • время запуска синхронизации (в часовом поясе сервера, на котором работает Glarus BI).

Сканирование значений для фильтров

В сканирование попадают только «активные поля» — поля, которые кто‑то использовал последние 14 дней. Glarus BI не будет сканировать поля, которыми не пользовались более 14 дней. Поля снова станут активными, когда кто‑то их использует, и Glarus BI включит их в следующее сканирование.

Варианты:

  • Регулярно, по расписанию позволяет запускать запросы сканирования с частотой, соответствующей скорости изменения вашей базы данных. Время задаётся в часовом поясе сервера, на котором запущено приложение Glarus BI. Это лучший вариант для небольшой базы данных или таблиц с отдельными значениями, которые часто обновляются.
  • Только при добавлении виджета фильтра — подходящий вариант, если вы хотите запускать запросы сканирования по требованию. Включение этой опции означает, что Glarus BI будет сканировать и кэшировать значения только тех полей, которые используются, когда кто‑то добавляет новый виджет фильтра на дашборд или в прямой запрос (то есть добавляет параметр в прямой запрос).
  • Никогда, я сделаю это вручную, если потребуется — вариант для баз данных, которые слишком большие или в которых новые значения практически не появляются. Используйте кнопку Повторно сканировать значения полей сейчас, чтобы запустить ручное сканирование и обновить значения фильтров.

Независимо от выбранного варианта, если вы настроите поле так, чтобы в виджетах фильтров использовался выпадающий список, Glarus BI понадобятся значения для этого списка. Когда кто‑то использует такой виджет фильтра, система сначала попытается использовать кэшированные значения (хранятся без доступа к ним до 14 дней), чтобы заполнить выпадающий список; в противном случае выполнит повторное сканирование этого поля, чтобы получить самые актуальные значения.

Ручная синхронизация таблиц и столбцов

  1. Перейдите в Управление > Базы данных > (ваше подключение к базе данных). Откройте настройки подключения.
  2. Нажмите Синхронизировать схему базы данных сейчас.

Ручное сканирование значений столбцов

Чтобы сканировать значения всех столбцов таблицы:

  1. Выберите Управление > Метаданные таблиц > (ваша база данных).
  2. Выберите таблицу, которую хотите синхронизировать с текущим состоянием базы данных.
  3. Нажмите шестерёнку в верхней части страницы.
  4. Нажмите Пересканировать эту таблицу.

Чтобы сканировать значения конкретного столбца:

  1. Перейдите в Управление > Метаданные таблиц > (ваша база данных).
  2. Выберите таблицу.
  3. Найдите столбец, который хотите синхронизировать с текущим состоянием базы данных.
  4. Нажмите шестерёнку на панели напротив этого столбца.
  5. Нажмите Пересканировать это поле.

Сброс кэшированных значений для таблицы или поля

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

  1. Перейдите в Управление > Метаданные таблиц.
  2. Выберите базу данных и таблицу.
  3. Нажмите шестерёнку в правом верхнем углу.
  4. Нажмите Сбросить кэшированные значения полей.

Вы также можете попросить Glarus BI «забыть» кэшированные значения для отдельных полей: нажмите значок шестерёнки напротив поля и выберите Сбросить кэшированные значения полей.

Отключение синхронизации и сканирования для конкретных таблиц

Если вам нужно, чтобы синхронизация и сканирование не запускались для конкретной таблицы, измените видимость таблицы на Скрыта:

  1. Перейдите в Управление > Метаданные таблиц > (ваша база данных).
  2. Наведите курсор на название таблицы в боковой панели.
  3. Нажмите значок глаза.

Примечание

Скрытие таблицы также предотвратит её появление в конструкторе запросов и в справочнике данных. При этом пользователи всё ещё могут обращаться к скрытым таблицам из редактора прямых запросов.

Синхронизация и сканирование через API

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

Синхронизация или сканирование базы данных

Вы можете использовать эти методы, аутентифицировавшись с помощью ID пользователя и передав session token в заголовке запроса.

  • Синхронизировать схему базы данных: /api/database/{id}/sync_schema
  • Повторно просканировать значения полей: /api/database/{id}/rescan_values

Синхронизация одной таблицы

  • /api/notify/db/{id} — чтобы синхронизировать базу данных или (опционально) конкретную таблицу.
  • /api/notify/db/{id}/new-table — чтобы синхронизировать новую таблицу без синхронизации всей базы данных. Требуются schema_name и table_name.

Чтобы использовать этот метод, нужно передать строку через переменную окружения MB_API_KEY. Эта строка отличается от API‑ключей.

Метод notify позволяет пользователям запустить синхронизацию после завершения операции ETL (документация Metabase, англ.).

См. документацию по API.

Как работает синхронизация базы данных

Синхронизация в Glarus BI — это запрос, который получает из вашей базы данных список обновлённых названий таблиц и представлений, названий столбцов и типов данных столбцов:

SELECT
    TRUE
FROM
    "your_schema"."your_table_or_view"
WHERE
    1 <> 1
LIMIT 0

По умолчанию этот запрос выполняется во время настройки и затем повторяется каждый час. Такой запрос обычно быстрый для большинства реляционных баз данных, но может быть медленнее для MongoDB и некоторых драйверов баз данных, созданных сообществом Metabase. Синхронизацию нельзя полностью отключить — иначе Glarus BI не будет работать.

Данные, которые получает синхронизация, приводятся в таблице:

Что Зачем
Названия таблиц Материал для анализа.
Названия полей Материал для анализа.
Типы данных полей Для корректнй обработки типов и выполнения запросов.
Первичные ключи Для отображения таблиц, детальных представлений и автосоединений.
Внешние ключи Для автосоединений и визуализации связей.

Как работает сканирование базы данных

Сканирование в Glarus BI — это запрос, который кэширует значения столбцов для выпадающих списков фильтров, анализируя первую тысячу уникальных записей из каждой таблицы по возрастанию:

SELECT
    "your_table_or_view"."column" AS "column"
FROM
    "your_schema"."your_table_or_view"
GROUP BY
    "your_table_or_view"."column"
ORDER BY
    "your_table_or_view"."column" ASC
LIMIT 1000

Для каждой записи Glarus BI хранит только первые 100 килобайт текста. Поэтому если у вас данные по 1 000 символов в каждой строке (например, адреса) и в столбце более 100 уникальных адресов, Glarus BI кэширует только первые 100 значений из запроса сканирования.

Кэшированные значения полей отображаются в выпадающих меню фильтров. Когда пользователь вводит в поле поиска фильтра значения, которых нет среди первой тысячи уникальных записей или первых 100 килобайт текста, Glarus BI выполнит запрос к вашей базе данных, чтобы искать эти значения «на лету».

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

Чтобы уменьшить количество таблиц и полей для сканирования, Glarus BI сканирует значения только тех полей, которые кто‑то запрашивал в течение последних 14 дней.

Данные, получаемые сканированием:

Что Зачем
Уникальные значения для полей "Категория" Выпадающий список фильтра вместо ввода текста.
Кэшированные значения для активных полей Улучшает пользовательский опыт работы с фильтрами.
Расширенные значения полей (с контекстом фильтрации) Значения, когда данные ограничены безопасностью по строкам или столбцам.

Периодически снимать слепки таблиц

По умолчанию Glarus BI выполняет запросы снятия слепков только при первом подключении базы данных.

Предупреждение

Периодическое снятие слепков увеличит нагрузку на вашу базу данных.

Включите эту настройку, если вы хотите, чтобы Glarus BI использовал более крупные выборки значений столбцов при формировании подсказок в интерфейсе:

  1. Перейдите в Управление > Базы данных > (ваше подключение к базе данных).
  2. Откройте настройки подключения.
  3. Разверните Показать дополнительные параметры.
  4. Включите Периодический слепок таблиц.

Как работает снятие слепков

Запрос снятия слепка анализирует первые 10 000 строк заданной таблицы или представления в вашей базе данных:

SELECT
    *
FROM
    "your_schema"."your_table_or_view"
LIMIT 10000

Glarus BI использует результат этого запроса, чтобы предлагать более подходящие варианты в интерфейсе (например, автоматическое разбиение на интервалы).

Чтобы не создавать лишнюю нагрузку на вашу базу данных, Glarus BI выполняет запросы снятия слепков только в первый раз, когда вы настраиваете подключение к базе данных.

По умолчанию после первоначального снятия слепка Glarus BI не пересоздаёт слепки. Чтобы пересоздавать слепки данных, включите Периодически снимать слепки таблиц.

Данные, получаемые слепками, и их назначение:

Что Зачем
Количество уникальных значений Определяет стратегию кэширования значений полей.
Мин/макс числовых значений Разбиение на интервалы в визуализациях и фильтрах диапазона.
Диапазон дат (мин/макс) Значения по умолчанию для фильтров дат и отображение на временно́й шкале.
Обнаружение специальных типов (URL, email, JSON, геоданные) Отрисовка поля и фильтрация.
Доля NULL Оценка качества данных.
Средние/медианные значения Значения визуализации по умолчанию.
Метрики длины текста Скрытие длинных текстовых полей в интерфейсе.

Дополнительная информация

Glarus BI не выполняет кэширование или ограничение скорости во время процесса синхронизации и сканирования. Если ваши данные отсутствуют или устарели, ознакомьтесь с: