Словари¶
Словари – это таблицы, которые хранят одинаковые данные на разных узлах.
В Tarantool DB для работы словарей используется модуль dictionary.
Модуль содержит собственную мультимастерную (multi-master) репликацию и использует системное время.
Модуль доступен в виде двух технологических ролей:
- dictionary.roles.storage– хранение данных словарей;
- dictionary.roles.router– внешнее управление словарями.
Подробный пример использования словарей приведен в разделе Запись и получение данных в словаре.
Примечание
Передача словарей через модуль Tarantool Clusters Federation не поддерживается. TCF поддерживает только репликацию шардированных данных в спейсах с асинхронным режимом репликации.
Содержание:
Гарантии¶
Роль dictionary.roles.storage гарантирует следующее:
- При записи данных в любой узел данные распространяются по остальным узлам с этой же ролью. 
- Экземпляр, вышедший из строя, получит все изменения по данным словарей после возобновления своей работы. 
- При нарушении связи между узлами данные синхронизируются после восстановления связи. 
Ограничения¶
- Необходима пауза между перезаписью данных одного и того же элемента словаря на разных узлах. Величина паузы зависит от погрешности в текущем времени на разных узлах. Например, если суммарная разница во времени не превышает 0.5 секунд, пауза должна составлять 0.5 секунд. В противном случае порядок сохранения новых данных не гарантируется. 
- Работа библиотеки нарушается при переводе системного времени назад, например при ручной корректировке, високосных секундах, NTP-синхронизации. В этом случае библиотека блокирует запись до тех пор, пока не догонит прежнее время. 
- Алгоритм не поддерживает настоящее удаление. Вместо удаления в качестве значения записывается - box.NULL.
- Транзакции действуют в пределах узла. Это может влиять на выполнение операции с несколькими элементами словарей в одной транзакции. - Например, на двух узлах проходят транзакции из двух записей. Первая транзакция – A1=1, B1=2. Вторая транзакция – A2=2, B2=3. Если операции A2 и B2 будут выполнены между A1 и B1, то после синхронизации появятся неконсистентные данные – A = 2, B = 2. 
Конфигурация словарей¶
Настроить работу словарей можно с помощью опций конфигурации в секции dictionary конфигурационного файла (config.yaml).
Пример
dictionary:
  batch_size: 200
  worker_sleep_in_second: 3600
  logging: false
Здесь:
- dictionary.batch_size– размер пакета для обмена между узлами;
- dictionary.worker_sleep_in_second– интервал между опросами соседнего узла на наличие новых данных;
- dictionary.logging– логирование словарей.
Полное описание опций конфигурации dictionary приведено в Справочнике по конфигурации.