SlideShare a Scribd company logo
ночью через лес: stress-
test пяти almost-the-
same-functionality
shared-nothing-cluster
NoSQL СУБД
Здравствуйте,
меня зовут Даниил,
я системно администирую уже 20 лет и у
меня проблема
откуда вообще взялась эта идея
1. Данные надо где-то хранить
2. РСУБД работают хорошо.
1. Пока нам не нужна репликация
2. И шардинг
3. Распределенные СУБД
1. Они нам нравятся
1. Потому что мы ленивые
2. Но работают они как-то странно
1. особенно когда нам по-настоящему надо, чтобы они
работали хорошо
3. и нельзя сказать, что нас не предупредили
Чего мы собственно хотим
● У нас есть чтения и записи
● Чтения должны происходить надежно
● Данные должны храниться надежно
● Объем хранилища должен наращиваться
горизонтально
● все это должно быть ДЕШЕВО
Методика тестирования
1. создаем кластер из 5 нод
2. заливаем с максимально возможной скоростью записи в базу
3. запускаем процесс случайного чтения
a. с того же сервера запускаем писателя
4. имитируем сбой одной из нод
5. наблюдаем за поведением кластера, читателей и писателей
6. из ранее удаленной ноды создаем новую и возвращаем ее в кластер
7. наблюдаем за поведением кластера, читателей и писателей до полного восстановления
кластера
8. добавляем в кластер еще одну ноду
9. наблюдаем за поведением кластера, читателей и писателей
10. Узнать мы хотим о сюрпризах, которые готовит нам эксплуатация продукта в
экстремальных условиях
a. а все остальное нас интересует постольку-поскольку
b. некоторые кандидаты закончили тестирование на этапе чтения документации
Отбор кандидатов
● Источник вдохновения: http://nosql-database.org/
● aerospike
● cassandra
● crate.io
● elasticsearch
● orientdb
● rethinkdb
● где RIAK?!
● Но обзор будет анонимным
Тестовая среда
● 5-6 машин для кластера
o RAID0, кеширование записи
● Выделенная машина для клиента записи-чтения
● Выделенная машина для Grafana
● Выделенная гигабитная сеть - и, забегая вперед,
сеть должна бы быть получше
● docker как метод деплоя
Продукт A
Продукт A
● Поначалу все хорошо
● Потом все похуже
● А вот мы выключили ноду - и где же все?!
● А вот кластер проснулся
Продукт B
оказался надстройкой над продуктом A в
смысле технологий репликации и шардинга
Продукт C
● Выглядит многообещающе
● “Думайте обо мне как о массиве дисков”
● Но как делать ребалансинг?!
● И куда попадают новые ноды?!!
Продукт D
Продукт D
● Поначалу все хорошо
● И потом все хорошо
● А вот мы выключили ноду. Пришлось перезапустить
чтение.
● А вот мы вернули ноду в строй
● А вот мы добавили шестую машину
● Похоже, это идеальный кандидат
o но при дефолтных настройках ребалансинг очень
медленный
Продукт Е
Продукт Е
Продукт Е
● Поначалу все хорошо
● И потом все хорошо
o Но к концу появляются ошибки записи. Их мало, они не видны на
графике
● Вот мы выключили ноду - все, вроде, хорошо
● А вот мы ее включили. Откуда эти ошибки чтения?!
o Прежде, чем включать ноду на том же IP - надо поприседать
вокруг конфигов
o И вообще - ребалансинг представляет собой нетривиальную
задачу
Продукт F
Продукт F
● Какой хороший GUI!
● И поначалу все хорошо
● А потом похуже
● А почему все данные в одном шарде?!
o Ну давайте попробуем использовать SHA1 в качестве primary key
● Стало лучше - теперь данные распределены по двум шардам. Из
пяти…
● Картинки не будет - как только я собрался ее снять, кластер упал
● Совсем упал - запустить его опять не удалось за приемлемлемое
время
Деанонимизация
A - ElasticSearch
B - Crate.IO
C - Aerospike
D - OrientDB
E - Cassandra
F - RethinkDB
Выводы
● Как страшно жить
● Будем делать на Aerospike

More Related Content

PDF
Как работать быстрее и не отвлекаться
PDF
Benchmarking PostgreSQL in Linux and FreeBSD
PDF
Про бэкапы (не энтерпрайз!)
PPTX
Why we did not choose Hadoop
PDF
Екатерина Войденко "Горизонтальное масштабирование MySQL"
PDF
Роман Андриади — Деплой
PPTX
Async Javascript
PPTX
Кунг -фу тестировщика. Или как тестируются игры
Как работать быстрее и не отвлекаться
Benchmarking PostgreSQL in Linux and FreeBSD
Про бэкапы (не энтерпрайз!)
Why we did not choose Hadoop
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Роман Андриади — Деплой
Async Javascript
Кунг -фу тестировщика. Или как тестируются игры

