Vladislav Shpilevoy PRO
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.
Составитель:
Шпилевой Владислав Дмитриевич
Заказчики:
Mail.Ru Group & Tarantool
B-tree
Read/Write
balance
HDD
Память
Диск
Уровень 0
Уровень 1
Уровень N
LSM-tree
Баланс скорости случайных чтения/записи
Дисбаланс скорости последовательных
чтения/записи
"Бесплатные" чтения
> 100х скорость HDD
SSD
Б-дерево
LSM-дерево
INSERT OR REPLACE
DELETE
INSERT OR REPLACE
DELETE
Индекс
Индекс
Найти старую запись
Вставить новую запись
Заменить старую запись
Запись на диск
Найти старую запись
Удалить
старую запись
Чтение диска
Вставить в нулевой уровень:
{данные, INSERT, версия}
Вставить в нулевой уровень:
{ключ, DELETE, версия}
Нет обращений к диску. Последовательная запись при сбросе уровня 0 на диск.
Версионность вторичных индексов не работает
Больше индексов - медленнее обновления
...
Найти старое, вставить новое
Старые версии данных нужно удалять из вторичных индексов сразу, из-за чего:
Разработать алгоритм обновления LSM-деревьев с отложенным удалением старых данных
Требования к реализации:
Требования к алгоритму:
By Vladislav Shpilevoy
Database C developer at Tarantool. Backend C++ developer at VirtualMinds.