什么DBCollection WriteConcern适合此操作

时间:2013-08-08 18:04:58

标签: mongodb

我在我的应用程序中使用MonogoDB。

我正在对arraylist中出现的所有符号执行大插入操作,如下所示

我担心虽然这个插入很大,但它可能会阻止另一个操作,无论如何,我可以告诉MongoDB在后台执行此插入操作(即异步)意味着不要让其他执行为此停止。

这可能吗?

public void insert(ArrayList<QuoteReportBean> quotelist) 
    {
     BasicDBList totalrecords = new BasicDBList();
     for (QuoteReportBean reportbean: quotelist) {
     BasicDBObject dbrecord = new BasicDBObject();
     dbrecord.append("custid", reportbean.getCustomerId());
     dbrecord.append("symbol", reportbean.getUniqueSymbol());
     dbrecord.append("exch", reportbean.getExchange());
     totalrecords.add(dbrecord);
     }
     WriteResult result = coll.insert(totalrecords);
     logger.error(" - " + result.toString());   
    }

我的要求是这个操作应该完成,但同时这不应该阻止其他操作。 我已经看到WriteConcern在这种情况下可以提高性能。

WriteConcern.NONE   No exceptions are raised, even for network issues.
WriteConcern.NORMAL   Write operations that use this write concern will return as soon as the message is written to the socket.
WriteConcern.UNACKNOWLEDGED Write operations that use this write concern will return as soon as the message is written to the socket.

收集

http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html

我打算使用WriteConcern.UNACKNOWLEDGED,这是最好的还是我需要处理的任何问题?

或者还有其他方法可以异步完成它吗?

1 个答案:

答案 0 :(得分:0)

writeConcern与您插入数据的方式无关,而是关于如何获得有关插入结果的通知。从客户端的角度来看,您的脚本似乎运行得更快,但最终您最终会在mongo端堆叠数据,等待持久化。