1. "Mia! MIA! What the hell happened?", или что случается с производительностью вашей РСУБД, когда ее индексы перестают помещаться в память
2. "Why the fuck didn't you tell us about that guy in the bathroom?", или почему мы гадим под себя, когда речь заходит о шардинге РСУБД
3. "Now the night of the fight, you may fell a slight sting, that's pride fuckin' wit ya. Fuck pride! ", или почему shared nothing
4. "And that's what we're gonna be, we're gonna be cool.", или с какими проблемами сталкиваются люди, которые собрались эксплуатировать shared-nothing cluster
5. "Mind if I try one of yours?", или наша методика тестирования
6. “The truth. Three well-dressed, slightly toasted, Mexicans.”, или отбор кандидатов на тестирование
7. "So you're gonna go out there, drink your drink, say "Goodnight, I've had a very lovely evening," go home, and jack off.", или краткий отчет о безумной неделе
8. "This sensual thing's goin' on that nobody's talkin about, but you know it and she knows it, fuckin' Marsellus knew it, and Antwan shoulda known fuckin' better.", или выводы
3. откуда вообще взялась эта идея
1. Данные надо где-то хранить
2. РСУБД работают хорошо.
1. Пока нам не нужна репликация
2. И шардинг
3. Распределенные СУБД
1. Они нам нравятся
1. Потому что мы ленивые
2. Но работают они как-то странно
1. особенно когда нам по-настоящему надо, чтобы они
работали хорошо
3. и нельзя сказать, что нас не предупредили
4. Чего мы собственно хотим
● У нас есть чтения и записи
● Чтения должны происходить надежно
● Данные должны храниться надежно
● Объем хранилища должен наращиваться
горизонтально
● все это должно быть ДЕШЕВО
5. Методика тестирования
1. создаем кластер из 5 нод
2. заливаем с максимально возможной скоростью записи в базу
3. запускаем процесс случайного чтения
a. с того же сервера запускаем писателя
4. имитируем сбой одной из нод
5. наблюдаем за поведением кластера, читателей и писателей
6. из ранее удаленной ноды создаем новую и возвращаем ее в кластер
7. наблюдаем за поведением кластера, читателей и писателей до полного восстановления
кластера
8. добавляем в кластер еще одну ноду
9. наблюдаем за поведением кластера, читателей и писателей
10. Узнать мы хотим о сюрпризах, которые готовит нам эксплуатация продукта в
экстремальных условиях
a. а все остальное нас интересует постольку-поскольку
b. некоторые кандидаты закончили тестирование на этапе чтения документации
6. Отбор кандидатов
● Источник вдохновения: http://nosql-database.org/
● aerospike
● cassandra
● crate.io
● elasticsearch
● orientdb
● rethinkdb
● где RIAK?!
● Но обзор будет анонимным
7. Тестовая среда
● 5-6 машин для кластера
o RAID0, кеширование записи
● Выделенная машина для клиента записи-чтения
● Выделенная машина для Grafana
● Выделенная гигабитная сеть - и, забегая вперед,
сеть должна бы быть получше
● docker как метод деплоя
13. Продукт D
● Поначалу все хорошо
● И потом все хорошо
● А вот мы выключили ноду. Пришлось перезапустить
чтение.
● А вот мы вернули ноду в строй
● А вот мы добавили шестую машину
● Похоже, это идеальный кандидат
o но при дефолтных настройках ребалансинг очень
медленный
16. Продукт Е
● Поначалу все хорошо
● И потом все хорошо
o Но к концу появляются ошибки записи. Их мало, они не видны на
графике
● Вот мы выключили ноду - все, вроде, хорошо
● А вот мы ее включили. Откуда эти ошибки чтения?!
o Прежде, чем включать ноду на том же IP - надо поприседать
вокруг конфигов
o И вообще - ребалансинг представляет собой нетривиальную
задачу
18. Продукт F
● Какой хороший GUI!
● И поначалу все хорошо
● А потом похуже
● А почему все данные в одном шарде?!
o Ну давайте попробуем использовать SHA1 в качестве primary key
● Стало лучше - теперь данные распределены по двум шардам. Из
пяти…
● Картинки не будет - как только я собрался ее снять, кластер упал
● Совсем упал - запустить его опять не удалось за приемлемлемое
время