Comments 15
Отличную тему выбрали! Сравнение объектно-реляционных расширений классических СУБД и NoSQL MongoDB
Очень не хватает для полноты картины конфигурационных файлов (от них очень много зависит).
Такой разлет в обновлении, скорее всего, вызван разными гарантиями транзакций (записаны ли данные физически на диск после COMMIT?).
Такой разлет в обновлении, скорее всего, вызван разными гарантиями транзакций (записаны ли данные физически на диск после COMMIT?).
Специфических конфигураций ни для одной базы не было, все использовалось «из коробки».
Насчет записи данных на диск в тестах для update — я пробовал выполнить этот тест с использованием опции write concern j:true, чтобы убедиться, что операция попала в журнал (насколько я понимаю, это рекомендуемый способ управления гарантиями транзакций в mongodb). Это, конечно, замедлило выполнение теста, но все равно обновление происходило гораздо быстрее, чем в PostgreSQL или Mysql (этих данных на графиках сейчас нет).
Насчет записи данных на диск в тестах для update — я пробовал выполнить этот тест с использованием опции write concern j:true, чтобы убедиться, что операция попала в журнал (насколько я понимаю, это рекомендуемый способ управления гарантиями транзакций в mongodb). Это, конечно, замедлило выполнение теста, но все равно обновление происходило гораздо быстрее, чем в PostgreSQL или Mysql (этих данных на графиках сейчас нет).
Получается странное сравнение:
По-хорошему надо либо отключить fsync у MySQL и PostgreSQL, либо включить у MongoDB.
- MySQL и PostgreSQL выполняют fsync (данные выживут после внезапного перезапуска сервера)
- MongoDB не выполняет fsync (данные выживут после перезапуска Mongo)
По-хорошему надо либо отключить fsync у MySQL и PostgreSQL, либо включить у MongoDB.
У вас в Mongo операции с fsync проходили?
Нет, единственное, что я пробовал изменить относительно дефолтного использования — это добавлял write concern j:true (данных с этой опцией на графиках сейчас нет)
Судя по исходникам, замеряется не скорость запросов, а скорость запуска «шела» (mongo/psql/mysql) с авторизацией, и скорость их вывода результата.
Да, это все в итоге включается во время исполнения запроса. В том числе поэтому данные тесты лишь грубая оценка производительности (хотя надо бы еще убедиться, что в других способах изменения нет подобных накладок).
Это не грубая оценка, а полный треш.
это все в итоге включается во время исполнения запросаДля интереса сейчас замерил на коллекции 100к, выполнение команды через монгошел (с запуском без авторизации) ~50мс, выполнение этой же команды из python ~0.4мс, победит тот у кого шел быстрее.
Когда программисты будут запускать внешний бинарник для запросов к БД вместо использования встроенного драйвера, тогда данный бенчмарк можно будет и рассмотреть.
Sign up to leave a comment.
Сравнить несравнимое: json в PostgreSQL vs Mysql vs Mongodb