В чем разница в производительности между модулем Morphia и MongoDB в платформе Play? - PullRequest
3 голосов
/ 28 июня 2011

И модуль Morphia, и MongodDB в игровой среде являются оболочками вокруг драйвера Java для MongoDB.

Но я заметил, что Morphia не дает напрямую Java List при запросе. Это дает мне сложный объект под названием Query. Для этого объекта я должен вызвать метод asList (), который заставляет его перебирать каждый элемент в Query и генерировать список. Я думаю, что это может повлиять на производительность, когда в большинстве случаев мне нужны списки Java. Интересно, почему Morphia не генерирует List во время выборки данных из базы данных mongodb.

1 Ответ

3 голосов
/ 28 июня 2011

Причина в том, что он позволяет вам решить, как вы хотите ваши данные. Как видно из wiki , вы можете получить только первый объект с помощью get () или список идентификаторов с помощью asKeyList (). Они признают, что использование в качестве List () может быть дорогостоящим для больших наборов .

Причина, по которой я понимаю, заключается в повторном использовании объекта Query. Они позволяют вам создавать сложный объект Query (с фильтрами и тому подобное) и извлекать результаты при необходимости. Вы можете даже получить разные наборы результатов из одного и того же запроса, поскольку перечисленные методы (asList и т. Д.) Не влияют на объект запроса.

Если вы будете многократно использовать объекты запроса и не будете возвращать огромные наборы данных (что вам не следует делать слишком счастливо), это может быть полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...