# Синхронизация и сканирование баз данных GlarusBI запускает разные типы запросов, чтобы быть в курсе вашей базы данных. - [Синхронизация](#how-database-syncs-work) обновляет схемы для отображения в [Data Browser](https://www.metabase.com/learn/getting-started/data-browser). - [Сканирование](#how-database-scans-work) берет образцы значений столбцов для заполнения выпадающих меню фильтров и предлагает полезные визуализации. GlarusBI не хранит _полные_ таблицы из вашей базы данных. - [Отпечаток](#how-database-fingerprinting-works) берет дополнительный образец значений столбцов, чтобы помочь с 'умным поведением', таким как автоматическое объединение для столбчатых диаграмм. ## Первоначальная синхронизация, сканирование и отпечаток Когда GlarusBI первый раз подключается к вашей базе данных, он выполняет [синхронизацию](#how-database-scans-work), чтобы определить метаданные столбцов в ваших таблицах и автоматически назначить каждому столбцу [семантический тип](../data-modeling/field-types.md). После успешной синхронизации GlarusBI выполняет [сканирование](#scheduling-database-scans) каждой таблицы для поиска URL-адресов, JSON, закодированных строк и т. д. Запросы [отпечатка](#how-database-fingerprinting-works) выполняются после завершения синхронизации. Вы можете следить за ходом выполнения этих запросов в разделе **Администрирование** > **Устранение неполадок** > **Журналы**. Как только запросы будут выполнены, вы сможете просматривать и редактировать синхронизированные метаданные в разделе **Администрирование** > **Метаданные таблиц**. Для получения дополнительной информации см. [редактирование метаданных](../data-modeling/metadata-editing.md). ## Выберите, когда GlarusBI запускает синхронизацию и сканирование Если вы хотите изменить расписание по умолчанию для запросов [синхронизации](#how-database-scans-work) и [сканирования](#scheduling-database-scans): 1. Выберите **Администрирование** > **Базы данных** > ваша база данных. 2. Разверните **Показать дополнительные параметры**. 3. Включите **Выберите, когда происходят синхронизация и сканирование**. ## Планирование синхронизации базы данных Если вы выбрали **Выберите, когда GlarusBI будет запускать синхронизацию и сканирование** > **ВКЛ**, вы сможете установить: - Частота [сканирования](../sync-scan.md#how-database-scans-work) раз в час или раз в день. - Время, когда сканирование будет запущено, в часовом поясе сервера, где работает ваше приложение GlarusBI. ## Планирование сканирования базы данных Если вы выбрали **Выберите, когда GlarusBI будет запускать синхронизацию и сканирование** > **ВКЛ**, вы увидите следующие параметры в разделе **Сканирование значений фильтров**: - **Регулярно, по расписанию** позволяет запускать [запросы сканирования](../sync-scan.md#how-database-scans-work) с частотой, соответствующей скорости изменения вашей базы данных. Время устанавливается в часовом поясе сервера, где работает ваше приложение GlarusBI. Это лучший вариант для небольшой базы данных или таблиц с отдельными значениями, которые часто обновляются. - **Только при добавлении нового виджета фильтра** - отличный вариант, если вы хотите, чтобы запросы сканирования запускались по требованию. Включение этой опции означает, что GlarusBI будет сканировать и кэшировать значения поля(ей), используемые при добавлении нового фильтра на панель инструментов или SQL-вопрос. - **Никогда, я сделаю это вручную, если мне это понадобится** - это вариант для баз данных, которые либо чрезвычайно велики, либо в которых никогда не добавляются новые значения. Используйте кнопку [Повторно отсканировать значения поля сейчас](../sync-scan.md#manually-scanning-column-values), чтобы запустить ручное сканирование и обновить значения фильтра. ## Ручная синхронизация таблиц и столбцов 1. Выберите **Администрирование** > **Базы данных** > ваша база данных. 2. Нажмите **Синхронизировать схему базы данных сейчас**. ## Ручное сканирование значений столбцов Чтобы сканировать значения из всех столбцов таблицы: 1. Выберите **Администрирование** > **Метаданные таблиц** > ваша база данных. 2. Выберите таблицу, которую вы хотите обновить в соответствии с вашей базой данных. 3. Нажмите **иконку шестеренки** в верхней части страницы. 4. Нажмите **Повторно отсканировать эту таблицу**. Чтобы сканировать значения из конкретного столбца: 1. Выберите **Администрирование** > **Метаданные таблиц** > ваша база данных. 2. Выберите таблицу, которую вы хотите обновить в соответствии с вашей базой данных. 3. Найдите столбец, который вы хотите обновить в соответствии с вашей базой данных. 4. Нажмите **иконку шестеренки** в панели для этого столбца. 5. Нажмите **Повторно отсканировать это поле**. ## Периодически пересоздать отпечатки таблиц > Периодическое пересоздание отпечатков увеличит нагрузку на вашу базу данных. По умолчанию GlarusBI запускает запросы [отпечатков](#how-database-fingerprinting-works) только при первом подключении базы данных. Включите эту настройку, если вы хотите, чтобы GlarusBI использовал большие выборки значений столбцов при предложении в пользовательском интерфейсе: 1. Выберите **Администрирование** > **Метаданные таблиц** > ваша база данных. 2. Разверните **Показать расширенные параметры**. 3. Включите **Периодически пересоздавать отпечатки таблиц**. ## Сброс кэшированных значений Чтобы попросить GlarusBI забыть данные из предыдущих [сканирований](#syncing-and-scanning-databases) и [отпечатков](#how-database-fingerprinting-works): 1. Выберите **Администрирование** > **Метаданные таблиц** > ваша база данных. 2. Выберите таблицу. 3. Необязательно: выберите столбец. 4. Нажмите **иконку шестеренки**. 5. Нажмите **Сбросить кэшированные значения поля**. ## Отключение синхронизации и сканирования для конкретной таблицы Чтобы предотвратить запуск GlarusBI синхронизации и сканирования для конкретной таблицы, измените [видимость таблицы](../data-modeling/metadata-editing.md#table-visibility) на **Скрытый**: 1. Выберите **Администрирование** > **Метаданные таблиц** > ваша база данных. 2. Наведите курсор на имя таблицы в боковой панели. 3. Нажмите **иконку глаза**. > Скрытие таблицы также предотвратит ее появление в [конструкторе запросов](../questions/query-builder/introduction.md) и [ссылке на данные](../exploration-and-organization/data-model-reference.md). Люди все еще могут запрашивать скрытые таблицы из [редактора SQL](../questions/native-editor/writing-sql.md). ## Синхронизация и сканирование с помощью API GlarusBI регулярно производит синхронизацию и сканирование, но если администратор базы данных только что изменил схему базы данных, или если много данных добавляется автоматически в определенное время, вы можете написать скрипт, который использует [API GlarusBI](https://www.metabase.com/learn/administration/metabase-api) для принудительной синхронизации или сканирования. [Наш API] (../api-documentation.md) предоставляет два способа инициировать синхронизацию или сканирование базы данных: 1. Используя токен сессии: конечные точки `/api/database/:id/sync_schema` или `api/database/:id/rescan_values`. Эти конечные точки делают то же самое, что и переход к базе данных в панели администратора и выбор **Синхронизировать схему базы данных сейчас** или **Повторно сканировать значения поля сейчас** соответственно. Чтобы использовать эти конечные точки, вы должны аутентифицироваться с помощью идентификатора пользователя и передать токен сессии в заголовке вашего запроса. 2. Используя ключ API: `/api/notify/db/:id`. Мы создали эту конечную точку, чтобы люди могли уведомлять свою GlarusBI о синхронизации после завершения [операции ETL](https://www.metabase.com/learn/analytics/etl-landscape). Чтобы использовать эту конечную точку, вы должны передать ключ API, определив переменную среды `MB_API_KEY`. ## Как работают синхронизации баз данных **Cинхронизация** - это запрос, который получает список обновленных имен таблиц и представлений, имен столбцов и типов данных столбцов из вашей базы данных: ```sql SELECT TRUE FROM "your_schema"."your_table_or_view" WHERE 1 <> 1 LIMIT 0 ``` Этот запрос выполняется в вашей базе данных во время настройки и снова каждый час по умолчанию. Этот сканирующий запрос работает быстро с большинством реляционных баз данных, но может быть медленнее с MongoDB и некоторыми [драйверами баз данных, созданными сообществом](../developers-guide/partner-and-community-drivers.md). Синхронизацию нельзя полностью отключить, иначе GlarusBI не будет работать. ## Как работают сканирования баз данных **Cканирование** - это запрос, который кэширует значения столбцов для выпадающих списков фильтров, на основе анализа первых 1 000 отдельных записей из каждой таблицы в порядке возрастания: ```sql 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 ``` Для каждой записи GlarusBI хранит только первые 100 килобайт текста, поэтому, если у вас есть данные с 1 000 символами каждый (например, адреса), и ваш столбец имеет более 100 уникальных адресов, GlarusBI кэширует только первые 100 значений из запроса сканирования. Значения кешированного столбца отображаются в выпадающих меню фильтров. Если люди вводят в поле поиска фильтра значения, которых нет в первых 1 000 отдельных записях или 100 кБ текста, GlarusBI выполнит запрос к вашей базе данных, чтобы искать эти значения на лету. Сканирование более интенсивно, чем запрос синхронизации, поэтому он выполняется только один раз во время настройки и снова один раз в день по умолчанию. Если вы [отключите сканирование](#scheduling-database-scans) полностью, вам нужно будет привести все в соответствие, запустив [ручное сканирование](#manually-scanning-column-values). Чтобы уменьшить количество таблиц и полей, которые GlarusBI должен сканировать, чтобы оставаться актуальным с подключенной базой данных, GlarusBI будет сканировать значения только для полей, которые кто-то запрашивал в последние четырнадцать дней. ## Как работают отпечатки баз данных Запрос отпечатка смотрит на первые 10 000 строк из данной таблицы или представления в вашей базе данных: ```sql SELECT * FROM "your_schema"."your_table_or_view" LIMIT 10000 ``` Результат этого запроса используется для предоставления лучших предложений в пользовательском интерфейсе GlarusBI (например, выпадающие списки фильтров и автоматическое разбиение на группы). Чтобы избежать нагрузки на вашу базу данных, GlarusBI запускает запросы отпечатков только [первый раз](#initial-sync-scan-and-fingerprinting), когда вы настраиваете подключение к базе данных. Чтобы изменить это значение по умолчанию, вы можете включить [Периодическое обновление отпечатков таблиц](#periodically-refingerprint-tables). ## Дополнительная информация GlarusBI не выполняет кэширование или ограничение скорости во время процесса синхронизации и сканирования. Если ваши данные отсутствуют или устарели, ознакомьтесь с: - [Таблицы не видны](../troubleshooting-guide/cant-see-tables.md). - [Данные не соответствуют моей базе данных](../troubleshooting-guide/sync-fingerprint-scan.md).