Mongodb Async vs Sync Java驱动程序

ern*_*lez 9 java asynchronous mongodb

我对Mongodb的java驱动程序很困惑.阅读官方文档似乎可以使用普通的MondoDB驱动程序或MongoDB异步驱动程序.

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

尝试使用Async驱动程序我发现了我以前做的事情(使用正常的驱动程序),现在我有点迷失了.例如,我曾经这样做:

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

现在我真的不知道如何将结果转换为json字符串,因为它们没有包含JSONAsync驱动程序中的类.第二个问题:如果我不能同时使用两个驱动程序,那我怎么能序列化一个FindIterable<Document>

ern*_*lez 5

答案是:

  • 是的,当然您可以使用这两个驱动程序。事实上,如果您确实关心应用程序的性能,则应该使用同步驱动程序来执行需要 MongoDB 响应的操作(例如 find())。您将使用异步驱动程序来处理您并不真正需要的操作,即“即发即忘”操作(例如插入或更新)。
  • 所以序列化问题从上面得到了答案。如果您收到响应,则说明您正在使用同步驱动程序,因此您可以继续使用JSON类:

JSON.serialize(iterable);

  • 同步不会提供优于异步的总体性能优势,异步也不会总体上优于同步。选择使用异步驱动程序的主要优点是它使您能够执行重叠查询。在某些情况下,如果您要执行多个查询,并且彼此之间不存在数据依赖性,则可以异步执行它们(重叠)并在同步点一起等待它们的所有结果。 (16认同)