Обзор перспективных баз данных для highloadБазы данных
Работает в отделе «платформы» в компании VK.com (ВКонтакте). Занимается развитием backend-инфраструктуры проекта: рефакторингом кода, деплоем, сбором логов и т.д.
До этого работал в нескольких местах, больше всего в Badoo (5 лет) и тоже в отделе «платформы».
Сделал несколько open-source проектов — lsd (замена scribe от фейсбука), soft mocks (реализация API, совместимого с runkit, на чистом PHP) и phpcf (форматтер кода для PHP).
В этом докладе я рассмотрю несколько перспективных, на мой взгляд, баз данных, которые пока еще не очень популярны, но которые определенно ждет успех в будущем, особенно для highload-проектов. Я расскажу о Tarantool, ClickHouse и CockroachDB, о том, как они устроены, и почему я считаю, что они в будущем станут стандартом де-факто, как раньше был MySQL, а сейчас — MongoDB.
Коротко о каждой из них:
1. Tarantool — разработка mail.ru, позволяющая обрабатывать до 1 млн транзакций в секунду на одном ядре процессора за счет «конвейерной» архитектуры. В данный момент SQL не поддерживается, но можно писать хранимые процедуры на LuaJIT, что позволяет делать сложные выборки и преобразования, не жертвуя производительностью.
2. ClickHouse — это real-time аналитическая база данных от Яндекса с поколоночным хранением данных и невероятной производительностью работы. Основной язык запросов — SQL. Авторами заявляется скорость вставки на уровне 100 мб/сек и скорость сканирования в 1 млрд строк в секунду. Также поддерживается работа в кластере с репликацией и шардированием, приближённые выборки по части данных, ограниченные джойны и многое другое.
3. CockroachDB — база данных от создателей Google Spanner. Авто-масштабируемая распределенная SQL-база данных, написанная на Go и использующая RocksDB для хранения данных на диске. Если вы устали от необходимости ручного шардирования и отсутствия распределенных транзакций в SQL-базах данных и от неконсистентности и неуправляемости NoSQL-решений, то CockroachDB нацелен именно на вас. База данных сама масштабируется на выделенные узлы, сама поддерживает заданный фактор репликации, может работать в нескольких ДЦ, и многое другое.
В докладе я подробно расскажу об этих решениях и о существующих в данный момент альтернативах, с обзором достоинств и недостатков соответствующих систем.