|
|
|
# Sbroad
|
|
|
|
Что такое Sbroad:
|
|
|
|
1) Внешняя библиотека на Rust для Tarantool
|
|
|
|
2) Умеет трансформировать запросы поверх кластера в ряд SQL запросов для каждой ноды. Аггрегация результатов - на координаторе
|
|
|
|
3) Не умеет работать с аггрегирующими запросами, которые требуют нетривиального MAP/REDUCE (GROUP BY, SUM и проч.)
|
|
|
|
4) Должен умееть сам выполнять запросы эти запросы - завязан на существующие API cartridge + vshard
|
|
|
|
* Как прокидывать внутреннюю логику приложения - например, имя роли, где хранятся данные?
|
|
|
|
* Как поддерживать работу со схемой данных, если нет `ddl` модуля
|
|
|
|
5) Умеет работать с внутренними представления Тарантула для получения схемы данных (`cartridge` - схема данных, `vshard` - топология хранилищ).
|
|
|
|
* Как организовать это, если есть несколько ролей, хранящих данные?
|
|
|
|
|
|
|
|
## Содержание
|
|
|
|
|
|
|
|
- [Распределенный SQL - proposal](Распределенный-SQL-proposal)
|
|
|
|
- [Распределенный план запроса](Распределенный-план-запроса)
|
|
|
|
- [Поддерживаемые типы запросов](Типы-запросов/index)
|
|
|
|
- [Описание API](Описание-API)
|
|
|
|
|
|
|
|
## Нерешенные вопросы:
|
|
|
|
|
|
|
|
- Нужна ли нормальная обертка на Lua? Или продолжаем мучится с хранимыми процедурами?
|
|
|
|
> Предполагается делать всю обработку SQL на стороне Rust.
|
|
|
|
> Так как для зависимых запросов нужен расчет дочерних узлов и вычисление bucket_id, то получится что логика работы с
|
|
|
|
> планом будет размаза между разными слоями и плохо разделена ответственность каждого из них.
|
|
|
|
> Пока не реализован вызов lua функций из Rust, предлагается передавить их в текстовом виде.
|
|
|
|
> Cartridge схема передается уже сейчас, осталось передать конфигурацию vshard.
|
|
|
|
|
|
|
|
- Как тестировать выполнение запросов при работе с vshard и cartridge схемами из Rust
|
|
|
|
> Судя по всему это получится возможным только когда будет прокинут cluster_helper из cartridge.
|
|
|
|
> Без этого не получится полноценно протестировать результат выполнения результирующей процедуры.
|
|
|
|
|
|
|
\ No newline at end of file |