Справочник по HTTP API¶
В этом разделе приведен список HTTP-адресов, через которые выполняется взаимодейстие с Tarantool Column Store.
/cancel: отмена обработки запросов¶
HTTP-адрес /cancel используется для отмены запросов.
POST /cancel/$request_id: удаление запроса¶
Ответ¶
Код |
Описание |
|---|---|
|
Запрос удален |
Тело ответа¶
Сообщение об удалении и идентификатор удаленного запроса:
"successfully cancel request with id=1-ddc44da9-f994-40d4-8d53-930575740751"
/computation: аналитические расчеты¶
HTTP-адрес /computation используется для работы с
аналитическими расчетами.
POST /computation: создание расчета¶
Тело запроса¶
{
"sql": "PREPARE plan(INT) AS SELECT count(*) FROM db.public.users"
}
sql– текст SQL-оператораPREPAREдля вычисления результата расчета.
Ответ¶
Код |
Описание |
|---|---|
|
Расчет успешно добавлен |
|
Ошибка в запросе |
POST /computation/run: выполнение расчета¶
Тело запроса¶
Массив пар название расчета-аргументы вызова:
[
{
"name": "plan",
"args": [ 1 ]
},
{
"name": "plan",
"args": [ 2 ]
}
]
name– название расчета;args– массив аргументов вызова в порядке объявления.
Ответ¶
Код |
Описание |
|---|---|
|
Расчеты выполнены |
|
Ошибка в запросе |
|
Запрос прерван по истечении времени выполнения |
Тело ответа¶
{
"success": {
"plan": [
{
"COUNT(*)": 1
}
]
},
"fail": {
"no": "prepared statement '\"no\"' is not found"
}
}
success– результаты успешно выполненных запросов;fail– информация о запросах, которые не удалось выполнить;timings– время, потраченное на разные этапы обработки запроса;plans– вывод EXPLAIN ANALYZE для планов, указанных в заголовке запроса.
Подробнее см. Просмотр фактического времени выполнения запроса и Ограничение времени выполнения запроса.
Параметры¶
По умолчанию аналитические расчеты выполняются последовательно, в одном потоке.
Если же указан параметр run_concurrent=true, то расчеты выполняются параллельно,
в несколько потоков. Например:
POST http://localhost:7777/computation/run?run_concurrent=true HTTP/1.1
[тело_запроса]
DELETE /computation/$name: удаление расчета¶
Ответ¶
Код |
Описание |
|---|---|
|
Расчет удален |
GET /computation: просмотр списка расчетов¶
Ответ¶
Код |
Описание |
|---|---|
|
Список расчетов получен |
GET /computation/$name: просмотр текста запроса¶
Ответ¶
Код |
Описание |
|---|---|
|
Текст расчета получен |
Тело ответа¶
{
"query": "PREPARE plan(INT) AS SELECT count(*) FROM db.public.users"
}
query– текст запроса, выполняемого в рамках расчета.
/ddl/sql: расширенные возможности работы с SQL¶
HTTP-адрес /ddl/sql позволяет делать все, что поддерживается на адресе /sql,
а также позволяет создавать, замещать и удалять нематериализованные SQL-представления
Примечание
Для прочих действий с нематериализованными SQL-представлениями используется HTTP-адрес /ddl/view.
POST /ddl/sql: создание, замещение и удаление нематериализованных SQL-представлений¶
Тело запроса¶
Тело запроса должно содержать SQL-выражение одного из следующих видов:
создание нового SQL-представления (или замещение существующего):
CREATE OR REPLACE VIEW name[(column_name [, ...])] AS query
где:
name– название SQL-представления;query– текст SQL-оператораSELECTдля вычисления результата SQL-представления.
Например:
CREATE OR REPLACE VIEW adults AS SELECT name FROM db.public.users WHERE age >= 18
Примечание
Создание SQL-представления также возможно с помощью POST-запроса на адрес /ddl/view/$name/create.
удаление SQL-представления:
DROP VIEW name
где
name– название SQL-представления.Например:
DROP VIEW adults
Примечание
Удаление SQL-представления также возможно с помощью POST-запроса на адрес /ddl/view/$name/delete.
Ответ¶
Код |
Описание |
|---|---|
|
Представление успешно добавлено, замещено или удалено |
|
Ошибка в запросе. |
|
SQL-представление для удаления не найдено. |
/ddl/view: нематериализованные SQL-представления¶
HTTP-адрес /ddl/view используется для работы с
нематериализованными SQL-представлениями.
POST /ddl/view/$name/create: создание SQL-представления¶
Примечание
Создание SQL-представления также возможно с помощью POST-запроса на адрес /ddl/sql.
Тело запроса¶
{
"sql": "SELECT name FROM db.public.users WHERE age >= 18"
}
sql– текст SQL-оператораSELECTдля вычисления результата SQL-представления.
Ответ¶
Код |
Описание |
|---|---|
|
SQL-представление успешно добавлено. |
|
Ошибка в запросе. |
POST /ddl/view/$name/delete: удаление SQL-представления¶
Примечание
Удаление SQL-представления также возможно с помощью POST-запроса на адрес /ddl/sql.
Ответ¶
Код |
Описание |
|---|---|
|
SQL-представление удалено. |
|
SQL-представление не найдено. |
GET /ddl/view: просмотр списка нематериализованных представлений¶
Ответ¶
Код |
Описание |
|---|---|
|
Список представлений получен |
GET /ddl/view/$name: просмотр текста SQL-представления¶
Ответ¶
Код |
Описание |
|---|---|
|
Текст SQL-представления получен. |
|
SQL-представление не найдено. |
Тело ответа¶
{
"query": "SELECT name FROM db.public.users WHERE age >= 18"
}
query– текст запроса, выполняемого в рамках SQL-представления.
{scheduler-uri}/ddl: обработка DDL-операторов на экземпляре Scheduler¶
HTTP-адрес {scheduler-uri}/ddl используется для обработки DDL-операторов на экземпляре Scheduler.
POST {scheduler-uri}/ddl: отправка DDL-операторов¶
Примечание
На HTTP-адрес {scheduler-uri}/ddl можно отправлять следующие операторы:
CREATE TABLE - Создание таблиц с указанным именем на основе заданного списка полей.
DROP TABLE - Удаление таблиц с указанным именем.
Тело запроса оператора CREATE¶
CREATE TABLE db.public.users(col1 u8, col2 u64 CAPACITY 1000, col3 utf8) ENGINE=memtx
Ответ на запрос CREATE TABLE¶
Код |
Описание |
|---|---|
|
Запрос успешно обработан. |
|
Ошибка в запросе или не поддерживается. |
|
Не найдена конфигурация или схема. |
|
Таблица уже существует. |
|
Внутренние ошибки |
Тело запроса оператора DROP TABLE¶
DROP TABLE [IF EXISTS] table_name
Ответ на запрос DROP TABLE¶
Код |
Описание |
|---|---|
|
Запрос успешно обработан. |
|
Ошибка в запросе или не поддерживается. |
|
Таблица не найдена. |
|
Внутренние ошибки |
Тело ответа¶
[]
/insert: вставка данных¶
HTTP-адрес /insert используется для вставки объектов.
Примечание
INSERT-запросы на вставку данных из выборки (insert into select) следует отсылать на HTTP-адрес /sql.
POST /insert: вставка данных¶
Тело запроса:¶
{
"table_name": "table_name",
"rows": [
{
"column0": 1,
"column1": true,
"column2": "string",
"column3": 1234
},
{
"column0": 1,
"column1": false
}
]
}
table_name– название таблицы;rows– массив описаний объектов для вставки.
Ответ¶
Код |
Описание |
|---|---|
|
Объекты успешно добавлены |
|
Ошибка в запросе |
/v2/insert: вставка данных¶
Запросы, направляемые на адрес /v2/insert, приводят к вставке данных или в буфер записи, или в колоночное хранилище таблицы, в зависимости от параметров запроса.
POST /v2/insert: вставка данных¶
Тело запроса:¶
{
"table_name": "table_name",
"rows": [
{
"column0": 1,
"column1": true,
"column2": "string",
"column3": 1234
},
{
"column0": 1,
"column1": false
}
]
}
table_name– название таблицы;rows– массив описаний объектов для вставки.
Ответ¶
Код |
Описание |
|---|---|
|
Объекты успешно добавлены |
|
Ошибка в запросе |
Тело ответа¶
Тело ответа содержит количество записей, которые были вставлены:
curl
λ:~/Code/tcs$ curl localhost:7777/v2/insert -d '{ "table_name": "foo", "rows": [ {"i64_0": 1, "utf8_0": "bar1" }, {"i64_0": 2, "utf8_0": "bar2"}] }'
inserted 2 records
/sql: выполнение SQL¶
HTTP-адрес /sql используется для выполнения запросов на чтение данных,
а также для выполнения других поддерживаемых функций и операторов SQL.
Важно
HTTP-адрес /sql не поддерживает запросы на запись, кроме INSERT-запросов на
вставку данных из выборки и DDL-запросов
на создание и удаление таблиц.
Запросы на запись, в том числе аналитические расчеты,
следует отправлять на адрес /computation.
POST /sql: выполнение SQL¶
Тело запроса¶
Тело запроса должно содержать SQL-оператор, например запрос SELECT:
SELECT * FROM catalog.schema.table WHERE column1=1"
Ответ¶
Код |
Описание |
|---|---|
|
Запрос или оператор успешно выполнен |
Тело ответа¶
Массив описаний выбранных объектов:
[
{
"column1": "2024-03-13T10:14:08",
"column0": "1",
"column2": false,
"column3": "alice"
}
]
/streaming/sql: потоковые SQL-запросы¶
HTTP-адрес /streaming/sql используется для выполнения SQL-запросов на чтение и потоковой вычитки результатов.
Важно
Ограничения:
Данный HTTP-адрес не поддерживает отправку запросов в отдельную среду выполнения.
Потоковые запросы, отправленные через данный HTTP-адрес, не отображаются в списке активных запросов и их нельзя отменить.
POST /streaming/sql: выполнение SQL-запросов с потоковой вычиткой результатов¶
Тело запроса¶
Тело запроса должно содержать SQL-оператор, например, запрос SELECT:
SELECT * FROM attributes
Ответ¶
Код |
Описание |
|---|---|
|
Запрос или оператор успешно выполнен |
Тело ответа¶
Массив JSON-объектов, где каждая строка из выборки возвращается как отдельный JSON-объект на отдельной строке:
[
{"Attribute0":555,"Attribute1":null,"Attribute2":null,"Attribute3":null,"Attribute4":foo}
{"Attribute0":1,"Attribute1":1,"Attribute2":null,"Attribute3":null,"Attribute4":null}
{"Attribute0":1,"Attribute1":55,"Attribute2":777,"Attribute3":1234,"Attribute4":foo}
]
/update: обновление данных¶
HTTP-адрес /update используется для обновления объектов.
POST /update: обновление данных¶
Тело запроса¶
{
"table_name": "table_name",
"ops": [
{
"op": "set",
"column_name": "column1",
"value": 123
},
{
"op": "set",
"column_name": "column2",
"value": "test"
}
],
"conditions": [
{
"column_name": "column0",
"value": 1
}
]
}
table_name– название таблицы;ops– массив описаний операций обновления:op– операция. Возможные значения:set– установить новое значение;append– добавить строку к строчному значению;add– прибавить число к числовому значению;sub– вычесть число из числового значения;
column_name– название колонки для обновления;value– новое значение;
conditions– массив условий выбора объектов. Поддерживается выбор объектов по полному совпадению.column_name– название колонки, используемой для выбора объектов;value– текущее значение или массив значений.
Ответ¶
Код |
Описание |
|---|---|
|
Объекты успешно обновлены |
/version: текущая версия TCS¶
HTTP-адрес /version используется для просмотра текущей версии TCS.
GET /version: просмотр текущей версии TCS¶
Ответ¶
Код |
Описание |
|---|---|
|
Текущая версия получена |
Тело ответа¶
Массив параметров текущей версии (номер версии, тип сборки, компилятор):
{
"version": "0.23.0-37-g4dde2fcd",
"target": "release",
"compiler": "rustc 1.81.0 (eeb90cda1 2024-09-04) (gentoo)"
}
Параметры заголовков в HTTP-запросах¶
Ниже приводится список всех параметров, которые поддерживаются в заголовках HTTP-запросов к TCS.
Примечание
Неизвестные параметры в заголовке запроса (в том числе имена параметров, написанные с опечаткой) игнорируются без сообщений об ошибке.
Параметр |
Тип данных |
HTTP-адреса |
По умолчанию |
Описание |
|---|---|---|---|---|
|
boolean |
|
false |
Осуществлять ли вставку в атомарном режиме. См. подробнее. |
|
boolean |
|
false |
Нужно ли включать BRIN-фильтрацию для числовых колонок в запросе. См. подробнее. |
|
string |
|
- |
Аналитические расчеты (имена через запятую либо |
|
int |
|
- |
Аналитические расчеты (имена через запятую либо |
|
string |
|
- |
Имя среды выполнения для запроса (например, |
|
int |
|
4500 |
Ограничение (в миллисекундах) на индивидуальное время выполнение каждого счетчика в рамках аналитического расчета. См. подробнее. |
|
boolean |
|
false |
Нужно ли применять правила оптимизации для запроса. |
|
boolean |
|
false |
Нужно ли отключать ускоренное обновление колоночного хранилища для запроса на обновление данных (по умолчанию ускоренное обновление включено). См. подробнее. |
|
string |
|
- |
Список оптимизаций, которые нужно отключить для аналитического расчета. См. подробнее. |
|
int |
|
1 |
Обработка только части запроса (например 1/10, если указано |
|
boolean |
|
false |
Возвращать ли ответ в формате Apache Ignite. Про случаи обращения к |
|
boolean |
|
false |
Возвращать ли в ответе схему данных. Про случаи обращения к |
|
boolean |
все |
false |
Нужно ли выполнять чтение данных только по буферу записи (по умолчанию чтение выполняется и по буферу записи, и по колоночному хранилищу). См. подробнее. |
|
boolean |
все |
false |
Нужно ли выполнять чтение данных только по колоночному хранилищу (по умолчанию чтение выполняется и по буферу записи, и по колоночному хранилищу). См. подробнее. |
|
int |
|
1 |
Количество партиций, которые должны параллельно читаться из колоночного хранилища. См. подробнее. |
|
|
|
Стратегия партиционирования данных при чтении. См. подробнее. |
|
|
boolean |
все |
true |
Порядок чтения из таблиц: если задано |
|
string |
|
any |
Тип экземпляров для принудительной маршрутизации запроса ( |
|
int |
|
5000 |
Ограничение (в миллисекундах) на суммарное время выполнения всех счетчиков в рамках аналитического расчета. См. подробнее. |
|
boolean |
|
true |
Нужно ли отключать ускоренное обновление представления для чтения после выполнения запроса на вставку данных. См. подробнее. |
|
true |
Нужно ли при чтении из буфера записи также учитывать данные последних сделанных вставок. См. подробнее. |
||
|
int |
|
5000 |
Ограничение (в миллисекундах) на суммарное время выполнения всех счетчиков в рамках аналитического расчета. См. подробнее. |
|
boolean |
|
false |
Определение типа хранилища таблицы для вставки данных. См. подробнее. |
|
boolean |
|
false |
Включение индексного поиска для обновления данных. См. подробнее. |