Sbroad
Что такое Sbroad:
- Внешняя библиотека на Rust для Tarantool
- Умеет трансформировать запросы поверх кластера в ряд SQL запросов для каждой ноды. Аггрегация результатов - на координаторе
- Не умеет работать с агрегирующими запросами, которые требуют нетривиального MAP/REDUCE (GROUP BY, SUM и проч.)
- Должен уметь сам выполнять запросы эти запросы - завязан на существующие API cartridge + vshard
- Как прокидывать внутреннюю логику приложения - например, имя роли, где хранятся данные? - роль
vshard-storage
в большинстве случаев хранит все данные приложения. Из коробкиvshard
не разделяет данные между ролями.Vshard groups
пока не поддерживаем. - Как поддерживать работу со схемой данных, если нет
ddl
модуля
- Как прокидывать внутреннюю логику приложения - например, имя роли, где хранятся данные? - роль
- Умеет работать с внутренними представления Тарантула для получения схемы данных (
cartridge
- схема данных,vshard
- топология хранилищ).
Содержание
- Архитектура
- Трансформации
- Поддерживаемые типы данных
- Распределенный план запроса
- Поддерживаемые типы запросов
- Описание API
План работ
Нерешенные вопросы:
-
Нужна ли нормальная обертка на Lua? Или продолжаем мучится с хранимыми процедурами?
Предполагается делать всю обработку SQL на стороне Rust. Так как для зависимых запросов нужен расчет дочерних узлов и вычисление bucket_id, то получится что логика работы с планом будет размазана между разными слоями и плохо разделена ответственность каждого из них.
-
Как тестировать выполнение запросов при работе с vshard и cartridge схемами из Rust
Судя по всему это получится возможным только когда будет прокинут cluster_helper из cartridge. Без этого не получится полноценно протестировать результат выполнения результирующей процедуры.