Read view | Tdb

Версия:

latest

Read view

Представления для чтения, или read view – это снимки хранилища данных в конкретный момент времени, на которые не влияют будущие изменения данных. Такие снимки предоставляют доступ к кортежам и их индексам, а также позволяют получить данные с помощью операций select и pairs. В каждый момент времени в системе существует одно актуальное представление на чтение. Подробнее о представлениях для чтения читайте в документации Tarantool EE.

Представления для чтения можно использовать для выполнения сложных аналитических запросов. Read view позволяет вынести аналитические данные из мастер-системы (MySQL, Oracle) в Tarantool и получать при необходимости доступ к консистентному состоянию данных в определённый момент времени. Это снижает нагрузку на основную базу данных и повышает RPS экземпляра Tarantool. Чтобы оптимизировать потребление памяти и производительность, Tarantool создает read view с помощью копирования при записи (copy-on-write, COW). Дублирование всего набора данных при этом не требуется – Tarantool дублирует только блоки, измененные после создания read view.

Использование read view через Lua API позволяет пользователю получить при чтении консистентные данные. Работа с read view происходит в потоке TX thread (потоке процессора транзакций). Если вам нужно работать в режиме параллельности – применять read view в отдельном потоке от TX thread, вы можете использовать низкоуровневое обращение к read view через C API.

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

Ограничения Read view

Представления для чтения имеют следующие ограничения:

  • поддерживаются только TREE и HASH индексы;

  • поддерживается только движок memtx;

  • не поддерживается пагинация (опция after);

Кроме того, не поддерживается read view на уровне кластера. Для шардированного кластера read view открывается на каждом хранилище. Из-за распределенной природы кластера одновременное открытие read view не гарантировано.

Нашли ответ на свой вопрос?
Обратная связь