Skip to content
Snippets Groups Projects
Commit 4e3fe28c authored by Alexander Tolstoy's avatar Alexander Tolstoy Committed by Alexander Tolstoy
Browse files

describe global tables for sql

parent 0f93f40e
No related branches found
No related tags found
1 merge request!168describe global tables for sql
......@@ -115,6 +115,17 @@ pico.sql([[select * from "characters"]], {})
![Table_assets](../images/table_assets.svg)
Таблицы с пользовательскими данными в Picodata могут быть двух типов:
- _глобальными_, т.е. полностью доступными на каждом из инстансов
кластера. Для создания глобальной таблицы следует использовать
параметр `distributed globally`.
- _шардированными_, т.е. распределенные по шардам кластера. Для создания
шардированной таблицы следует использовать параметр `distributed by
()`, указав в скобках название колонки, по которой такая таблица будет
распределена. См. [подробнее](../glossary.md#table).
Для демонстрации работы распределенного SQL будем создавать шардированные таблицы.
Создадим первую таблицу следующей командой:
```sql
......@@ -130,7 +141,7 @@ option (timeout = 3.0) ;
Для второй таблицы команда будет отличаться только именем третьей колонки.
При создании таблицы можно выбрать один из доступных движков хранения данных:
При создании таблицы также можно выбрать один из доступных движков хранения данных:
- `memtx` — движок для хранения вех данных в ОЗУ (in-memory);
- `vinyl` — дисковый движок хранения данных, использующий LSM-деревья
......
# Работа с данными SQL
В данном разделе приведены примеры команд для работы с данными в
Picodata с помощью языка [SQL-запросов](sql/queries.md). Этот способ относится к работе с
шардированными [таблицами](glossary.md#table).
## Создание шардированной таблицы {: #creating-sharded-table }
После подключения к инстансу кластера посредством команды `picodata
connect`, в интерактивной консоли Picodata доступна функция
`pico.sql()`, которая позволяет выполнять в кластере SQL-запросы. Данная
функция предназначена для работы именно с шардированными таблицами и
реализует возможности [распределенного SQL](../sql/review).
Picodata с помощью языка [SQL-запросов](sql/queries.md).
## Создание таблицы {: #creating-table }
После [подключения](tutorial_first_steps.md#accessing-console) к
инстансу кластера, в интерактивной консоли Picodata можно выполнять
SQL-запросы. Для этого можно использовать как напрямую язык SQL, так и
SQL-запросы, обернутые в синтаксис Lua. Переключение языков ввода и
особенности составления команд описаны в разделе [Команды
SQL](sql/queries.md#available_langs). Пользователям доступны функции для
работы как с глобальными, так и шардированными таблицами (в последнем
случае реализованы возможности [распределенного
SQL](../sql/broadcasted_sql.md)).
Для примера создадим шаблон списка друзей Свинки Пеппы,
котором будет два поля: идентификатор записи и имя друга:
......@@ -28,15 +29,31 @@ pico.sql([[
Помимо двух колонок, в примере указаны:
- первичный ключ таблицы;
- первичный ключ таблицы (колонка `"id"`);
- движок хранения данных in-memory (`memtx`);
- ключ шардирования таблицы
- тип таблицы (шардированный, `distributed by`);
- ключ шардирования таблицы (колонка `"id"`);
- таймаут перед возвращением управления пользователю.
Подробности использования SQL приведены в разделе [Команды SQL](sql/queries.md).
Для того чтобы создать такую же, но глобальную таблицу, следует указать
соответствующий тип:
```sql
pico.sql([[
create table "friends_of_peppa" (
"id" integer,
"name" text not null,
primary key ("id")
) using memtx distributed globally
option (timeout = 3.0)
]])
```
Подробнее о типах таблиц см. в [глоссарии](../glossary.md#table).
Описание команд SQL приведено в разделе [Команды SQL](sql/queries.md).
## Запись данных в шардированную таблицу {: #writing-to-sharded-table }
Запись данных, т.е. вставка строк, в шардированную таблицу происходит с помощью команды `INSERT` в SQL-запросе.
## Запись данных в таблицу {: #writing-to-table }
Запись данных, т.е. вставка строк, в таблицу происходит с помощью команды `INSERT` в SQL-запросе.
Можно использовать обычный запрос с прямой передачей значений:
```sql
......@@ -55,8 +72,8 @@ pico.sql(
```
См. [подробнее](sql/queries.md#insert) о различиях в `INSERT`-запросах.
## Чтение данных из шардированноой таблицы {: #reading-from-sharded-table }
Для чтения всех данных из шардированноой таблицы подойдёт команда:
## Чтение данных из таблицы {: #reading-from-table }
Для чтения всех данных из таблицы подойдёт команда:
```
pico.sql([[select * from "friends_of_peppa"]], {})
......@@ -70,7 +87,7 @@ pico.sql([[select * from "friends_of_peppa" where "id" = 1]], {})
См. [подробнее](sql/queries.md#select) о вариантах чтения данных в SQL.
## Удаление данных {: #deleting-from-sharded-table }
## Удаление данных {: #deleting-from-table }
Удаление строки с известным `id`:
......
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