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