Масштабирование | Tcs

Версия:

1.x
Руководство пользователя Масштабирование

Масштабирование

Репликация

Поддерживаются стандартные функции синхронной/асинхронной репликации Tarantool.

Шардирование

TCS поддерживает горизонтальное масштабирование посредством механизма шардирования, что предполагает разбиение набора данных на части и распределение их по нескольким наборам реплик (шардам). Данные распределяются по шардам по ключу шардирования, который указывается для каждой шардированной таблицы.

Для запросов на чтение в режиме шардирования предусмотрены специальные оптимизации.

Особенности работы шардирования в TCS

Ограничения текущей версии TCS:

  • При переходе на шардированную конфигурацию требуется полная перезаливка данных.

  • Режим шардирования (параметр mode.sharded) не рекомендуется включать, если в конфигурации кластера не заданы хотя бы 2 шарда.

  • Распределение данных между шардами осуществляется на основе актуальной конфигурации кластера. Любые изменения в конфигурации наборов реплик после начальной загрузки данных могут вызвать нарушения в работе механизма шардирования. К критическим изменениям относятся:

    • Переименование существующих наборов реплик;

    • Удаление наборов реплик;

    • Добавление новых наборов реплик.

    В случае проведения подобных операций после изменения конфигурации необходима полная перезаливка данных для обеспечения корректной работы системы шардирования.

Создание шардированных таблиц

Для создания шардированной таблицы используется команда CREATE TABLE с параметром SHARDED BY, где указывается ключ, по которому будет проводиться шардирование.

Ключ шардирования может быть строкой, числом или составным ключом.

При выборе ключа рекомендуется руководствоваться несколькими принципами:

  • запросы должны быть максимально локализованы;

  • данные должны быть сбалансированы по ключу.

Пример: создание шардированной таблицы с составным ключом

CREATE TABLE t(
    a i32,
    b utf8,
    c u64,
    d bool
)
SHARDED BY a, b

Шардированные таблицы можно создавать, только если кластер работает в режиме шардирования.

Как и все прочие запросы к кластеру в режиме шардирования, запросы на создание таблицы следует отправлять через экземпляр Scheduler, а не напрямую через экземпляр Storage.

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