Управление подключениями к базам данных
Страница Подключения отображает подключения к базам данных открытой версии проекта и предоставляет все действия над существующим подключением: обновление закешированной схемы, редактирование параметров, отключение и активацию, удаление. Страница открывается из главного меню.
Список подключений
| Столбец | Описание |
|---|---|
| Название подключения | Название, заданное пользователем |
| Тип базы данных | PostgreSQL, Microsoft SQL Server или ClickHouse |
| Хост базы данных | Адрес хоста базы данных |
| Название базы данных | Имя базы данных |
| Название схемы | Имя схемы. Для Microsoft SQL Server и ClickHouse столбец пуст — отдельная схема в них не используется |
| Последнее обновление | Дата и время последнего успешного обновления схемы |
| Статус | Активно, Отключено или Ошибка обновления с цветовой индикацией |
| Действия | Кнопки: обновить подключение, редактировать подключение, активировать или отключить, удалить |
Таблица поддерживает сортировку и поиск по всем столбцам: название подключения, тип базы данных, хост, название базы данных, название схемы, последнее обновление и статус. Поиск выполняется по подстроке без учёта регистра. Если сортировка не задана, подключения выводятся в порядке создания. Если в версии нет подключений, отображается текст «Подключения не найдены».
Над списком расположены кнопки Добавить подключение и Обновить все подключения, а также IP-адрес сервера приложения с кнопкой Копировать IP-адрес. Этот адрес нужно разрешить в настройках сетевого доступа целевых баз данных, чтобы они принимали входящие соединения от системы.
Статусы подключения
| Статус | Значение |
|---|---|
| Активно (зелёный) | Последняя проверка выполнена успешно, метаданные схемы закешированы. Подключение предлагается при выборе источника и включается в автоматическое обновление схем |
| Отключено (красный) | Подключение отключено пользователем. Оно не предлагается при выборе источника и не обновляется автоматически, но сохраняет закешированную схему |
| Ошибка обновления (жёлтый) | Последняя попытка подключиться или обновить схему завершилась ошибкой. Подключение остаётся в списке, а ранее закешированная схема продолжает использоваться |
Закешированная схема и работа в оффлайн-режиме
При создании подключения система однократно считывает полную схему внешней базы данных — список таблиц и колонок с типами данных — и сохраняет её как снимок. В дальнейшем конструктор таблиц фактов, модель данных и конструктор витрин работают с этим снимком, а не с запросами к базе данных.
Для каждой колонки каждой таблицы в снимке хранятся: имя таблицы, имя схемы, имя колонки, обобщённый тип данных, используемый в продукте, и точный тип базы данных с параметрами (например, varchar(255), decimal(10,2), timestamp with time zone).
Это даёт следующее:
- Аналитические объекты можно проектировать и редактировать даже при временной недоступности исходной базы данных
- Исходная база данных не получает запросов метаданных при каждом открытии интерфейса
- Работа с метаданными не зависит от задержек сети и времени отклика источника
Обращения к внешней базе данных выполняются только в следующих случаях:
- проверка подключения, запущенная пользователем
- обновление схемы — по запросу пользователя или автоматическое
- выполнение запроса витрины, когда запрашивается результат
- создание, обновление или удаление материализованных объектов витрин в этой базе данных
Поскольку интерфейс работает со снимком, изменения в исходной базе данных становятся видны только после обновления схемы.
Обновление закешированной схемы
| Действие | Описание |
|---|---|
| Обновить подключение | Кнопка в строке подключения обновляет схему одного этого подключения. Для подключений в статусе Отключено она недоступна |
| Обновить все подключения | Кнопка над списком обновляет схемы всех неотключённых подключений открытой версии проекта. Каждое подключение обрабатывается независимо, поэтому ошибка в одном не останавливает остальные |
Результат каждого обновления отображается отдельным уведомлением:
- успех — «{название подключения}: Подключение к базе данных успешно обновлено». Статус становится Активно, а в поле Последнее обновление записывается текущее время
- ошибка — «{название подключения}: Не удалось обновить подключение к базе данных». Статус меняется на Ошибка обновления
Неуспешное обновление никогда не удаляет закешированный снимок: ранее полученные метаданные сохраняются и продолжают использоваться, поэтому работа в интерфейсе продолжается на последней успешно считанной схеме. Каждое обновление записывается в системный журнал.
Ошибки при обновлении
| Ситуация | Результат |
|---|---|
| Хост недоступен или произошла сетевая ошибка | Статус Ошибка обновления, закешированная схема сохраняется и продолжает использоваться |
| Неверные учётные данные | Статус Ошибка обновления, сообщение об ошибке аутентификации |
| У учётной записи нет прав на чтение метаданных | Статус Ошибка обновления, сообщение о недостаточных правах |
| Сертификат недействителен или истёк | Статус Ошибка обновления, сообщение о проблеме с SSL |
| Базы данных или схемы больше не существует | Статус Ошибка обновления, сообщение о недоступности ресурса |
| База данных не ответила за отведённое время | Статус Ошибка обновления, сообщение о превышении времени ожидания |
Редактирование подключения
Кнопка Редактировать подключение в строке подключения открывает ту же форму, что и при создании, со следующими особенностями:
- Пароль скрыт. Поле пароля отображается символами-заполнителями и недоступно для ввода. Чтобы заменить пароль, нажмите кнопку Редактировать рядом с полем — поле очищается и становится редактируемым. Если кнопка не нажата, сохранённый пароль остаётся без изменений
- Отправляются только изменённые поля. Значения, которых пользователь не касался, остаются прежними
- Сертификаты. Имена ранее загруженных файлов отображаются в полях только для чтения. Сертификат заменяется загрузкой нового файла, при этом старый файл удаляется из хранилища
- Кнопка Проверить в режиме редактирования проверяет соединение со значениями, введёнными в форму, подставляя сохранённые значения для неизменённых полей
- Успешное сохранение сопровождается уведомлением «Настройки подключения к базе данных успешно изменены». Если с новыми параметрами соединение установить не удаётся, открывается тот же диалог Проверьте настройки подключения, что и при создании, и подключение всё равно можно сохранить со статусом Ошибка обновления
Когда изменилась исходная база данных
Если в исходной базе данных изменились таблицы, колонки или типы данных, редактировать подключение нужно только при изменении параметров доступа — в остальных случаях достаточно обновить схему. И в том, и в другом случае закешированный снимок заменяется текущим состоянием базы данных:
- Изменение любого поля, влияющего на соединение — хост, порт, база данных, схема, имя пользователя, пароль, SSL — автоматически запускает обновление схемы после сохранения подключения
- Новые таблицы и колонки становятся доступны в конструкторах таблиц фактов и витрин сразу после завершения обновления
- Ссылки на таблицы и колонки, которых в источнике больше нет, становятся недействительными. Использующие их элементы отмечаются как содержащие ошибки, что отражается в индикаторах состояния таблиц фактов и витрин, построенных на этих элементах
Активация и отключение подключения
Подключение можно отключить вместо удаления — например, пока источник временно недоступен или выводится из эксплуатации. Оба действия выполняются одной кнопкой в строке подключения: Отключить для активного подключения и Активировать для отключённого.
Отключение подключения:
- переводит его в статус Отключено и сопровождается уведомлением «Подключение к базе данных успешно отключено»
- исключает его из автоматического обновления схем, а его собственная кнопка обновления становится недоступной
- убирает его из списков выбора источника в формах РПИ, таблиц фактов и витрин
- сохраняет его закешированный снимок схемы
При активации система подключается к базе данных и пытается обновить схему. Итоговый статус зависит от результата:
| Результат | Статус | Уведомление |
|---|---|---|
| Соединение установлено, схема обновлена | Активно | «Подключение к базе данных успешно активировано» |
| Базу данных не удалось достичь или её схему не удалось считать | Ошибка обновления | «Подключение к базе данных активировано в оффлайн режиме с существующими данными схемы» |
Во втором случае подключение всё равно выходит из статуса Отключено и сохраняет предыдущий снимок схемы, поэтому его можно использовать в оффлайн-режиме; обновите схему, когда база данных станет доступна. Если сам запрос активации не прошёл, подключение остаётся отключённым и отображается ошибка «Не удалось активировать подключение к базе данных».
Удаление подключения
Кнопка удаления в строке подключения запрашивает подтверждение — «Вы уверены, что хотите удалить подключение к базе данных? Все ссылки на это подключение будут удалены из проекта» — и затем удаляет подключение: вместе с записью из хранилища удаляются закешированный снимок схемы и зашифрованные сертификаты. Удаление записывается в системный журнал с состоянием подключения до удаления.
Что препятствует удалению. Подключение нельзя удалить, пока витрины проекта связаны с материализованными объектами в этой базе данных. Сначала удалите эти связи в витринах, затем удаляйте подключение.
Последствия удаления. Элементы РПИ, у которых поле Подключённый источник указывало на это подключение, теряют ссылку. Такие элементы отмечаются как содержащие критические ошибки, что отражается в индикаторах состояния таблиц фактов и витрин, использующих эти элементы. Чтобы восстановить ссылку, нужно создать подключение заново и выбрать источник в этих элементах.
Права доступа
Управление подключениями зависит от роли пользователя в проекте. Интерфейс скрывает действия, недоступные роли, и те же правила проверяются на сервере.
| Роль | Просмотр | Проверка | Обновление схемы | Активация / отключение | Создание | Редактирование | Удаление |
|---|---|---|---|---|---|---|---|
| Суперадминистратор | Да | Да | Да | Да | Да | Да | Да |
| Администратор компании | Да | Да | Да | Да | Да | Да | Да |
| Менеджер проекта | Да | Да | Да | Да | Да | Да | Да |
| Разработчик | Да | Да | Да | Да | Да | Да | Да |
| Аналитик | Да | Да | Да | Нет | Нет | Нет | Нет |
| Наблюдатель | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Примечания:
- Все операции с подключениями фиксируются в системном журнале со значениями до и после изменения
- Любое действие над подключением зависит также от лицензии компании: если лицензия отсутствует, недействительна или приостановлена, кнопки действий скрыты и список доступен только для просмотра