SlideShare a Scribd company logo
1 of 56
Download to read offline
Обзор перспективных
СУБД для highload
Юрий Насретдинов
План
• Обо мне
• Подход к выбору технологий
• Tarantool
• ClickHouse
• CockroachDB
• Заключение
Обо мне
• Зовут Юрий, в честь дедушки
• Написал свою СУБД на PHP
• Работал в Badoo ~5 лет в отделе «платформы»
• 10 лет опыта программирования на PHP
• Сейчас разрабатываю на Go
Зачем этот доклад?
• Индустрия IT быстро развивается
• Highload — тем более
• Через 10 лет ваши сегодняшние знания и
навыки безнадежно устареют
Подход к выбору технологий
1. Архитектуру
2. Не только сильные, но и слабые места
3. Как «это» мониторить и бэкапить
4. Что делать, когда это всё «упадет»
Перед запуском системы в продакшен вы должны понимать:
Подход к выбору технологий
1. Разработано и протестировано в большой компании
2. Вы знакомы с разработчиками
3. У разработчиков уже есть похожие успешные проекты
4. В документации упоминается внутреннее устройство и оно
вам понятно
Хорошими ориентирами являются:
Примеры успешных технологий в прошлом
• MySQL (MyISAM)
• MongoDB (MMAP)
• Memcached
• FreeBSD 4
Примеры успешных технологий в прошлом
• Простота и понятность архитектуры
• Работает сразу, минимум настроек
• Надежность (не «падает» на ровном месте)
• Понятные tradeoffs
Примеры успешных технологий в прошлом
• MySQL (MyISAM)
• MongoDB (MMAP)
• Memcached
• FreeBSD 4
скорость, простота потеря данных
скорость, простота
скорость, простота, эффективность
простота, надежность, стабильность
потеря данных
Tarantool: предпосылки
web1 web2 webN• • •
mysql1 mysql2 mysqlN• • •
1-1000 1001-2000 X-(X+999)
sign in for nasretdinov@gmail.com where to go?
Tarantool: предпосылки
web1 web2 webN• • •
mysql1 mysql2 mysqlN• • •
1-1000 1001-2000 X-(X+999)
sign in for +7 (910) 123-34-45 where to go?
Tarantool: предпосылки
mysql1 mysql2 mysqlN• • •
1-1000 1000-2000 X-(X+1000)
sign in for nasretdinov@gmail.com where to go?
central «authorizer» database
Tarantool: предпосылки
Как обновлять?
Как реплицировать?
Как рестартовать?Как добавить новые индексы?
Возможные решения
• Форк memcached — сложная поддержка, только в памяти
• MySQL — тяжеловесный, но есть HandlerSocket
• Redis — не поддерживает индексы
• Oracle — …
• Zookeeper — нет программируемой логики
Tarantool
• In-memory
• Быстрый — до 1М RPS на ядро CPU
• Конвейерная архитектура
• Написан и отлажен в mail.ru
• Константин Осипов ранее разрабатывал MySQL
• Хорошая модель персистентности — snapshots + log
Tarantool: архитектура
client1
client2
clientN
client3
•••
I/O Execution WAL
threads:
Tarantool: snapshots pre1.6.7
Parent Child
shared
private
shared
private CoW
fork
snapshot file
Tarantool: snapshots pre1.6.7
• Fork занимает ~10мс на 1Гб RSS
• Копирование при записи делается блоками по 4 Кб
• Общая память не помечается как CoW
• Небольшая пауза при создании snapshot
Tarantool: snapshots 1.6.7+
• User-space memory address translation (matras)
Tarantool: сценарии использования
• Очень много клиентов
• Много мелкого чтения и записи
• Необходимость в централизованном хранилище с индексами
• Желание иметь часть логики в базе
• Пример: сессии пользователей, «authorizer», счетчики
посещений
Tarantool: когда не использовать
• Если нужны: SQL, автоматический шардинг и failover,
Raft / Paxos, длинные транзакции
• Мало клиентов и требование минимальной latency
• Рабочий набор не влезает в память
• Аналитика (см. далее)
ClickHouse: предпосылки
• Эффективная и линейно масштабируемая
• В реалтайме
• Бесплатная и open-source
• ^ выберите любые два
Аналитика для веб-сайтов и приложений:
Возможные решения
• MySQL (MyISAM) — быстрая запись, медленное чтение
• Vertica, Exasol — платно
• Hadoop — не realtime, сложно настраивать и поддерживать
Аналитика для веб-сайтов и приложений:
Возможные решения
• MySQL (MyISAM) — быстрая запись, медленное чтение
• Vertica, Exasol — платно
• Hadoop — не realtime, сложно настраивать и поддерживать
Аналитика для веб-сайтов и приложений:
выбор Яндекса
ClickHouse
• Распределенная СУБД для аналитики
• Колоночное хранение
• Оптимизирована для HDD
• Исключительно быстрая
• Протестирована в продакшене Яндекса
ClickHouse: внутреннее устройство
FlightDate Month Carrier Origin Dest
• • •
Div5TailNumYear
Partition 2017-06
ClickHouse: «засечки»
FlightDateYear
<2017,05-01>
<2017,05-03>
<2017,05-05>
<2017,05-10>
<2017,05-15>
<2017,05-21>
<2017,05-24>
<2017,05-28>
<2017,05-30>
SELECT count()
FROM flights
WHERE year = 2017
AND FlightDate
BETWEEN ’05-11’ AND ’05-16’
Primary Key
ClickHouse: MergeTree
FlightDate Month Carrier Origin Dest
• • •
Div5TailNumYear
Temp Partition 2017-06 #1
Temp Partition 2017-06 #2
}FlightDate Month Carrier Origin Dest
• • •
Div5TailNumYear
FlightDate Month Carrier Origin Dest
• • •
Div5TailNumYear
Temp Partition 2017-06 #3
ClickHouse: возможности
• SQL, ограниченные JOIN’ы
• Репликация и работа в кластере (требуется ZooKeeper)
• 17* алгоритмов выполнения GROUP BY
• MATERIALIZED VIEWS, GLOBAL JOINs
• Выборки с сэмплированием
* наверняка их уже больше
ClickHouse: ограничения
• Только INSERT, нет UPDATE или DELETE
• JOIN’ы только для таблиц, которые влезают в память
• Полуручное управление кластером
• Нет полноценных транзакций, только атомарный INSERT
ClickHouse: сценарии использования
• Задачи realtime аналитики
• Time-series (https://github.com/yandex/graphouse)
• Хранение сырых событий — показы, клики, etc.
• Логи
• Результаты тестов
ClickHouse: когда не использовать
• OLTP-задачи
• Работа с деньгами
• Хранение только агрегатов
• Map / Reduce задачи
• Полнотекстовый поиск
CockroachDB: предпосылки
web1 web2 webN• • •
mysql1 mysql2 mysqlN• • •
sign in for nasretdinov@gmail.com where to go?
1-1000 1000-2000 X-(X+1000)
CockroachDB: предпосылки
web1 web2 webN• • •
mysql1 mysql2 mysqlN• • •
1-1000 1000-2000 X-(X+1000)
sign in for +7 (910) 123-34-45 where to go?
CockroachDB: предпосылки
CREATE TABLE users (
id INT,
email VARCHAR(200),
phone VARCHAR(30),
...,
PRIMARY KEY (id),
UNIQUE INDEX (email),
UNIQUE INDEX (phone)
)
CockroachDB: предпосылки
SELECT * FROM users
WHERE email = ‘nasretdinov@gmail.com’
SELECT * FROM users
WHERE phone = ‘+7 (910) 123-34-45’
Возможные решения
• Google Cloud Spanner
• Authorizer + ручной шардинг
• MongoDB, Cassandra — не поддерживают распределенные
уникальные индексы
• Cвой вариант?
CockroachDB
• Изначально — распределенный Key-Value Storage
• Production Ready (шутка) — 10 Мая вышла версия 1.0
• SQL, JOINs
• Транзакции, ACID
• Уникальные индексы
• Автоматический шардинг и балансировка нагрузки
CockroachDB
• Создан авторами Google Spanner
• Есть community и enterprise версии
• Написан на Go
• Использует (Multi)Raft и RocksDB
• Прошел тестирование Jepsen
• Используется в Baidu на продакшене
CockroachDB: SQL to KV
CREATE TABLE test (
key INT PRIMARY KEY,
floatVal FLOAT,
stringVal STRING
)
INSERT INTO test
VALUES (10, 4.5, "hello")
key value
/test/10/floatVal 4.5
/test/10/stringVal "hello"
https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping-
table-data-to-key-value-storage/
CockroachDB: SQL to KV
CREATE INDEX foo ON
test (stringVal)
key value
/test/primary/10 Ø
/test/primary/10/floatVal 4.5
/test/primary/10/stringVal "hello"
/test/foo/"hello"/10 Ø
https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping-
table-data-to-key-value-storage/
CockroachDB: внутреннее устройство
a - j
k - n
o - t
a - j
k - n
u - z
u - z
o - t
k - n
a - j
u - z
o - t
roach1 roach2 roach3 roach4
{64 Мб
CockroachDB: внутреннее устройство
a - j
k - n
o - q | r - t
a - j
k - n
u - z
u - z
o - q | r - t
k - n
a - j
u - z
o - q | r - t
roach1 roach2 roach3 roach4
CockroachDB: внутреннее устройство
a - j
k - n
o - q
r - t
a - j
k - n
u - z
u - z
o - q
k - n
r - t
a - j
u - z
o - q
r - t
roach1 roach2 roach3 roach4
CockroachDB: внутреннее устройство
a - j
k - n
o - q
r - t
a - j
k - n
u - z
u - z
o - q
k - n
r - t
a - j
u - z
o - q
r - t
roach1 roach2 roach3 roach4
CockroachDB: распределенные транзакции
• Есть системная таблица со списком транзакций
• К каждому затронутому в транзакции ключу добавляется
рядом ключ с номером транзакции, в которой он изменялся
• При чтении такого ключа нужно посмотреть в списке
транзакций — закоммичена она или нет
• При успешном коммите значения заменяются на конечные
• Сборщик мусора чистит неудавшиеся транзакции
CockroachDB: сценарии использования
• Хранение пользовательских данных в кластере вместо
MySQL / PostgreSQL / MongoDB
CockroachDB: когда не использовать
• Требуется низкая latency
• Требуется высокий QPS
• Не нужна строгая консистентность
• Не нужны распределенные транзакции
• Нужны сложные хранимки, JOIN’ы, представления, триггеры
Tarantool (memtx)
• extreme RPS
• eventual consistency
• single-core
• in-memory
• manual sharding
ClickHouse
• auto parallelize
• HDD-optimized
• extreme throughput (scan 10^9 rows/sec per node)
• in-memory, limited joins
• no transactions, update/delete/replace
• semi-automatic cluster management
CockroachDB
• linear auto scaling
• ACID, distributed transactions
• supports standard SQL
• 1.0 just released
• limited joins
• poor performance (~ 1k RPS per node)
Заключение
• Теперь вы узнали про 3 новые базы данных и про то, где их
применять
• Думайте своей головой перед тем, как применять их в
продакшене
Вопросы
Юрий Насретдинов
nasretdinov@gmail.com

More Related Content

What's hot

История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Ontico
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupMail.ru Group
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
 

What's hot (20)

История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
 

Similar to Обзор перспективных баз данных для highload / Юрий Насретдинов

Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Cisco Russia
 
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxКорпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxSkillFactory
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorJetBrains Russia
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)Pavel Alexeev
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Ontico
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 

Similar to Обзор перспективных баз данных для highload / Юрий Насретдинов (20)

Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Sivko
SivkoSivko
Sivko
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?
 
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxКорпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System Administrator
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)High load++2016.highlights (dropbox+clickhouse)
High load++2016.highlights (dropbox+clickhouse)
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Обзор перспективных баз данных для highload / Юрий Насретдинов

  • 1. Обзор перспективных СУБД для highload Юрий Насретдинов
  • 2. План • Обо мне • Подход к выбору технологий • Tarantool • ClickHouse • CockroachDB • Заключение
  • 3. Обо мне • Зовут Юрий, в честь дедушки • Написал свою СУБД на PHP • Работал в Badoo ~5 лет в отделе «платформы» • 10 лет опыта программирования на PHP • Сейчас разрабатываю на Go
  • 4. Зачем этот доклад? • Индустрия IT быстро развивается • Highload — тем более • Через 10 лет ваши сегодняшние знания и навыки безнадежно устареют
  • 5. Подход к выбору технологий 1. Архитектуру 2. Не только сильные, но и слабые места 3. Как «это» мониторить и бэкапить 4. Что делать, когда это всё «упадет» Перед запуском системы в продакшен вы должны понимать:
  • 6. Подход к выбору технологий 1. Разработано и протестировано в большой компании 2. Вы знакомы с разработчиками 3. У разработчиков уже есть похожие успешные проекты 4. В документации упоминается внутреннее устройство и оно вам понятно Хорошими ориентирами являются:
  • 7. Примеры успешных технологий в прошлом • MySQL (MyISAM) • MongoDB (MMAP) • Memcached • FreeBSD 4
  • 8. Примеры успешных технологий в прошлом • Простота и понятность архитектуры • Работает сразу, минимум настроек • Надежность (не «падает» на ровном месте) • Понятные tradeoffs
  • 9. Примеры успешных технологий в прошлом • MySQL (MyISAM) • MongoDB (MMAP) • Memcached • FreeBSD 4 скорость, простота потеря данных скорость, простота скорость, простота, эффективность простота, надежность, стабильность потеря данных
  • 10.
  • 11. Tarantool: предпосылки web1 web2 webN• • • mysql1 mysql2 mysqlN• • • 1-1000 1001-2000 X-(X+999) sign in for nasretdinov@gmail.com where to go?
  • 12. Tarantool: предпосылки web1 web2 webN• • • mysql1 mysql2 mysqlN• • • 1-1000 1001-2000 X-(X+999) sign in for +7 (910) 123-34-45 where to go?
  • 13. Tarantool: предпосылки mysql1 mysql2 mysqlN• • • 1-1000 1000-2000 X-(X+1000) sign in for nasretdinov@gmail.com where to go? central «authorizer» database
  • 14. Tarantool: предпосылки Как обновлять? Как реплицировать? Как рестартовать?Как добавить новые индексы?
  • 15. Возможные решения • Форк memcached — сложная поддержка, только в памяти • MySQL — тяжеловесный, но есть HandlerSocket • Redis — не поддерживает индексы • Oracle — … • Zookeeper — нет программируемой логики
  • 16. Tarantool • In-memory • Быстрый — до 1М RPS на ядро CPU • Конвейерная архитектура • Написан и отлажен в mail.ru • Константин Осипов ранее разрабатывал MySQL • Хорошая модель персистентности — snapshots + log
  • 18. Tarantool: snapshots pre1.6.7 Parent Child shared private shared private CoW fork snapshot file
  • 19. Tarantool: snapshots pre1.6.7 • Fork занимает ~10мс на 1Гб RSS • Копирование при записи делается блоками по 4 Кб • Общая память не помечается как CoW • Небольшая пауза при создании snapshot
  • 20. Tarantool: snapshots 1.6.7+ • User-space memory address translation (matras)
  • 21. Tarantool: сценарии использования • Очень много клиентов • Много мелкого чтения и записи • Необходимость в централизованном хранилище с индексами • Желание иметь часть логики в базе • Пример: сессии пользователей, «authorizer», счетчики посещений
  • 22. Tarantool: когда не использовать • Если нужны: SQL, автоматический шардинг и failover, Raft / Paxos, длинные транзакции • Мало клиентов и требование минимальной latency • Рабочий набор не влезает в память • Аналитика (см. далее)
  • 23.
  • 24. ClickHouse: предпосылки • Эффективная и линейно масштабируемая • В реалтайме • Бесплатная и open-source • ^ выберите любые два Аналитика для веб-сайтов и приложений:
  • 25. Возможные решения • MySQL (MyISAM) — быстрая запись, медленное чтение • Vertica, Exasol — платно • Hadoop — не realtime, сложно настраивать и поддерживать Аналитика для веб-сайтов и приложений:
  • 26. Возможные решения • MySQL (MyISAM) — быстрая запись, медленное чтение • Vertica, Exasol — платно • Hadoop — не realtime, сложно настраивать и поддерживать Аналитика для веб-сайтов и приложений: выбор Яндекса
  • 27. ClickHouse • Распределенная СУБД для аналитики • Колоночное хранение • Оптимизирована для HDD • Исключительно быстрая • Протестирована в продакшене Яндекса
  • 28. ClickHouse: внутреннее устройство FlightDate Month Carrier Origin Dest • • • Div5TailNumYear Partition 2017-06
  • 30. ClickHouse: MergeTree FlightDate Month Carrier Origin Dest • • • Div5TailNumYear Temp Partition 2017-06 #1 Temp Partition 2017-06 #2 }FlightDate Month Carrier Origin Dest • • • Div5TailNumYear FlightDate Month Carrier Origin Dest • • • Div5TailNumYear Temp Partition 2017-06 #3
  • 31. ClickHouse: возможности • SQL, ограниченные JOIN’ы • Репликация и работа в кластере (требуется ZooKeeper) • 17* алгоритмов выполнения GROUP BY • MATERIALIZED VIEWS, GLOBAL JOINs • Выборки с сэмплированием * наверняка их уже больше
  • 32. ClickHouse: ограничения • Только INSERT, нет UPDATE или DELETE • JOIN’ы только для таблиц, которые влезают в память • Полуручное управление кластером • Нет полноценных транзакций, только атомарный INSERT
  • 33. ClickHouse: сценарии использования • Задачи realtime аналитики • Time-series (https://github.com/yandex/graphouse) • Хранение сырых событий — показы, клики, etc. • Логи • Результаты тестов
  • 34. ClickHouse: когда не использовать • OLTP-задачи • Работа с деньгами • Хранение только агрегатов • Map / Reduce задачи • Полнотекстовый поиск
  • 35.
  • 36. CockroachDB: предпосылки web1 web2 webN• • • mysql1 mysql2 mysqlN• • • sign in for nasretdinov@gmail.com where to go? 1-1000 1000-2000 X-(X+1000)
  • 37. CockroachDB: предпосылки web1 web2 webN• • • mysql1 mysql2 mysqlN• • • 1-1000 1000-2000 X-(X+1000) sign in for +7 (910) 123-34-45 where to go?
  • 38. CockroachDB: предпосылки CREATE TABLE users ( id INT, email VARCHAR(200), phone VARCHAR(30), ..., PRIMARY KEY (id), UNIQUE INDEX (email), UNIQUE INDEX (phone) )
  • 39. CockroachDB: предпосылки SELECT * FROM users WHERE email = ‘nasretdinov@gmail.com’ SELECT * FROM users WHERE phone = ‘+7 (910) 123-34-45’
  • 40. Возможные решения • Google Cloud Spanner • Authorizer + ручной шардинг • MongoDB, Cassandra — не поддерживают распределенные уникальные индексы • Cвой вариант?
  • 41. CockroachDB • Изначально — распределенный Key-Value Storage • Production Ready (шутка) — 10 Мая вышла версия 1.0 • SQL, JOINs • Транзакции, ACID • Уникальные индексы • Автоматический шардинг и балансировка нагрузки
  • 42. CockroachDB • Создан авторами Google Spanner • Есть community и enterprise версии • Написан на Go • Использует (Multi)Raft и RocksDB • Прошел тестирование Jepsen • Используется в Baidu на продакшене
  • 43. CockroachDB: SQL to KV CREATE TABLE test ( key INT PRIMARY KEY, floatVal FLOAT, stringVal STRING ) INSERT INTO test VALUES (10, 4.5, "hello") key value /test/10/floatVal 4.5 /test/10/stringVal "hello" https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping- table-data-to-key-value-storage/
  • 44. CockroachDB: SQL to KV CREATE INDEX foo ON test (stringVal) key value /test/primary/10 Ø /test/primary/10/floatVal 4.5 /test/primary/10/stringVal "hello" /test/foo/"hello"/10 Ø https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping- table-data-to-key-value-storage/
  • 45. CockroachDB: внутреннее устройство a - j k - n o - t a - j k - n u - z u - z o - t k - n a - j u - z o - t roach1 roach2 roach3 roach4 {64 Мб
  • 46. CockroachDB: внутреннее устройство a - j k - n o - q | r - t a - j k - n u - z u - z o - q | r - t k - n a - j u - z o - q | r - t roach1 roach2 roach3 roach4
  • 47. CockroachDB: внутреннее устройство a - j k - n o - q r - t a - j k - n u - z u - z o - q k - n r - t a - j u - z o - q r - t roach1 roach2 roach3 roach4
  • 48. CockroachDB: внутреннее устройство a - j k - n o - q r - t a - j k - n u - z u - z o - q k - n r - t a - j u - z o - q r - t roach1 roach2 roach3 roach4
  • 49. CockroachDB: распределенные транзакции • Есть системная таблица со списком транзакций • К каждому затронутому в транзакции ключу добавляется рядом ключ с номером транзакции, в которой он изменялся • При чтении такого ключа нужно посмотреть в списке транзакций — закоммичена она или нет • При успешном коммите значения заменяются на конечные • Сборщик мусора чистит неудавшиеся транзакции
  • 50. CockroachDB: сценарии использования • Хранение пользовательских данных в кластере вместо MySQL / PostgreSQL / MongoDB
  • 51. CockroachDB: когда не использовать • Требуется низкая latency • Требуется высокий QPS • Не нужна строгая консистентность • Не нужны распределенные транзакции • Нужны сложные хранимки, JOIN’ы, представления, триггеры
  • 52. Tarantool (memtx) • extreme RPS • eventual consistency • single-core • in-memory • manual sharding
  • 53. ClickHouse • auto parallelize • HDD-optimized • extreme throughput (scan 10^9 rows/sec per node) • in-memory, limited joins • no transactions, update/delete/replace • semi-automatic cluster management
  • 54. CockroachDB • linear auto scaling • ACID, distributed transactions • supports standard SQL • 1.0 just released • limited joins • poor performance (~ 1k RPS per node)
  • 55. Заключение • Теперь вы узнали про 3 новые базы данных и про то, где их применять • Думайте своей головой перед тем, как применять их в продакшене