Перейти к содержимому
Последнее обновление

LibreDB Studio

Обзор​

LibreDB Studio — SQL IDE с открытым исходным кодом (лицензия MIT), которая работает в браузере и не требует установки настольного приложения. Она поставляется в виде образа Docker, чарта Helm или пакета npm и подключается к Apache Doris по сетевому протоколу MySQL через тип подключения MySQL, поскольку отдельного драйвера Doris нет.

Прочитав эту статью, вы сможете:

  • Запустить LibreDB Studio и создать подключение к Doris, выбрав тип подключения MySQL.
  • Просматривать базы данных и таблицы внутреннего Catalog и выполнять SQL-запросы к Doris.
  • Узнать, какие показатели Doris не публикует и почему, прежде чем полагаться на данные панели.

Предварительные требования​

  • LibreDB Studio запущена. Быстрее всего запустить её через Docker:
docker run --name libredb-studio -p 3000:3000 ghcr.io/libredb/libredb-studio:latest

Откройте http://localhost:3000. Начальный пароль администратора выводится в журналах контейнера (docker logs libredb-studio).

Также доступны чарт Helm и пакет npm (npx @libredb/studio); подробности см. в репозитории LibreDB Studio.

  • FE должен быть доступен с сервера или из контейнера LibreDB Studio. localhost внутри контейнера указывает на сам контейнер; если Doris работает на хосте, используйте адрес хоста, доступный из контейнера. Предоставьте пользователю Doris необходимые права на целевую базу данных и таблицы.
  • Подготовлены данные для подключения к кластеру Doris: адрес хоста FE, порт протокола MySQL на FE (по умолчанию 9030), целевая база данных, имя пользователя и пароль.

Подключение к Doris​

1. Добавьте подключение​

Откройте LibreDB Studio в браузере, войдите в систему и нажмите кнопку +, чтобы добавить новое подключение.

Добавление подключения

2. Настройте подключение к Doris​

Выберите MySQL в качестве типа подключения (Doris использует сетевой протокол MySQL, поэтому отдельного пункта Doris в списке типов подключения нет) и заполните поля:

ПолеОписание
ХостАдрес хоста FE кластера Doris.
ПортПорт протокола MySQL на FE, по умолчанию 9030 (а не 3306, как у MySQL).
База данныхЦелевая база данных во внутреннем Catalog кластера Doris.
ПользовательИмя пользователя кластера Doris.
ПарольПароль пользователя кластера Doris.

Настройка подключения

3. Проверьте и установите подключение​

Нажмите Проверить подключение, чтобы выполнить проверку, затем Установить подключение, чтобы сохранить его. При проверке появляется сообщение Connected successfully, одно нажатие кнопки «Установить подключение» сохраняет подключение, а индикатор в заголовке показывает статус В сети.

Подключение установлено

4. Просматривайте объекты и выполняйте запросы​

Разверните подключение в обозревателе объектов, чтобы увидеть базы данных и таблицы Doris, и используйте редактор SQL для выполнения запросов к внутреннему Catalog. Например:

SELECT 1 AS connection_test;
+-----------------+
| connection_test |
+-----------------+
| 1 |
+-----------------+

Просмотр объектов и выполнение запросов к Doris

Известные ограничения​

Apache Doris поддерживается как один из вариантов целевой СУБД для типа подключения MySQL, а не как самостоятельный тип подключения, поэтому LibreDB Studio обращается к нему через тот же код, что и к MySQL, MariaDB и TiDB. Приведённые ниже наблюдения первоначально проверялись на Doris 4.1.3. Отличия в dev указаны явно; состав отображаемых панелей также зависит от версии LibreDB Studio:

ОбластьСтатусПодробности
Количество строк и размер в байтахКорректноПосле обновления фоновой статистики Doris оба показателя в точности совпадали с выводом команды SHOW DATA в самом Doris.
Отмена запросаКорректноПри проверке на Doris 4.1.3 запрос SELECT sleep(8) был отменён; LibreDB Studio сообщила: "Query Cancelled: Query execution was cancelled."
Ошибки доступаКорректноРоль, которой предоставили SELECT_PRIV только на одну таблицу, видела в обозревателе объектов только эту таблицу, а запрос к другой таблице возвращал исходный текст ошибки Doris. Здесь конкретные имена роли, базы данных, таблицы и столбца заменены заполнителями: Permission denied: user ['role'@'%'] does not have privilege for [...] command on [internal].[db].[table].[column].
Панели «Обзор» и «Состояние»Отсутствие данных обозначено явноОбе панели работают. В обзоре отображается фактическая сборка, сведения о которой считываются из @@version_comment, а не из version(), возвращающей версию MySQL, которую Doris сообщает клиентам. На команду SHOW STATUS без дополнительных параметров Doris возвращает ноль строк и не публикует переменную max_connections, поэтому время работы сервера и количество подключений отображаются как N/A, not published, а не как 0.
Список индексовЗависит от версииВ Doris 4.1.3 таблица information_schema.statistics пуста. Версия dev публикует через эту таблицу совместимые с MySQL метаданные первичных ключей, уникальных ключей и индексов, что позволяет клиентам их обнаруживать. Проверьте поведение используемой сборки Doris.
Внешние ключиОграничения не проверяются; метаданные зависят от версииОбъявляются командой ALTER TABLE ... ADD CONSTRAINT и перечисляются командой SHOW CONSTRAINTS. Doris 4.1.3 не предоставляет сведения о них в information_schema.KEY_COLUMN_USAGE; dev публикует там метаданные объявленных ограничений. Отображение в обозревателе зависит от сборки Doris. Doris не проверяет ограничения внешних ключей, поэтому приложения должны самостоятельно обеспечивать соответствие данных этим ограничениям.
Объяснение плана запросаКорректноКнопка «Объяснить» возвращает собственный план Nereids из Doris. Команда EXPLAIN FORMAT='json' вызывает в Doris ошибку синтаксического анализа (mismatched input '='), поэтому LibreDB Studio отправляет этому движку обычную команду EXPLAIN.
Операции обслуживанияЧастичноAnalyze выполняется; Optimize и Check вообще отсутствуют в грамматике Doris и отклоняются с ошибкой синтаксического анализа.
Таблицы сразу после загрузки данныхВременно нулевые значенияСразу после загрузки 2000 строк для таблицы отображались 0 строк и 0 B, а фактическое количество появилось примерно через минуту, когда обновилась фоновая статистика Doris. Это задержка в самом Doris, а не устаревшее подключение.

Подробнее об использовании LibreDB Studio см. в репозитории LibreDB Studio.