QuestDB с первого взгляда выглядит как обычная база данных — устанавливаешь, запускаешь, подключаешься. Но стоит начать разбираться, и обнаруживаются решения, которые поначалу кажутся странными. Одно из них сразу бросается в глаза.
Одна база данных — и точка!
Если ты раньше работал с PostgreSQL или MySQL, первый вопрос будет логичным: как создать вторую базу данных? Ответ простой — никак. В QuestDB всегда одна база, она называется qdb, и это архитектурное решение, а не недоработка.
QuestDB использует колончатую структуру и хранит данные в виде файлов, отображаемых в память (memory-mapped files)qdb — это скорее имя по умолчанию в некоторых строках подключения, но в самой консоли вы просто видите список таблиц.
Всё разделение данных происходит через таблицы внутри этой одной базы. Вместо того чтобы создавать CREATE DATABASE trades и CREATE DATABASE backtest, ты создаёшь таблицы с понятными именами: ticks_btcusdt, orders_live, backtest_results. Префиксы в именах таблиц решают задачу разделения так же чисто, как отдельные базы данных — только проще в управлении.
Для алготрейдинга это вообще не ограничение. Все данные — тики, ордера, результаты стратегий — логично живут рядом, и между ними удобно делать JOIN-запросы. Разносить их по разным базам не было бы никакого смысла.
Если хочется полной изоляции — можно запустить два отдельных процесса QuestDB на разных портах. Но на практике никто так не делает.
Три способа работы: Протоколы vs Инструменты
QuestDB предлагает три интерфейса, и каждый из них для своей задачи, по сути это база понимания портов:
- Порт 9000 (REST API / Web Console / ILP over HTTP): веб-консоль по адресу
http://localhost:9000. Открываешь в браузере и получаешь полноценную среду для работы с данными: редактор SQL-запросов, список таблиц слева, результат внизу в виде таблицы или графика. Никакой отдельной установки не нужно — консоль встроена в сервер и доступна сразу после запуска. Удобна для отладки запросов, проверки данных и быстрого знакомства с тем, что лежит в базе. Это «швейцарский нож» и через него работает не только консоль, но и например скрипт формирования таймфреймов (через /exec). Также современные версии QuestDB позволяют слать данные (ILP) прямо на 9000 порт по HTTP . - Python и любой другой язык программирования. Здесь два пути:
- через
psycopg2по порту 8812 — это стандартный PostgreSQL-протокол для SQL-запросов и чтения данных; - через нативный клиент
questdbпо порту 9009 — для высокоскоростной потоковой записи.
- через
- Grafana. Это отдельный инструмент для визуализации, который подключается к QuestDB через тот же PostgreSQL-протокол. Ты пишешь SQL-запрос, Grafana строит по нему живой график и обновляет его каждые несколько секунд. Удобно для мониторинга стратегии в реальном времени: цена, P&L, объём сделок — всё на одном экране.
Как это работает вместе
На практике все три интерфейса используются одновременно и не мешают друг другу. Структуру таблиц создаёшь через веб-консоль — там же проверяешь что всё правильно. Python-скрипт пишет тиковые данные через нативный клиент и читает историю через SQL для расчёта сигналов. Grafana параллельно рисует дашборд и показывает что происходит прямо сейчас.
Важные порты QuestDB








