Создание распределённой таблицы

Manticore позволяет создавать распределённые таблицы, которые работают как обычные plain или real-time таблицы, но на самом деле являются коллекцией дочерних таблиц, используемых для поиска. Когда запрос отправляется в распределённую таблицу, он распределяется по всем таблицам в коллекции. Затем сервер собирает и обрабатывает ответы для сортировки и при необходимости перерасчёта значений агрегатов.

С точки зрения клиента, создаётся впечатление, что он выполняет запрос к одной таблице.

Распределённые таблицы могут состоять из любых комбинаций таблиц, включая:

  • Локальные таблицы хранения (plain table и Real-Time)
  • Удалённые таблицы
  • Комбинация локальных и удалённых таблиц
  • Percolate таблицы (локальные, удалённые или комбинация)
  • Одна локальная и несколько удалённых таблиц или любая другая комбинация

Смешивание percolate и шаблонных таблиц с plain и real-time таблицами не рекомендуется.

Распределённая таблица определяется как тип 'distributed' в конфигурационном файле или через SQL оператор CREATE TABLE

В конфигурационном файле

table foo {
    type = distributed
    local = bar
    local = bar1, bar2
    agent = 127.0.0.1:9312:baz
    agent = host1|host2:tbl
    agent = host1:9301:tbl1|host2:tbl2 [ha_strategy=random retry_count=10]
    ...
}

Через SQL

CREATE TABLE distributed_index type='distributed' local='local_index' agent='127.0.0.1:9312:remote_table'

Дочерние таблицы

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

  1. Локальные таблицы: Это таблицы, обслуживаемые на том же сервере, что и распределённая таблица. Для перечисления локальных таблиц используется синтаксис local =. Вы можете указать несколько локальных таблиц с помощью нескольких строк local = или объединить их в один список, разделённый запятыми.

  2. Удалённые таблицы: Это таблицы, обслуживаемые вне сервера. Для перечисления удалённых таблиц используется синтаксис agent =. Каждая строка представляет один endpoint или агент. Каждый агент может иметь несколько внешних локаций и опций того, как он должен работать. Подробнее здесь. Важно отметить, что сервер не имеет информации о типе таблицы, с которой он работает. Это может привести к ошибкам, если, например, вы выполните CALL PQ для удалённой таблицы 'foo', которая не является percolate таблицей.

Last modified: August 28, 2025