首先我要说的是我的目标是尽可能快地完成阅读操作,所以如果你在我的代码/描述中找到可以帮助我实现这一目标的东西,请告诉我。
我有一个只读Web应用程序,它从MongoDB中提取对象。但是,我将返回给用户的响应对象不需要所有数据。目前看来,流程如下:
我想通过将mongo中的数据直接映射到响应对象来组合步骤1和2。
我已经挖掘了DefaultMongoTypeMapper
以及它所使用的所有类别,但在我确定它是正确的方向之前,我需要做很多事情。
除了我上面列出的内容外,我还有其他一些问题。一个是存储在Mongo中的对象没有_class
字段,因为它们是原始数据(从我所看到的,类型映射器使用该字段来确定要映射到的类)。这样做的好处是,数据库中的所有内容都将映射到同一个对象,因此我们可以假设要使用哪个类。
有没有人做过这样的事情,或者对如何实现这一点有任何建议?
非常感谢。
答案 0 :(得分:4)
如果您正在寻找最快的读取操作,可能首先要看的是使用MongoDB实际读取和通过网络传输的速度。 Java内的处理(在合理范围内)将占总请求时间的非常低的百分比。 您可能已经这样做了,但是看一下MongoDB的原始读取(索引,查询,记录数,数据库架构,配置等)
对于java处理,它非常依赖于你想对结果做什么。 我建议你为java处理的各种选项创建一些测试,这可能是CPU绑定的。如果您可以创建一次处理多个记录的测试,则可以看到每个记录的性能特征。
您可以从文档中手动编写创建POJO的代码吗?这可能是最高效的。 否则就像morphia https://code.google.com/p/morphia/
这样的ODM如果您熟悉/使用Spring(如上所述),请参阅:http://projects.spring.io/spring-data-mongodb/或许请查看:http://spring.io/guides/gs/accessing-data-mongo/