Vladislav Shpilevoy PRO
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.
Владислав Шпилевой
Вертикальное
Горизонтальное
Зачем?
Репликация
ABC
ABC
ABC
Шардинг
A
B
C
Масштабирование вычислений и отказоустойчивость
Масштабирование вычислений и данных
Репликация и шардинг
A
A
A
B
B
B
C
C
C
Масштабирование вычислений, данных и отказоустойчивость
begin
Асинхронная
commit
replicate
begin
Cинхронная
prepare
replicate
commit
Коммит не ждет, пока сработает репликация
Коммит в две фазы. Для успеха нужна репликация на N узлов
Отставание асинхронных реплик
Медленная сеть
Отставание
Мастер
Сложные топологии
Диапазоны
Хеш
Как выбрать, куда что сохранять?
min
max
Узнал, в какой диапазон попадает ключ - узнал физический узел
Посчитал хеш от ключа - узнал физический узел
?
Меняется N - меняется шард-функция
Бесполезные переносы
... но это не про Tarantool
Данные
Виртуальные узлы
Физические узлы
{tuple}
{tuple}
{tuple}
{tuple}
{tuple}
{tuple}
#
= const >>
#
Шард-функция неизменна
Как по диапазону или бакету понять, где он физически лежит?
1. Запретить решардинг
2. Всегда ходить на все узлы
3. Сделать прокси-маршрутизатор
СУБД + Сервер Приложений в одном
C, Lua, SQL, Python, PHP, Go, Java, C# ...
Обработка запросов
WAL
Сеть
Процесс
Потоки
Персистентное in-memory и дисковое хранение на выбор
Хранимые процедуры на C, Lua, SQL
Кооперативная многозадачность
Многопоточность
Простаивание потока
Файберы
Event-loop
Шардинг |
Репликация
|
In-memory
|
Disk
|
Персистентность
|
SQL
|
Хранимые процедуры
|
Аудит логи
|
Подключение к другим СУБД
|
Статическая сборка
|
GUI |
Безпрецедентная производительность |
Tarantool VShard |
Синхронная/Асинхронная |
Движок memtx |
Движок vinyl, LSM-дерево |
В обоих движках |
Стандарт ANSI |
Lua, C, SQL |
Есть |
MySQL, Oracle,
Memcached |
Для Linux |
Управление кластером, данными |
Сотни тысяч RPS на один инстанс -
легко |
By Vladislav Shpilevoy
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.