Больше чем одно ядро: как Tarantool стал многопоточным

Базы данных и системы хранения

Tarantool
Масштабирование с нуля
Обработка данных

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Разработчики и архитекторы СУБД, пользователи Tarantool.

Тезисы

Масштабируемость является одним из важнейших аспектов любой современной СУБД, причём пользователи ожидают от СУБД как возможности масштабироваться вертикально, в рамках одной машины, так и горизонтально, на кластере.

Исторически, проект Tarantool позиционировался как сервер приложений с СУБД на борту, способный "выжать" максимум из одного ядра процессора, а для масштабируемости, в том числе на одной машине, предлагалось использовать шардирование — подход, который обычно ассоциируется с горизонтальным масштабированием. Такое решение позволило избежать классических проблем производительности, возникающих при вертикальном масштабировании, таких как lock convoy и false sharing, но в то же время ограничило сферы применения и усложнило конфигурацию приложений на базе Tarantool.

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

Впервые познакомился с внутренним устройством современных СУБД в 2016 году, когда устроился на работу разработчиком в команду Tarantool. С тех пор удалось поучаствовать в развитии практически всех подсистем этого проекта, начиная с дискового движка хранения данных и заканчивая репликацией и шардированием.

Видео

Другие доклады секции

Базы данных и системы хранения