172 похожих чатов

Всем привет! Нас, разработчиков, многие инструменты сопровождают очень долгое время: компиляторы

(gcc вышел в 1987 году),операционные системы (недавно Linux исполнилось 30 лет), даже редакторы кода (передаем привет поклонникам Vim). Но есть одна область, которая в наше время бурно развивается и пополняется новыми “лицами” - это СУБД.

Существует известный стереотип о NoSQL решениях, будто они отлично справляются с огромными объемами данных, легко масштабируются и не требуют столь же внимательного подхода к модели данных, как классические реляционные БД, но не поддерживают ACID транзакции и обеспечивают только eventual-consistency.

Однако в последнее время индустрия NoSQL взрослеет. Появляются такие решения, как FoundationDB, гарантирующее "настоящие" транзакции;
в 2017 году вышла CockcroachDB, совместимая с PostgreSQL, но горизонтально масштабируемая БД, и даже пионер этого рынка, - MongoDB - начиная с версии 3.6 ввел поддержку транзакций поверх нескольких документов.

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

Stroppy - это фреймворк для тестирования различных баз данных. Он позволяет развернуть в облаке кластер, запустить нагрузочные тесты и
имитировать, например, сетевую недоступность одной из нод в кластере.

Как же все это позволяет проверить надёжность? Дело в том, что для проверки целостности данных существует весьма элегантный "банковский" тест. Мы заполняем БД рядом записей о неких "счетах" с деньгами. Затем имитируем серию переводов с одного счета на другой в рамках предоставляемых СУБД транзакций. В результате любого количества транзакций общая сумма денег на счетах не должна измениться.

Чтобы усложнить задачу для СУБД, Stroppy может попытаться сломать кластер БД, ведь в реальном мире отказы случаются гораздо чаще, чем нам хочется. А для горизонтально масштабируемых БД это случается еще чаще, так как большее количество физических узлов дает больше точек отказа.

На данный момент мы реализовали поддержку FoundationDB, MongoDB и PostgreSQL (нужно же с чем-то сравнивать всё остальное).
Сейчас работаем над поддержкой CockroachDB.

Будем рады любым вашим вопросам и пулл реквестам!

3 ответов

15 просмотров

Тесты для слабаков, или я слепой?)

Не очень понял, вы тестируете кластер, который я построил в облаке или вы сами строите кластер, а потом его тестируете на надёжность?

Dmitriy-Koltsov Автор вопроса
alex che
Не очень понял, вы тестируете кластер, который я п...

Stroppy умеет раскладывать виртуалки в Terraform, потом наказывать на них k8s, на него наказывать оператор нужной базы, а потом уже запускать на все это тест

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта