Справочник по HTTP API | Tcs

Version:

0.x
Справочники Справочник по HTTP API

Справочник по HTTP API

В этом разделе приведен список HTTP-адресов, через которые выполняется взаимодейстие с Tarantool Column Store.

Содержание

/cancel: отмена обработки запросов

HTTP-адрес /cancel используется для отмены запросов.

POST /cancel/$request_id: удаление запроса

Ответ

Код

Описание

409 Conflict

Запрос удален

Тело ответа

Сообщение об удалении и идентификатор удаленного запроса:

"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 для вычисления результата расчета.

Ответ

Код

Описание

200 OK

Расчет успешно добавлен

400 Bad request

Ошибка в запросе

Тело ответа

Название созданного расчета:

"plan"

POST /computation/run: выполнение расчета

Тело запроса

Массив пар название расчета-аргументы вызова:

[
	{
    "name": "plan",
    "args": [ 1 ]
  },
	{
    "name": "plan",
    "args": [ 2 ]
   }
]
  • name – название расчета;

  • args – массив аргументов вызова в порядке объявления.

Ответ

Код

Описание

200 OK

Расчеты выполнены

400 Bad request

Ошибка в запросе

408 Request timeout

Запрос прерван по истечении времени выполнения

Тело ответа

{
	"success": {
		"plan": [
			{
				"COUNT(*)": 1
			}
		]
	},
	"fail": {
		"no": "prepared statement '\"no\"' is not found"
	}
}

Подробнее см. Просмотр фактического времени выполнения запроса и Ограничение времени выполнения запроса.

Параметры

По умолчанию аналитические расчеты выполняются последовательно, в одном потоке. Если же указан параметр run_concurrent=true, то расчеты выполняются параллельно, в несколько потоков. Например:

POST http://localhost:7777/computation/run?run_concurrent=true HTTP/1.1

[тело_запроса]

DELETE /computation/$name: удаление расчета

Ответ

Код

Описание

200 OK

Расчет удален

Тело ответа

Название удаленного расчета:

"plan"

GET /computation: просмотр списка расчетов

Ответ

Код

Описание

200 OK

Список расчетов получен

Тело ответа

Массив имен существующих аналитических расчетов:

[
	"plan"
]

GET /computation/$name: просмотр текста запроса

Ответ

Код

Описание

200 OK

Текст расчета получен

Тело ответа

