5

首先让我说我的目标是实现最快的读取操作,所以如果您在我的代码/描述中发现可以帮助我实现这一目标的内容,请告诉我。

我有一个从 MongoDB 中提取对象的只读 Web 应用程序。但是,我将返回给用户的响应对象不需要所有数据。就目前而言,流程如下:

  • 从 mongo 检索信息
  • 将该信息映射到对象
  • 使用访问器方法将值从所述对象传输到响应对象。
  • 将响应对象返回给用户。

我想通过将来自 mongo 的数据直接映射到响应对象来组合步骤 1 和 2。

我已经挖掘了DefaultMongoTypeMapper它使用的所有类,但是在我确定它是正确的方向之前,我的头很长。

除了我上面列出的,我还有一些其他的担忧。一个是存储在 Mongo 中的对象没有该_class字段,因为它们是原始数据(据我所知,类型映射器使用该字段来确定要映射到的类)。这样做的好处是来自数据库的所有内容都将映射到同一个对象,因此我们可以假设要使用哪个类。

有没有人做过类似的事情,或者对如何实现这一点有任何建议?

非常感激。

4

1 回答 1

4

如果您正在寻找最快的读取操作,可能首先要看的是实际读取的速度,以及使用 MongoDB 跨网络传输的速度。Java 中的处理(在合理范围内)将占总请求时间的非常低的百分比。您可能已经这样做了,但请看一下来自 MongoDB 的原始读取(索引、查询、记录数、数据库架构、配置等)

对于 java 处理,它非常依赖于你想要对结果做什么。我建议您为 java 处理的各种选项创建一些测试,这可能是 CPU 限制的。如果您可以创建一次处理多条记录的测试,则可以查看每条记录的性能特征。

您可以手动编写从文档中创建 POJO 的代码吗?这可能是最高效的。否则像 morphia 这样的 ODM https://code.google.com/p/morphia/

如果您已经熟悉/使用 Spring(如上所述)请参阅:http ://projects.spring.io/spring-data-mongodb/或者可以查看:http: //spring.io/guides/gs/accessing -数据-mongo/

于 2013-11-18T17:44:31.887 回答