QuestDB изнутри: одна база, три интерфейса

QuestDB с первого взгляда выглядит как обычная база данных — устанавливаешь, запускаешь, подключаешься. Но стоит начать разбираться, и обнаруживаются решения, которые поначалу кажутся странными. Одно из них сразу бросается в глаза.

Одна база данных — и точка!

Если ты раньше работал с PostgreSQL или MySQL, первый вопрос будет логичным: как создать вторую базу данных? Ответ простой — никак. В QuestDB всегда одна база, она называется qdb, и это архитектурное решение, а не недоработка.

Всё разделение данных происходит через таблицы внутри этой одной базы. Вместо того чтобы создавать CREATE DATABASE trades и CREATE DATABASE backtest, ты создаёшь таблицы с понятными именами: ticks_btcusdt, orders_live, backtest_results. Префиксы в именах таблиц решают задачу разделения так же чисто, как отдельные базы данных — только проще в управлении.

Для алготрейдинга это вообще не ограничение. Все данные — тики, ордера, результаты стратегий — логично живут рядом, и между ними удобно делать JOIN-запросы. Разносить их по разным базам не было бы никакого смысла.

Если хочется полной изоляции — можно запустить два отдельных процесса QuestDB на разных портах. Но на практике никто так не делает.

Три способа работать с базой

QuestDB предлагает три интерфейса, и каждый из них для своей задачи.

Первый — веб-консоль по адресу http://localhost:9000. Открываешь в браузере и получаешь полноценную среду для работы с данными: редактор SQL-запросов, список таблиц слева, результат внизу в виде таблицы или графика. Никакой отдельной установки не нужно — консоль встроена в сервер и доступна сразу после запуска. Удобна для отладки запросов, проверки данных и быстрого знакомства с тем, что лежит в базе.

Второй — Python и любой другой язык программирования.
Здесь два пути: через psycopg2 по порту 8812 — это стандартный PostgreSQL-протокол для SQL-запросов и чтения данных, и через нативный клиент questdb по порту 9009 — для высокоскоростной потоковой записи.
Первый используешь когда нужно прочитать историю и посчитать сигнал, второй — когда пишешь поток тиков с биржи и каждая миллисекунда на счету.

Третий — Grafana. Это отдельный инструмент для визуализации, который подключается к QuestDB через тот же PostgreSQL-протокол. Ты пишешь SQL-запрос, Grafana строит по нему живой график и обновляет его каждые несколько секунд. Удобно для мониторинга стратегии в реальном времени: цена, P&L, объём сделок — всё на одном экране.

Как это работает вместе

На практике все три интерфейса используются одновременно и не мешают друг другу. Структуру таблиц создаёшь через веб-консоль — там же проверяешь что всё правильно. Python-скрипт пишет тиковые данные через нативный клиент и читает историю через SQL для расчёта сигналов. Grafana параллельно рисует дашборд и показывает что происходит прямо сейчас.

Одна база данных, три точки входа — и каждая делает ровно то, для чего создана.

Оцените статью
Репост в TG и VK
Алготрейдинг шаг за шагом. Создай торгового робота на Python с нуля по нашим урокам. Автоматизируй торговлю на бирже по собственной стратегии.