10

为 MongoDB 使用 Java ORM 的开销是多少,或者我们在基本驱动程序级别进行读取或写入更好?

我们将为我们的一项要求添加 Mongo DB。


java -morphia
-spring-data
- others有几个 java ORM 映射工具

Morphia 最后一个版本是一年多前发布的,
但 Spring 数据正在积极维护。如果我现在要开始,应该使用哪一个,

4

3 回答 3

11

使用 ORM 会降低性能,但会加快开发速度。这里有一个权衡。

对于 ORM 工具,Morphia 是最稳定的工具。在这里,您可以找到 Morphia 和 Basic Mongo Driver 的性能比较。

于 2012-05-15T12:02:53.703 回答
4

Morphia 似乎是最合适的,因为它具有最多的功能并拥有活跃的社区。请参阅此链接进行比较:MongoDB 的 Morphia、Mongo4j 和 Spring 数据如何比较?

于 2012-05-15T12:09:08.680 回答
4

总的来说,这里有很多事情要提到。提出基准非常困难,因为如果不测试 MongoDB 设置,您就无法真正测试性能。因此,几乎可以调整和调整环境以提供所需的结果。

除此之外,您还必须区分读写性能。尤其是写入受WriteConcern使用的影响很大。因此,WriteConcern.NONE使用WriteConcern.SAFE.

是的,在任何 ODM 实现中肯定存在开销,因为 Object <->DBObject映射必须通常通过反射检查对象获取和设置值。因此,恕我直言,一个关键点是能够插入您可能希望为性能关键对象提供的自定义手动编码转换器。对于 Spring Data 来说,简单地注册一个自定义EntityInstantiatornew Person(…)不是让默认的反射魔法可以极大地提高性能。

Spring Data 团队有一个构建设置,一个 OTS MongoDB 实例的构建加权性能,用于针对不同的 s 进行写入,并通过普通驱动程序、存储库抽象进行WriteConcern读取。MongoTemplate这些数字需要谨慎对待,因为它们有时显示存储库读取数据的速度比模板要快,模板必须通过某种方式受到基础设施的影响,因为它几乎是模板之上的一层,但实际上并非如此添加任何缓存。

于 2012-05-16T08:04:38.993 回答