2015-10-16 46 views
4

我对Mongodb的java驱动程序很困惑。读官方documentation看来,你可以使用正常的MondoDB驱动程序或MongoDB异步驱动程序。Mongodb异步与同步Java驱动程序

第一个问题是:我可以在同一个应用程序中使用两者吗?还是我必须选择一个?

试图使用异步驱动程序我发现我曾经做过的事情(与正常的驱动程序),现在我有点失落了。例如,我曾经这样做:

FindIterable<Document> iterable = db.getCollection("my_coll").find(query); 
String json = JSON.serialize(iterable); 

现在我真的鸵鸟政策知道如何结果转换成JSON字符串,因为他们并没有包括从异步驱动程序JSON类。 第二个问题:如果我不能同时使用两个驱动程序,那我该如何序列化一个FindIterable<Document>

回答

1

的答案是:

  • 是当然也可以同时使用驱动程序。事实上,如果你真的关心你的应用程序的性能,你应该使用Sync驱动来处理你需要MongoDB响应的操作(比如find())。并且您将使用Async驱动程序来处理那些您并不真正需要它的驱动程序,以便执行“火灾和遗忘”操作(如插入或更新)。
  • 所以序列化问题从上面得到了回答。如果你正在使用的同步驱动程序的响应,因此您可以继续使用JSON类:

JSON.serialize(iterable);

+2

同步是不会提供超过异步一般的性能优势,并且也不会异步了同步的一般。选择使用Async驱动程序的主要优点是它可以让您执行重叠查询。在某些情况下,如果您有多个查询执行彼此不包含数据依赖关系,则可以异步执行它们(重叠)并在同步点处将所有结果一起等待。 –