Ключевые изменения в Tarantool DB 2.x | Tdb

Ключевые изменения в Tarantool DB 2.x

В этом разделе описаны самые заметные изменения в Tarantool DB 2.x в сравнении с версиями 1.x. Узнать больше о новых возможностях Tarantool DB 2.0 можно в разделе Tarantool DB 2.0.

Содержание:

Конфигурация кластера

Начиная с Tarantool DB 2.0, есть только два способа загрузки конфигурации в кластер:

Начиная с версии 2.0, обновление конфигурации через HTTP API или Lua API недоступно.

Узнать больше о конфигурации кластера можно в разделе Конфигурация кластера и в документации Tarantool.

Клиентские утилиты

Начиная с версии Tarantool DB 2.0, существенно изменились процессы запуска кластера и миграций. Клиентские утилиты bootstrap.sh, health_check.sh и migrate.sh, которые применялись до версии 2.0, устарели и были удалены.

bootstrap.sh

До версии Tarantool DB 2.0, утилита применяла настройку топологии кластера. Начиная с версии 2.0, настроить топологию кластера можно через централизованную конфигурацию. Топология кластера указывается в конфигурации и применяется сразу после запуска узлов кластера. Дополнительных действий при этом не требуется.

health_check.sh

До версии Tarantool DB 2.0, утилита health_check.sh использовалась для проверки здоровья кластера и была необходима для работы bootstrap.sh и migrate.sh. Начиная с версии 2.0, утилиты bootstrap.sh и migrate.sh удалены, так что утилита health_check.sh больше не требуется.

migrate.sh

До версии Tarantool DB 2.0, утилита использовалась для загрузки и применения миграций. Вызов утилиты выглядел так:

TARANTOOLDB_BOOTSTRAP_PATH=./bootstrap/ TARANTOOLDB_TARGET_URI=some-router:8081 \
    TARANTOOLDB_HEADERS='Authorization: Bearer 123' ./migrate.sh

Здесь:

  • TARANTOOLDB_BOOTSTRAP_PATH – путь к папке bootstrap, содержавшей папку migrations;

  • TARANTOOLDB_TARGET_URI – адрес роутера, на который отправлялись команды;

  • TARANTOOLDB_HEADERS – заголовки запросов к кластеру.

Начиная с версии 2.0, для загрузки и применения миграций вместо migrate.sh используется утилита tt CLI.

Загрузить миграции можно так:

tt migrations publish http://etcd1:2379/tdb ./migrations/

Здесь:

  • http://etcd1:2379/tdb – адрес одного из узлов ETCD.

  • ./migrations/ – папка с миграциями. Сценарии миграций должны храниться в папке migrations/scenario. Пример файловой структуры:

    migrations/
    └── scenario/
        ├── 001_create_space_test1.lua
        └── 002_create_space_test2.lua
    

Для применения миграций теперь используется отдельная команда:

tt migrations up http://etcd1:2379/tdb --tarantool-cluster-username=admin --tarantool-cluster-password=secret-cluster-cookie

Здесь:

  • http://etcd1:2379/tdb – адрес одного из узлов ETCD;

  • admin – имя пользователя кластера. Указанный пользователь должен обладать достаточными правами на применение миграций;

  • secret-cluster-cookie – пароль пользователя кластера.

Модуль dictionary

В Tarantool DB 1.x подразумевается, что узел работает под тем же пользователем, что и подключаемый клиент. Пользователь при этом обладает полными правами. Этот функционал сохранён в Tarantool DB 2.0.

Начиная с Tarantool DB 2.0.0, в работу словарей внесены следующие изменения:

  • Изменён подход к хранению ролей. Теперь все имена ролей имеют вид roles.*. Для удобства перехода старые роли сохранены и имеют такую же функциональность, как и новые:

    Старая роль

    Новая роль

    dictionary.roles.router

    roles.dictionary-router

    dictionary.roles.storage

    roles.dictionary-storage

  • Изменен формат названий методов модуля.

    Примечание

    Tarantool DB 2.x поддерживает как новый формат названий методов dictionary API (dictionary_router_get()), так и старый (dictionary_router.get()). Методы, добавленные в версии 2.x, поддерживают оба формата названий.

    Вызвать метод в новом формате через tt CLI или в TCM во вкладке Terminal (TT Connect) можно через box.schema.func.call, например:

    box.schema.func.call('dictionary_router_set', 'categories', '1', 'Shops')
    

    Вызвать метод в старом формате можно напрямую, например:

    dictionary_router_set('categories', '1', 'Shops')
    
  • Добавлены методы dictionary_notify_neighbors(), dictionary_wait_key_consistency() и dictionary_check_key_consistency().

  • Удалена опция конфигурации dictionary.logging.

Router API

После применения конфигурации кластера в узлах с ролью roles.dictionary-router становится доступна глобальная переменная dictionary_router, которая содержит методы для вызова на роутере. Ниже приведена сравнительная таблица названий методов в старом и новом форматах.

Старый формат

Новый формат (2.x)

dictionary_router.get()

dictionary_router_get()

dictionary_router.set()

dictionary_router_set()

dictionary_router.del()

dictionary_router_del()

dictionary_router.get_batch()

dictionary_router_get_batch()

dictionary_router.set_batch()

dictionary_router_set_batch()

dictionary_router.get_keys()

dictionary_router_get_keys()

dictionary_router.get_entity()

dictionary_router_get_entity()

dictionary_router.del_entity()

dictionary_router_del_entity()

dictionary_router.try_sync()

dictionary_router_try_sync()

dictionary_router.notify_neighbors()

dictionary_router_notify_neighbors()

dictionary_router.check_consistency()

dictionary_router_check_consistency()

dictionary_router.check_key_consistency()

dictionary_router_check_key_consistency()

dictionary_router.wait_key_consistency()

dictionary_router_wait_key_consistency()

Storage API

После применения конфигурации кластера в узлах с ролью roles.dictionary-storage становится доступна глобальная переменная dictionary, которая содержит методы для вызова на хранилище. Ниже приведена сравнительная таблица названий методов в старом и новом форматах.

Старый формат

Новый формат (2.x)

dictionary.get()

dictionary_get()

dictionary.set()

dictionary_set()

dictionary.del()

dictionary_del()

dictionary.get_batch()

dictionary_get_batch()

dictionary.set_batch()

dictionary_set_batch()

dictionary.get_keys()

dictionary_get_keys()

dictionary.get_entity()

dictionary_get_entity()

dictionary.del_entity()

dictionary_del_entity()

dictionary.try_sync()

dictionary_try_sync()

dictionary.notify_neighbors()

dictionary_notify_neighbors()

dictionary.check_consistency()

dictionary_check_consistency()

dictionary.check_key_consistency()

dictionary_check_key_consistency()

dictionary.wait_key_consistency()

dictionary_wait_key_consistency()

Настройка шардирования

Начиная с Tarantool DB 2.0, удалены технологические роли vshard-router и vshard-storage. Теперь для настройки модуля шардирования используется раздел sharding в конфигурации кластера.

Пример

      roles: [sharding]

iproto:
  advertise:
    peer:
      login: replicator
    sharding:
      login: storage

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