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 не гарантировано.