Skip to content
Snippets Groups Projects
Commit 7d625631 authored by Alexander Tolstoy's avatar Alexander Tolstoy
Browse files

Merge branch 'docs' into 'main'

docs: update Sbroad manual with eBNF diagrams

See merge request picodata/picodata/docs!80
parents ce135225 4bbfbb3a
No related branches found
No related tags found
1 merge request!80docs: update Sbroad manual with eBNF diagrams
Pipeline #16178 passed
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
# Возможности кластерного SQL
## Основная информация об SQL Broadcaster
Данный раздел содержит описание возможностей распределенного SQL, реализованного в виде компонента [SQL Broadcaster](https://git.picodata.io/picodata/picodata/sbroad) в составе Picodata.
SQL Broadcaster представляет собой библиотеку, предоставляющую функции планировщика и модуля исполнения SQL-запросов в рамках распределенного кластера СУБД Tarantool. Подробности архитектуры планировщика доступны в отдельной [PDF-презентации](https://git.picodata.io/picodata/picodata/sbroad/-/blob/main/doc/design/sbroad.pdf).
......@@ -12,6 +13,181 @@ SQL Broadcaster — это динамическая библиотека, кот
На схеме <span style="color:#ff0000ff">красным</span> показан исходный пользовательский запрос, <span style="color:#fcc501ff">желтым</span> — план запроса (IR, intermediate representation), <span style="color:#39cb00ff">зеленым</span> — собранные фрагменты ответов, <span style="color:#00c8e5ff">голубым</span> — консолидированный ответ на пользовательский запрос в виде списка кортежей, обработанного функцией MapReduce.
## Поддерживаемые запросы и их синтаксис
Мы предоставляем описание поддерживаемых запросов (queries) в SQL Broadcaster в виде схем формата eBNF.
**Query:**
![Query](ebnf/Query.svg)
```
Query ::= Select ( ( 'union all' | 'except' | 'except distinct' ) Select )?
| Values
| Insert
```
**Select:**
![Select](ebnf/Select.svg)
```
Select ::= 'select' Column ( ',' Column )* 'from' ( Table | Select ) ( 'as' Alias )? ( 'inner'? 'join' ( Table | Select ) ( 'as' Alias )? 'on' Expression )? ( 'group by' GroupBy )? ( 'where' Expression )?
```
Используется в:
* Expression
* Insert
* Query
* Select
**Column:**
![Column](ebnf/Column.svg)
```
Column ::= ( Table '.' )? '*'
| Expression ( 'as' Alias )?
```
Используется в:
* Select
**Expression:**
![Expression](ebnf/Expression.svg)
```
Expression
::= Expression ( ( 'or' | ( 'between' Expression )? 'and' | '*' | '/' | '+' | '-' | '=' | '>' | '>=' | '<' | '<=' | '<>' | '!=' )
Expression | 'is null' | 'is not null' )
| Reference
| Select
| Value
```
Используется в:
* Cast
* Column
* Expression
* Select
**GroupBy:**
![GroupBy](ebnf/GroupBy.svg)
```
GroupBy ::= Concat
| Cast
| Function
| Reference
```
Используется в:
* Select
**Reference:**
![Reference](ebnf/Reference.svg)
```
Reference
::= ( ( Table | '"' Table '"' ) '.' )? ( Alias | '"' Alias '"' )
```
Используется в:
* Expression
* GroupBy
* Insert
**Value:**
![Value](ebnf/Value.svg)
```
Value ::= 'true'
| 'false'
| 'null'
| '?'
| Integer
| Unsigned
| Double
| Decimal
| String
| Row
```
Используется в:
* Expression
* Values
**Cast:**
![Cast](ebnf/Cast.svg)
```
Cast ::= 'cast' '(' Expression 'as' Type ')'
```
Используется в:
* GroupBy
**Type:**
![Type](ebnf/Type.svg)
```
Type ::= 'any'
| 'bool'
| 'boolean'
| 'decimal'
| 'double'
| 'int'
| 'integer'
| 'number'
| 'scalar'
| 'string'
| 'text'
| 'unsigned'
| 'varchar' ( '(' Length ')' )?
```
Используется в:
* Cast
**Insert:**
![Insert](ebnf/Insert.svg)
```
Insert ::= 'insert into' Table ( '(' Reference ( ',' Reference )* ')' )? ( Select | Values )
```
Используется в:
* Query
**Values:**
![Values](ebnf/Values.svg)
```
Values ::= 'values' '(' Value ( ',' Value )* ')' ( ',' '(' Value ( ',' Value )* ')' )*
```
Используется в:
* Insert
* Query
## Установка и пример использования SQL Broadcaster
### Общие сведения для установки
На данный момент компонент SQL Broadcaster работает только для приложений, использующих Tarantool Cartridge. Однако, при этом требуется использовать версию Tarantool, которая поставляется вместе с программным продуктом Picodata. Подробная информация об установке SQL Broadcaster приведена в описании его [Git-репозитория](https://git.picodata.io/picodata/picodata/sbroad). Установка возможна либо путём компиляции исходного кода, либо посредством утилиты `tarantoolctl`. В обоих случаях требуется выполнять команды из директории Cartridge-приложения. Для ознакомления и тестирования удобно воспользоваться [тестовым приложением](https://git.picodata.io/picodata/picodata/sbroad/-/tree/main/sbroad-cartridge/test_app), поставляемым вместе с кодом SQL Broadcaster.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment