Автор оригинала: Vlad Mihalcea.
Время от времени я читаю чьи-то плохие мысли по поводу данной платформы с открытым исходным кодом. Когда я начал программировать Struts, веб-фреймворк был в самом расцвете, всем он нравился. Но потом мало-помалу люди начали обвинять его, а затем последовала ненависть.
Затем люди начали обвинять Hibernate, а в последнее время и MongoDB. Я даже читал это ” Я не должен использовать MongoDB “. Ну, я выполнял проекты на стойках, Hibernate и MongoDB, и ни один из них никогда не был блокировщиком.
Если и есть кто-то, кого можно винить, то обычно это мы сами, а не рамки, которые мы используем. Если вы скачаете и просмотрите исходный код данного проекта с открытым исходным кодом, вы будете приятно удивлены качеством кода. Большую часть времени я нахожу, что это, по крайней мере, так же хорошо, как если бы я делал это сам. Многие проекты с открытым исходным кодом являются результатом бесконечного напряженного труда многих увлеченных разработчиков, так почему же тогда мы должны винить их фреймворки?
Как и у любой другой вещи на земле, у всех них есть сильные и слабые стороны, и мы сами решаем, какие функции подходят для наших проектов, или же нам все-таки следует рассмотреть возможность использования фреймворка.
В то время как изучение Struts, Spring или jQuery не было таким уж сложным, когда дело доходит до баз данных, гибернации, а теперь и NoSQL, все становится сложнее. И Hibernate, и MongoDB являются качественными продуктами, и я знаю много успешных проектов, построенных на их основе, но это не значит, что они просты в использовании. Если вы хотите их нанять, будьте готовы многому научиться, другого пути нет.
Когда я начал использовать Hibernate, я был поражен его сложностью. Вскоре я понял, что не смогу наверстать упущенное, не изучив его досконально, и именно поэтому я решил полностью прочитать все 900 страниц Java Persistence с помощью Hibernate . И это было только начало, так как даже сейчас я продолжаю время от времени читать и проверять его исходный код.
Тогда MongoDB показался мне подходящим для многих наших проектов, и, поскольку я ничего не знал о NoSQL, мне пришлось потратить довольно много времени, чтобы быть продуктивным. К счастью, MongoDB предлагает бесплатные онлайн-занятия и мне снова пришлось вернуться к учебе. Если вам когда-либо приходилось работать с платформой агрегации MongoDB, вы знаете, что я имею в виду.
Просто краткий пример простой ошибки, которую я совершил, и это стоило мне двух часов моего обычного сна, чтобы исправить ее.
$match: { "timestamp" : { $gte: fromTimestamp }, "timestamp" : { $lt: toTimestamp } }
Когда я писал это, я думал, что получу логическое соединение, сопоставив все документы между меткой времени и меткой времени. Но это не то, что я получил, так как это совпадение выбирает все документы меньше, чем отметка времени, так как первое задание переопределяется вторым.
То, что я хотел, должно быть выражено как:
$match: { "timestamp" : { $gte: fromTimestamp, $lt: toTimestamp } }
Но с другой стороны, МонгоДБ не был виноват в том, что я получал очень плохую производительность для своих агрегатов. Я промахнулся, проинструктировав его сделать что-то совершенно отличное от моего первоначального намерения.
Так вот почему я не виню фреймворки, с которыми работаю. Мы в основном страдаем от плохого использования, а не от плохих инструментов.