由于有批量操作的需求,看了一下這個 Bulk API,看完之后有幾個問題。當前為了實現 bulk insert,我自己定義了一個 List, 每次有新數據要插入的時候,將數據轉換成合適的格式,放進這個 List 里,等需要的時候執行 insert(List) 操作。這相當于我自己維護了一個緩存隊列,而且這種隊列還需要考慮到線程安全。從 Bulk.insert() 的 API 來看,只是把數據直接 insert 到這個 bulk 里。我想問的是:Bulk 是不是自己在客戶端維護了一個緩存隊列?如果是的話,它的線程安全性有保障嗎?有了 Bulk 之后,是不是我不需要自己去維護我的緩存隊列,交給 Bulk 去做就可以了?Bulk 是用 db.collection.initializeOrderedBulkOp() 方法獲得的。測試了一下發現,我似乎必須得長期持有這個方法返回的引用,否則無法用其他方法再重新獲得緩存隊列中的數據。那么,如果長期持有的話,是不是在 execute() 之前會保持著一個長連接?那如果連接斷掉呢?
- 1 回答
- 0 關注
- 701 瀏覽
添加回答
舉報
0/150
提交
取消