{
	"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.

Ответ

Код

Описание

200 OK

Представление успешно добавлено, замещено или удалено

400 Bad request

Ошибка в запросе.

404 Not found

SQL-представление для удаления не найдено.

Тело ответа

Название созданного, замещенного или удаленного SQL-представления:

"adults"

/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-представления.

Ответ

Код

Описание

200 OK

SQL-представление успешно добавлено.

400 Bad request

Ошибка в запросе.

Тело ответа

Название созданного SQL-представления:

"adults"

POST /ddl/view/$name/delete: удаление SQL-представления

Примечание

Удаление SQL-представления также возможно с помощью POST-запроса на адрес /ddl/sql.

Ответ

Код

Описание

200 OK

SQL-представление удалено.

404 Not found

SQL-представление не найдено.

Тело ответа

Название удаленного SQL-представления:

"adults"

GET /ddl/view: просмотр списка нематериализованных представлений

Ответ

Код

Описание

200 OK

Список представлений получен

Тело ответа

Массив имен существующих нематериализованных представлений:

[
	"adults"
]

GET /ddl/view/$name: просмотр текста SQL-представления

Ответ

Код

Описание

200 OK

Текст SQL-представления получен.

404 Not found

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

Код

Описание

200 OK

Запрос успешно обработан.

400 Bad request

Ошибка в запросе или не поддерживается.

404 Not found

Не найдена конфигурация или схема.

409 Conflict

Таблица уже существует.

500 Internal

Внутренние ошибки

Тело запроса оператора DROP TABLE

DROP TABLE [IF EXISTS] table_name

Ответ на запрос DROP TABLE

Код

Описание

200 OK

Запрос успешно обработан.

400 Bad request

Ошибка в запросе или не поддерживается.

404 Not found

Таблица не найдена.

500 Internal

Внутренние ошибки

Тело ответа

[]

/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 – массив описаний объектов для вставки.

Ответ

Код

Описание

200 OK

Объекты успешно добавлены

400 Bad request

Ошибка в запросе

/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 – массив описаний объектов для вставки.

Ответ

Код

Описание

200 OK

Объекты успешно добавлены

400 Bad request

Ошибка в запросе

Тело ответа

Тело ответа содержит количество записей, которые были вставлены:

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"

Ответ

Код

Описание

200 OK

Запрос или оператор успешно выполнен

Тело ответа

Массив описаний выбранных объектов:

[
  {
    "column1": "2024-03-13T10:14:08",
    "column0": "1",
    "column2": false,
    "column3": "alice"
  }
]

/streaming/sql: потоковые SQL-запросы

HTTP-адрес /streaming/sql используется для выполнения SQL-запросов на чтение и потоковой вычитки результатов.

Важно

Ограничения:

POST /streaming/sql: выполнение SQL-запросов с потоковой вычиткой результатов

Тело запроса

Тело запроса должно содержать SQL-оператор, например, запрос SELECT:

SELECT * FROM attributes

Ответ

Код

Описание

200 OK

Запрос или оператор успешно выполнен

Тело ответа

Массив 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 – текущее значение или массив значений.

Ответ

Код

Описание

200 OK

Объекты успешно обновлены

/version: текущая версия TCS

HTTP-адрес /version используется для просмотра текущей версии TCS.

GET /version: просмотр текущей версии TCS

Ответ

Код

Описание

200 OK

Текущая версия получена

Тело ответа

Массив параметров текущей версии (номер версии, тип сборки, компилятор):

{
    "version": "0.23.0-37-g4dde2fcd",
    "target": "release",
    "compiler": "rustc 1.81.0 (eeb90cda1 2024-09-04) (gentoo)"
}

Параметры заголовков в HTTP-запросах

Ниже приводится список всех параметров, которые поддерживаются в заголовках HTTP-запросов к TCS.

Примечание

Неизвестные параметры в заголовке запроса (в том числе имена параметров, написанные с опечаткой) игнорируются без сообщений об ошибке.

Параметр

Тип данных

HTTP-адреса

По умолчанию

Описание

x-tcs-atomic

boolean

/insert

false

Осуществлять ли вставку в атомарном режиме. См. подробнее.

x-tcs-brin_filter

boolean

/sql, /streaming/sql, /computation/run, /exec/*

false

Нужно ли включать BRIN-фильтрацию для числовых колонок в запросе. См. подробнее.

x-ext-tcs-computations-explain

string

/computation/run

-

Аналитические расчеты (имена через запятую либо *), для которых нужно отобразить детализацию EXPLAIN ANALYZE. См. подробнее.

x-ext-tcs-computations-explain-verbose-level

int

/computation/run

-

Аналитические расчеты (имена через запятую либо *), для которых нужно отобразить детализацию EXPLAIN ANALYZE VERBOSE.

x-ext-tcs-request-runtime

string

/sql, /computation/run

-

Имя среды выполнения для запроса (например, analytics). См. подробнее.

x-tcs-computation_max_duration_ms

int

/computation/run

4500

Ограничение (в миллисекундах) на индивидуальное время выполнение каждого счетчика в рамках аналитического расчета. См. подробнее.

x-tcs-computation_run_optimizations

boolean

/computation/run

false

Нужно ли применять правила оптимизации для запроса.

x-tcs-disable_column_update

boolean

/update

false

Нужно ли отключать ускоренное обновление колоночного хранилища для запроса на обновление данных (по умолчанию ускоренное обновление включено). См. подробнее.

x-tcs-disabled_optimizations

string

/computation

-

Список оптимизаций, которые нужно отключить для аналитического расчета. См. подробнее.

x-tcs-execution_sample_rate

int

/sql, /select_for_update

1

Обработка только части запроса (например 1/10, если указано 10), используется для предварительной оценки. См. подробнее.

x-tcs-ignite_compatible

boolean

/sql, /streaming/sql, /computation/run

false

Возвращать ли ответ в формате Apache Ignite. Про случаи обращения к /sql, /streaming/sql см. подробнее. Про случаи обращения к /computation/run см. подробнее.

x-tcs-include_table_headers

boolean

/sql, /streaming/sql, /computation/run

false

Возвращать ли в ответе схему данных. Про случаи обращения к /sql, /streaming/sql см. подробнее. Про случаи обращения к /computation/run см. подробнее.

x-tcs-only_buffer

boolean

все

false

Нужно ли выполнять чтение данных только по буферу записи (по умолчанию чтение выполняется и по буферу записи, и по колоночному хранилищу). См. подробнее.

x-tcs-only_tarantool_exec

boolean

все

false

Нужно ли выполнять чтение данных только по колоночному хранилищу (по умолчанию чтение выполняется и по буферу записи, и по колоночному хранилищу). См. подробнее.

x-tcs-partition_count

int

/sql, /streaming/sql, /computation/run, /exec/*

1

Количество партиций, которые должны параллельно читаться из колоночного хранилища. См. подробнее.

x-tcs-partitioning_strategy

/sql, /streaming/sql, /computation/run, /exec/*

round_robin

Стратегия партиционирования данных при чтении. См. подробнее.

x-tcs-reverse_order

boolean

все

true

Порядок чтения из таблиц: если задано true (обратный порядок), то сначала возвращаются самые старые данные. См. подробнее.

x-tcs-route

string

/sql, /streaming/sql

any

Тип экземпляров для принудительной маршрутизации запроса (ro, rw, any). См. подробнее.

x-tcs-timeout_ms

int

/computation/run, /insert, /update

5000

Ограничение (в миллисекундах) на суммарное время выполнения всех счетчиков в рамках аналитического расчета. См. подробнее.

x-tcs-memcs_insert_arrow

boolean

/insert

true

Нужно ли отключать ускоренное обновление представления для чтения после выполнения запроса на вставку данных. См. подробнее.

/sql, /streaming/sql

true

Нужно ли при чтении из буфера записи также учитывать данные последних сделанных вставок. См. подробнее.

x-tcs-timeout_ms

int

/computation/run, /insert, /update

5000

Ограничение (в миллисекундах) на суммарное время выполнения всех счетчиков в рамках аналитического расчета. См. подробнее.

x-tcs-insert_into_columns

boolean

/sql, /v2/insert

false

Определение типа хранилища таблицы для вставки данных. См. подробнее.

x-tcs-index_search

boolean

/update

false

Включение индексного поиска для обновления данных. См. подробнее.

Found what you were looking for?
Feedback