由于有批量操作的需求,看了一下这个 Bulk API,看完之后有几个问题。当前为了实现 bulk insert,我自己定义了一个 List, 每次有新数据要插入的时候,将数据转换成合适的格式,放进这个 List 里,等需要的时候执行 insert(List) 操作。这相当于我自己维护了一个缓存队列,而且这种队列还需要考虑到线程安全。从 Bulk.insert() 的 API 来看,只是把数据直接 insert 到这个 bulk 里。我想问的是:Bulk 是不是自己在客户端维护了一个缓存队列?如果是的话,它的线程安全性有保障吗?有了 Bulk 之后,是不是我不需要自己去维护我的缓存队列,交给 Bulk 去做就可以了?Bulk 是用 db.collection.initializeOrderedBulkOp() 方法获得的。测试了一下发现,我似乎必须得长期持有这个方法返回的引用,否则无法用其他方法再重新获得缓存队列中的数据。那么,如果长期持有的话,是不是在 execute() 之前会保持着一个长连接?那如果连接断掉呢?
1 回答
- 1 回答
- 0 关注
- 663 浏览
添加回答
举报
0/150
提交
取消