多线程的MongoDB并发锁失败

时间:2016-03-03 17:58:48

标签: java multithreading mongodb concurrency locks

我在java多线程程序中对MongoDB进行了一些测试,以检查MongoDB如何确保对文档的并发访问。我的示例程序确保集合中只存在一个副本。如果文档中不存在文档,则会插入文档,否则会更新文档频率。经过几次测试,我发现一些文件存在相同的价值。

收藏品设计

DataSourceSerieDiscrete.cxx: In copy constructor ‘DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete&)’:
DataSourceSerieDiscrete.cxx:5:117: error: invalid conversion from ‘const ListeBase<int>*’ to ‘ListeBase<int>*’ [-fpermissive]
 DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete &DSSDSai) : pListe(DSSDSai.getPListe()) {};
                                                                                                                     ^

此处“doc”字段用于搜索,如果找到任何内容,则更新“doc_freq”。如果找不到任何内容,则会插入新文档。

实施

{
   _id: ObjectID,
   doc: String,
   doc_freq: Integer
}

我插入了100000个具有相同doc值并使用200个线程的条目。并且发现在具有相同doc值的集合中找到了多个条目。我在OS Yosemite上使用了 Java MongoDB驱动程序版本:3.0.4 MongoDB版本:3.2.1

0 个答案:

没有答案