Vladislav Shpilevoy PRO
Backend C++ developer at VirtualMinds. Database C developer at Tarantool.
Владислав Шпилевой
Вертикальное
Горизонтальное
Зачем?
Репликация
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
Backend C++ developer at VirtualMinds. Database C developer at Tarantool.