此時我將數據序列化爲BasicDBObject。 MongoDB將其轉換爲BSON並將其發送到服務器。將數據寫入raw BSON
如何手動將數據寫入BSON以避免次序列化?
http://api.mongodb.org/java/current/com/mongodb/BasicDBObject.html只延伸的HashMap
http://api.mongodb.org/java/current/com/mongodb/RawDBObject.html是隻讀
此時我將數據序列化爲BasicDBObject。 MongoDB將其轉換爲BSON並將其發送到服務器。將數據寫入raw BSON
如何手動將數據寫入BSON以避免次序列化?
http://api.mongodb.org/java/current/com/mongodb/BasicDBObject.html只延伸的HashMap
http://api.mongodb.org/java/current/com/mongodb/RawDBObject.html是隻讀
看看BasicDBObject.java。您放入其中的任何數據都不會立即序列化爲BSON,而只會作爲對現有Java對象的引用而收集。在BSON序列化上不應該有重複的工作。
如果您仍然想手動生成自己的BSON,那麼您可能正在修改或繼承這裏的一個或多個類型:https://github.com/mongodb/mongo-java-driver/tree/master/src/main/com/mongodb。
直接寫入BSON的唯一方法是自己寫入字節緩衝區,並通過網絡將它們發送到服務器。由於這是Java驅動程序的主要工作,所以如果使用驅動程序和BasicDBObject,則不太可能會有與MongoDB通信的錯誤。
使用BasicDBObject是Java驅動程序中最優化的路徑,所以如果您認爲性能會對您造成問題,那麼我建議您提出性能要求(是否是您感興趣的吞吐量或延遲?你想要什麼數字?)並使用Java驅動程序和你自己的序列化編寫適當的性能測試。
JVM非常智能,它將優化程序中最經常使用的代碼路徑。您可能會發現HotSpot會優化您的程序和Java驅動程序,因此您無法編寫自己的序列化程序。
我發現http://comments.gmane.org/gmane.comp.db.mongodb.user/43918這似乎相似。但是LazyDBObject沒有任何用法示例 – user1312837