2015-10-16 133 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驅動程序的主要優點是它可以讓您執行重疊查詢。在某些情況下,如果您有多個查詢執行彼此不包含數據依賴關係,則可以異步執行它們(重疊)並在同步點處將所有結果一起等待。 –