Pull to refresh

Comments 6

Тип итератора — GT (Greater Than, больше чем). Это означает, что итератор будет осуществлять последовательный обход значений индекса начиная с переданного ключа (значения поля row_ver).

Или GE использовать, или начинать будет со следующего (что и показывают примеры).
Спасибо за внимательное чтение! В коде все верно, в тексте действительно была неточность. Поправил.
Вопрос: а протокол HTTP и гоняемый по нему JSON не убьет всю экономию трафика? Низкоуровневая репликация обычно в более компактном бинарном виде, возможно даже в сжатом, и без «мусора» (типа http-заголовков).

Раз уж цель — экономия трафика, то для репликации на высоком уровне в Tarantool-е «из коробки» поддерживается что-то более компактное, чем HTTP+JSON, например, обмен между Тарантулами по Tarantool Protocol?
  1. Основная цель высокоуровневой репликации — достичь большей гибкости при передаче данных. Это универсальный подход, способный работать даже в распределенных/гетерогенных системах (см. рис. 3). Поэтому HTTP здесь — больше преимущество, чем недостаток. Количество трафика при использовании JSON на самом деле не является большой проблемой, т.к. сжатый JSON часто сопоставим по размеру с бинарным представлением данных.
  2. Экономия трафика по сравнению с низкоуровневой репликацией может быть получена за счет гибкости подхода. Например, в БД 1000 таблиц, а я хочу передавать только 10.
  3. Если речь идет о передаче данных между Тарантулами и для высокоуровневой репликации хочется использовать именно бинарный протокол, то для этих целей есть модуль net.box. Но такое решение будет менее универсальным.
  4. Высокоуровневая репликация не является решением «из коробки». Если нужно что-то более компактное в плане протокола, только между Тарантулами внутри кластера и «из коробки», то ваш выбор — встроенная (низкоуровневая) репликация.
Михаил пытаюсь повторить ваш код по шагам, но спотыкаюсь на выборке при помощи функции get_goods(0):

tarantool> get_goods(0)
---
- error: '[string "return get_goods(0)"]:1: attempt to call global ''get_goods'' (a
    nil value)'
Действительно, для простоты изложения я опустил некоторые детали, что могло вызвать вопросы у разработчиков с небольшим опытом использования Tarantool. Добавил инструкции по созданию модулей и вызова функций из них. Спасибо за замечание!
Sign up to leave a comment.