Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

YDB: мультиверсионность в распределенной базе

Распределенные БД

Доклад принят в программу конференции

Тезисы

В докладе расскажем про особенности выполнения распределенных транзакций, что мы делаем для того, чтобы их поведение было привычным для пользователя. Мы хотим предоставить возможность взятия снапшота всей базы на начало выполнения транзакции, но без MVCC эта операция очень дорогая, так как в интерактивной транзакции заранее неизвестно, какие таблицы или диапазоны ключей будут затронуты. Реализация MVCC позволяет нам читать состояние базы на нужный момент времени в прошлом, и задача взятия снапшота сводится к выбору глобального Timestamp.

Погрузимся в особенности реализации MVCC в YDB:
* MVCC поверх LSM-деревьев;
* как мы сделали MVCC с консистентными снапшотами в распределенной базе данных;
* почему выбрали глобальные, а не локальные таймстемпы.

Рассмотрим за и против: с одной стороны, с MVCC мы можем достаточно дешево реализовать консистентные снапшоты уровня базы во всех запросах, достигать большего параллелизма за счет большего реордеринга транзакций. С другой стороны, на хранение истории требуется дополнительное место.

В итоге — у нас довольно уникальная ситуация, в которой мы можем сравнить поведение распределенной базы с MVCC и без MVCC под различными нагрузками.

Руководитель Yandex Database. Руководит отделом разработки систем хранения и обработки данных, в который входит команда Yandex Database. Отвечает за слой хранения данных в Yandex.Cloud. До этого занимался веб-роботом Поиска, задачами управления данными в департаменте инфраструктуры.

Яндекс

Видео