Java ORM for MongoDB的开销是多少



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

我们将添加 Mongo DB 以满足我们的要求之一。

有几个java ORM映射工具用于java
-吗啡
-弹簧数据
-别人

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

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

对于ORM工具,Morphia是最稳定的工具。在这里,您可以通过性能找到Morphia和Basic Mongo驱动程序之间的比较。

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

一般来说,

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

除此之外,您必须区分读取和写入性能。特别是写入受所用WriteConcern的严重影响。因此,在WriteConcern.NONE场景中可能是 50% 的开销很容易通过WriteConcern.SAFE下降到不到 5%。

是的,任何 ODM 实现中肯定都有开销,因为对象 <-> DBObject 映射必须检查对象获取并通常通过反射设置值。因此,恕我直言,关键点是能够插入您可能希望为性能关键对象提供的自定义手动编码转换器。对于 Spring 数据,只需注册一个执行new Person(…)的自定义EntityInstantiator,而不是让默认的执行其反射魔术,就可以极大地提高性能。

Spring Data 团队有一个构建设置了 OTS MongoDB 实例的构建加权性能,用于针对不同WriteConcern的写入,并读取普通驱动程序、MongoTemplate和存储库抽象。这些数字应该持保留态度,因为它们有时会显示存储库比模板更快地读取数据,这必须以某种方式受到基础架构的影响,因为它几乎是模板顶部的一层,但并没有真正添加任何缓存。

最新更新