Словари | Tdb

Словари

Словари – это таблицы, которые хранят одинаковые данные на разных узлах. В Tarantool DB для работы словарей используется модуль dictionary. Модуль содержит собственную мультимастерную (multi-master) репликацию и использует системное время. Модуль доступен в виде двух технологических ролей:

  • roles.dictionary-storage – хранение данных словарей;

  • roles.dictionary-router – внешнее управление словарями.

Подробный пример использования словарей приведен в разделе Запись и получение данных в словаре. Описание опций конфигурации dictionary и API модуля приведены в справочниках по конфигурации и API. Информация о совместимости модуля dictionary с версией Tarantool DB 1.x приведена в разделе Модуль dictionary.

Примечание

Передача словарей через модуль Tarantool Clusters Federation не поддерживается. TCF поддерживает только репликацию шардированных данных в спейсах с асинхронным режимом репликации.

Гарантии

Роль roles.dictionary-storage гарантирует следующее:

  • При записи данных в один любой узел данные распространяются по остальным узлам с этой же ролью.

  • Экземпляр, вышедший из строя, получит все изменения по данным словарей после возобновления своей работы.

  • При нарушении связи между узлами данные синхронизируются после восстановления связи.

Ограничения

  • Необходима пауза между перезаписью данных одного и того же элемента словаря на разных узлах. Величина паузы зависит от погрешности в текущем времени на разных узлах. Например, если суммарная разница во времени не превышает 0.5 секунд, пауза должна составлять 0.5 секунд. В противном случае порядок сохранения новых данных не гарантируется.

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

  • Алгоритм не поддерживает настоящее удаление. Вместо удаления в качестве значения записывается box.NULL.

  • Транзакции действуют в пределах узла. Это может влиять на выполнение операции с несколькими элементами словарей в одной транзакции.

    Например, на двух узлах проходят транзакции из двух записей. Первая транзакция – A1=1, B1=2. Вторая транзакция – A2=2, B2=3. Если операции A2 и B2 будут выполнены между A1 и B1, то после синхронизации появятся неконсистентные данные – A = 2, B = 2.

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