MongoDB的Java ORM开销是多少

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

我们将根据我们的要求添加Mongo DB。

java有几种java ORM映射工具
-morphia
-spring数据
– 其他人

Morphia上一版本在一年多前发布
但Spring数据得到了积极维护。 如果我即将开始,应该使用哪一个,

使用ORM会降低性能,但会加快开发速度。 这里有一个折衷方案。

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

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

总的来说,这里有很多东西要提。 如果没有测试MongoDB设置,你就无法真正测试性能,因此提出基准测试非常困难。 因此,人们几乎可以调整和调整一个环境来提供所需的结果。

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

是的,任何ODM实现肯定都有开销,因为Object < - > DBObject映射必须通过reflection检查对象get和set值。 因此,关键点IMHO是能够插入您可能希望为性能关键对象提供的自定义手动编码转换器。 对于Spring Data,只需注册一个自定义的EntityInstantiator来执行new Person(…)而不是让默认的一个人做reflection魔术,从而大大提升了性能。

Spring Data团队有一个构建设置OTS MongoDB实例的构建权重性能,用于针对不同的WriteConcern进行写入,并通过普通驱动程序, MongoTemplate和存储库抽象进行读取。 这些数字应该用一粒盐,因为它们有时会显示存储库读取数据的速度比必须通过某种方式受基础结构影响的模板更快,因为它几乎是模板顶部的一层,但实际上并不是添加任何缓存。