Таблица в реальном времени

Таблица в реальном времени — это основной тип таблицы в Manticore. Она позволяет добавлять, обновлять и удалять документы, и вы можете видеть эти изменения сразу же. Вы можете настроить таблицу в реальном времени в конфигурационном файле или использовать команды, такие как CREATE, UPDATE, DELETE или ALTER.

Внутри таблица в реальном времени состоит из одной или нескольких простых таблиц, называемых чанками. Существуют два типа чанков:

  • несколько дисковых чанков — они сохраняются на диске и структурированы как простая таблица.
  • один RAM-чанк — хранится в памяти и собирает все изменения.

Размер RAM-чанка контролируется настройкой rt_mem_limit. Как только этот лимит достигается, RAM-чанк переносится на диск как дисковый чанк. Если дисковых чанков становится слишком много, Manticore объединяет некоторые из них для улучшения производительности.

Создание таблицы в реальном времени:

Вы можете создать новую таблицу в реальном времени двумя способами: с помощью команды CREATE TABLE или через _mapping endpoint HTTP JSON API.

Команда CREATE TABLE:

Вы можете использовать эту команду как через SQL, так и через HTTP протоколы:

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • Javascript
  • Java
  • C#
  • Rust
  • Typescript
  • Go
  • CONFIG
📋
CREATE TABLE products(title text, price float) morphology='stem_en';
‹›
Response
Query OK, 0 rows affected (0.00 sec)

_mapping API:

ПРИМЕЧАНИЕ: API _mapping требует Manticore Buddy. Если он не работает, убедитесь, что Buddy установлен.

В качестве альтернативы вы можете создать новую таблицу через endpoint _mapping. Этот endpoint позволяет определить структуру таблицы, похожую на Elasticsearch, которая будет преобразована в таблицу Manticore.

Тело вашего запроса должно иметь следующую структуру:

"properties"
{
  "FIELD_NAME_1":
  {
    "type": "FIELD_TYPE_1"
  },
  "FIELD_NAME_2":
  {
    "type": "FIELD_TYPE_2"
  },
  ...
  "FIELD_NAME_N":
  {
    "type": "FIELD_TYPE_M"
  }
}

При создании таблицы типы данных Elasticsearch будут сопоставлены с типами Manticore согласно следующим правилам:

  • aggregate_metric => json
  • binary => string
  • boolean => bool
  • byte => int
  • completion => string
  • date => timestamp
  • date_nanos => bigint
  • date_range => json
  • dense_vector => json
  • flattened => json
  • flat_object => json
  • float => float
  • float_range => json
  • geo_point => json
  • geo_shape => json
  • half_float => float
  • histogram => json
  • integer => int
  • integer_range => json
  • ip => string
  • ip_range => json
  • keyword => string
  • knn_vector => float_vector
  • long => bigint
  • long_range => json
  • match_only_text => text
  • object => json
  • point => json
  • scaled_float => float
  • search_as_you_type => text
  • shape => json
  • short => int
  • text => text
  • unsigned_long => int
  • version => string
‹›
  • JSON
JSON
📋
POST /your_table_name/_mapping -d '
{
  "properties": {
    "price": {
        "type": "float"
    },
    "title": {
        "type": "text"
    }
  }
}
'
‹›
Response
{
"total":0,
"error":"",
"warning":""
}

CREATE TABLE LIKE:

Вы можете создать копию таблицы в реальном времени, с данными или без них. Обратите внимание, что если таблица большая, копирование с данными может занять некоторое время. Копирование работает в синхронном режиме, но если соединение прервется, оно продолжится в фоновом режиме.

CREATE TABLE [IF NOT EXISTS] table_name LIKE old_table_name [WITH DATA]

ПРИМЕЧАНИЕ: Копирование таблицы требует Manticore Buddy. Если оно не работает, убедитесь, что Buddy установлен.

‹›
  • SQL
  • Example (WITH DATA)
📋
create table products LIKE old_products;

👍 Что вы можете делать с таблицей в реальном времени:

⛔ Что вы не можете делать с таблицей в реальном времени:

  • Загружать данные с помощью функции indexer.
  • Подключать её к источникам для удобного индексирования из внешнего хранилища.
  • Обновите killlist_target, так как он автоматически управляется таблицей реального времени.

Структура файлов таблицы реального времени

В следующей таблице приведены различные расширения файлов и их описания в таблице реального времени:

Extension Description
.lock Файл блокировки, который гарантирует, что только один процесс может получить доступ к таблице одновременно.
.ram RAM-чанк таблицы, хранящийся в памяти и используемый как аккумулятор изменений.
.meta Заголовки таблицы реального времени, определяющие её структуру и настройки.
.*.sp* Дисковые чанки, которые хранятся на диске в том же формате, что и обычные таблицы. Они создаются, когда размер RAM-чанка превышает rt_mem_limit.

Для получения дополнительной информации о структуре дисковых чанков обратитесь к структуре файлов обычной таблицы.

Last modified: August 28, 2025