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 |
+-----------------+

Известные ограничения
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.