2013-06-20 58 views

回答

1

看看BasicDBObject.java。您放入其中的任何數據都不會立即序列化爲BSON,而只會作爲對現有Java對象的引用而收集。在BSON序列化上不應該有重複的工作。

如果您仍然想手動生成自己的BSON,那麼您可能正在修改或繼承這裏的一個或多個類型:https://github.com/mongodb/mongo-java-driver/tree/master/src/main/com/mongodb

+0

我發現http://comments.gmane.org/gmane.comp.db.mongodb.user/43918這似乎相似。但是LazyDBObject沒有任何用法示例 – user1312837

2

直接寫入BSON的唯一方法是自己寫入字節緩衝區,並通過網絡將它們發送到服務器。由於這是Java驅動程序的主要工作,所以如果使用驅動程序和BasicDBObject,則不太可能會有與MongoDB通信的錯誤。

使用BasicDBObject是Java驅動程序中最優化的路徑,所以如果您認爲性能會對您造成問題,那麼我建議您提出性能要求(是否是您感興趣的吞吐量或延遲?你想要什麼數字?)並使用Java驅動程序和你自己的序列化編寫適當的性能測試。

JVM非常智能,它將優化程序中最經常使用的代碼路徑。您可能會發現HotSpot會優化您的程序和Java驅動程序,因此您無法編寫自己的序列化程序。