Прокси-таблица

Прокси-таблица — логическая сущность без версионирования данных и истории данных, поддерживающая параллельную запись и размещенная в единственном датасорсе.

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

Выбор датасорса

При создании прокси-таблицы система выбирает датасорс для ее размещения:

  • если сконфигурирован 1 датасорс, выбирается он (независимо от его статуса);
  • иначе выбор зависит от DATASOURCE_TYPE в запросе:
    • [указан 1 датасорс] выбирается он (независимо от его статуса);
    • [указано несколько датасорсов] выбирается случайный или псевдослучайный* включенный из указанных;
    • [нет DATASOURCE_TYPE] выбирается случайный или псевдослучайный* включенный датасорс из сконфигурированных.

* Псевдослучайный выбор датасорса основан на queryId и доступен только в HTTP-запросах. Запросы с одинаковым queryId создают прокси-таблицы в одном и том же включенном датасорсе (при неизменном списке датасорсов в DATASOURCE_TYPE/конфигурации).

Фактически выбранный датасорс фиксируется в метаданных прокси-таблицы и возвращается для нее в ответе GET_ENTITY_DDL, при обращении к information_schema.tables и т.п.

Виды таблиц

Прокси-таблицы бывают постоянными и временными. Оба вида таблиц имеют одинаковые возможности по управлению ими самими и их данными. Однако временные таблицы не включаются в журнал, системные представления, уведомления о системных событиях и бэкап.

Постоянные таблицы

Постоянная прокси-таблица не имеет ограниченного срока жизни и хранится до тех пор, пока внешняя система ее не удалит.

Временные таблицы

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

Лидер кластера периодически проверяет временные прокси-таблицы окружения и удаляет те из них, срок жизни которых истек. Проверка запускается с интервалом, равным значению параметра ENTITY_TTL_CHECK_PERIOD_MS (по умолчанию — раз в 30 секунд).

Действия с таблицами

Прокси-таблицы можно создавать, изменять и удалять.

Действия с данными таблиц

Данные прокси-таблицы можно загружать, обновлять, запрашивать (читать) и выгружать.

Работать с данными прокси-таблиц можно так же, как данными логических таблиц:

  • обновлять и читать — напрямую, без участия внешних таблиц,
  • загружать и выгружать — с использованием внешних таблиц.

Важное отличие прокси-таблиц от версионируемых логических таблиц заключается в обработке загружаемых и вставляемых записей с одинаковыми значениями первичного ключа. Загрузка и вставка таких записей в прокси-таблицу без дубликатов первичного ключа возможна в следующих случаях:

  • при загрузке данных в таблицу, размещенную в ADP;
  • при обновлении данных таблицы запросом UPSERT VALUES.

Все изменения данных прокси-таблицы выполняются вне механизма дельт и операций записи.

Сравнение с логическими и снапшот-таблицами

В таблице ниже представлено сравнение прокси-таблиц с обычными логическими таблицами и снапшот-таблицами. Плюс означает, что свойство поддерживается или применимо к таблице, минус — что свойство не поддерживается или не применимо.

Свойство Прокси-таблица Обычная лог. таблица Снапшот-таблица
Параллельная запись данных + +
Версионирование данных + +
Отслеживание удалений можно выключить
История данных +
Запись данных в операциях записи + +
Запись данных в дельте +
Синхронная репликация данных в несколько датасорсов + +
Восстановление механизмом auto-failover при сбое датасорсов + +
Уровень консистентности данных при чтении Неприменимо, так как всегда 1 реплика Linearizability От Casual до Linearizability
(в зависимости от настроек таблицы и параметров запроса)

Статистика по таблице

По умолчанию система собирает статистику по логическим сущностям. Подробнее о просмотре, отключении и обнулении статистики см. в разделе Управление статистикой.