Добавить комментарий

Автор хоть и

Автор хоть и пытается казаться умным и убедить нас в чем-то, но выходит не убедительно.
1 Сравнение действительно из разряда Феррари vs Трактор.
2 Обычно при сравнительных тестах принято выкладывать конфиги серверов и железа, формат данных и желательно тестовый набор данных. Феррари как-то не очень едет на солярке, а трактору нормально.
3 Дальше идет оговорка, что вас интересуют транзакционные вставки. MongoDB четко говорит "у нас транзакций нет", есть атомарность изменения одной записи, тут бы и тест закончить, но нет. Феррари на трек, трактор в поле.
4 Ну ладно, транзакции пропустим. Пара цитат "Тест интенсивной вставки данных" и "В скрипте выбран пакет всего в 10 строк, который увеличивает скорость вставки в 5 раз". 500% звучит солидно, это на практике или в теории?. Как-то не вяжется интенсивная вставка и пакет из 10 записей. Это кто быстрей проедет на первой передаче? Лучшим вариантом была бы сравнительная динамика при увеличении пакета 100-500-1000, хотя бы.
5 Дальше идет сетование про оперативную память. MongoDB говорит "я держу данные в памяти и храню на диске". Чем больше данных, тем больше нужно памяти. Вот ведь неожиданность. Память выделяется кусками, точнее создается memory mapped file(размер определяется в конфигах) и забивается нолями на всю длину. У вас может быть всего 1мб данных, но лежать они могут в 1гб файле, если забили один файл выделяется следующий. Провал на графике мог быть вызван созданием файла(выделением памяти) и\или началом записи данных на диск.
6 MongoDB предоставляет schema-less хранение данных, расплатой за это является неявное хранение схемы в каждом документе, в виде названий полей, что приводит к увеличению размера базы. Если название поля measureDate сократить до md, то экономия получится минимум 9 байт * 10М (84мб), только на хранении имени одного поля. Если игнорировать эту особенность, то на каждом запросе можно пробегать по лишним данным, иногда значительного объема.
7 Все работает в один поток? Вы серьезно?
8 Все работает на одном сервере, использование MongoDB хоть для мало-мальски реальной задачи подразумевает наличие хотя бы 2 отдельных серверов. А тут уже и цифры другие и мерять нужно по другому и факторы влияющие на производительность другие.

В общем не разбираясь и не учитывая особенности, сравнивать не эквивалентные вещи, производить какие-то замеры и делать какие-то выводы, это глупое занятие.