Шардирование
С ростом проекта масштабирование баз данных часто становится одной из наиболее серьезных проблем. Если отдельный сервер не может справиться с нагрузкой, необходимо применять средства масштабирования.
Шардирование – это архитектура баз данных, которая допускает горизонтальное масштабирование, что означает разбиение набора данных на части и распределение их по нескольким серверам.
С помощью модуля vshard кортежи набора данных распределяются по множеству узлов, на каждом из которых находится экземпляр сервера базы данных Tarantool. Каждый экземпляр обрабатывает лишь подмножество от общего количества данных, поэтому увеличение нагрузки можно компенсировать добавлением новых серверов. Первоначальный набор данных секционируется на множество частей, поэтому каждая часть хранится на отдельном сервере.
Модуль vshard основан на концепции виртуальных сегментов: набор
кортежей распределяется на большое количество абстрактных виртуальных узлов (виртуальных сегментов, или просто
сегментов далее по тексту), а не на малое количество физических узлов.
Секционирование набора данных осуществляется с помощью сегментных ключей (идентификаторов сегментов). Хеширование сегментного ключа в большое количество сегментов позволяет незаметно для пользователя изменять количество серверов в кластере. Механизм перебалансировки равномерно распределяет сегменты между всеми шардами при добавлении или удалении каких-либо серверов.
Для сегментов предусмотрены состояния, поэтому можно легко отслеживать состояние сервера. Например, активен ли экземпляр сервера и доступен ли он для всех типов запросов, или же произошло переключение при отказе, и сервер принимает только запросы на чтение.
Модуль vshard предоставляет общедоступные и внутренние API роутера и хранилища для приложений с поддержкой шардирования.
Начните с руководства по быстрому запуску или узнайте подробности об архитектуре шардирования в Tarantool:
Ознакомьтесь с руководством администратора по шардированию или перейдите к
справочнику по конфигурации и API модуля vshard.