Viewers also liked (20)

PPTX
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
PPTX
Go и fuse
PPTX
опыт построения и эксплуатации большого файлового хранилища
PPTX
Спасение 6 миллионов файлов в условиях полного Хецнера
PDF
PDF
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
PPTX
Mysql vs postgresql
PDF
RTB DSP на языке Go: укрощение buzzwords
PDF
NoSQL — неспроста ли это "ЖЖЖ"?
PDF
Tk conf daniel-podolsky-sqlvsnosql
PDF
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
PDF
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PPTX
Паттерны проектирования источников данных
PDF
Паттерны и примеры структур данных в NoSQL на примере Tarantool
PDF
Harry Potter and the Daemons of Berkeley
PDF
My talk at CEE-SECR 2016
PDF
My talk at LVEE 2016
PDF
My talk at YouCon Saratov 2016
PDF
My talk on HBase ops engineering at TBD Jun 2016
PDF
My talk at Linux Piter 2015
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Go и fuse
опыт построения и эксплуатации большого файлового хранилища
Спасение 6 миллионов файлов в условиях полного Хецнера
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Mysql vs postgresql
RTB DSP на языке Go: укрощение buzzwords
NoSQL — неспроста ли это "ЖЖЖ"?
Tk conf daniel-podolsky-sqlvsnosql
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Паттерны проектирования источников данных
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Harry Potter and the Daemons of Berkeley
My talk at CEE-SECR 2016
My talk at LVEE 2016
My talk at YouCon Saratov 2016
My talk on HBase ops engineering at TBD Jun 2016
My talk at Linux Piter 2015
Ad

Similar to ночью через лес Stress-test пяти almost-the-same-functionality shared-nothing-cluster no sql субд (10)

PPTX
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
PPTX
Какой у вас Agile: свежевыжатый или порошковый?
PDF
А какой у вас Agile: свежевыжатый или порошковый?
PDF
2013 09 14 деплой
PPTX
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
PDF
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PDF
Python и высокая нагрузка
PDF
Kranonit s16 (python). sergey burma
PPT
WepPerfomance,
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Какой у вас Agile: свежевыжатый или порошковый?
А какой у вас Agile: свежевыжатый или порошковый?
2013 09 14 деплой
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
Python и высокая нагрузка
Kranonit s16 (python). sergey burma
WepPerfomance,
Ad

ночью через лес Stress-test пяти almost-the-same-functionality shared-nothing-cluster no sql субд

  • 1. ночью через лес: stress- test пяти almost-the- same-functionality shared-nothing-cluster NoSQL СУБД
  • 2. Здравствуйте, меня зовут Даниил, я системно администирую уже 20 лет и у меня проблема
  • 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 как метод деплоя
  • 9. Продукт A ● Поначалу все хорошо ● Потом все похуже ● А вот мы выключили ноду - и где же все?! ● А вот кластер проснулся
  • 10. Продукт B оказался надстройкой над продуктом A в смысле технологий репликации и шардинга
  • 11. Продукт C ● Выглядит многообещающе ● “Думайте обо мне как о массиве дисков” ● Но как делать ребалансинг?! ● И куда попадают новые ноды?!!
  • 13. Продукт D ● Поначалу все хорошо ● И потом все хорошо ● А вот мы выключили ноду. Пришлось перезапустить чтение. ● А вот мы вернули ноду в строй ● А вот мы добавили шестую машину ● Похоже, это идеальный кандидат o но при дефолтных настройках ребалансинг очень медленный
  • 16. Продукт Е ● Поначалу все хорошо ● И потом все хорошо o Но к концу появляются ошибки записи. Их мало, они не видны на графике ● Вот мы выключили ноду - все, вроде, хорошо ● А вот мы ее включили. Откуда эти ошибки чтения?! o Прежде, чем включать ноду на том же IP - надо поприседать вокруг конфигов o И вообще - ребалансинг представляет собой нетривиальную задачу
  • 18. Продукт F ● Какой хороший GUI! ● И поначалу все хорошо ● А потом похуже ● А почему все данные в одном шарде?! o Ну давайте попробуем использовать SHA1 в качестве primary key ● Стало лучше - теперь данные распределены по двум шардам. Из пяти… ● Картинки не будет - как только я собрался ее снять, кластер упал ● Совсем упал - запустить его опять не удалось за приемлемлемое время
  • 19. Деанонимизация A - ElasticSearch B - Crate.IO C - Aerospike D - OrientDB E - Cassandra F - RethinkDB
  • 20. Выводы ● Как страшно жить ● Будем делать на Aerospike