MongoDB是线程安全的吗?

9

我正在Windows上运行MongoDB。 我有一个或多个线程会删除并重新创建一组集合。

使用mongo.exe命令和show collections()命令,我看到了许多具有相同名称的集合(超过1000个相同名称的集合!)

当我运行验证时:

> db.MY_COLLECTION.validate()

我理解为:

{ "errmsg" : "ns not found", "ok" : 0, "valid" : false }

size()命令返回0,find()没有返回值。

我的问题是:MongoDB是线程安全的吗?接下来的问题可能是像这样的:'我是否做得正确(删除和重新创建),或者有更好的方法来刷新整个集合的内容?'

2个回答

7

来自mongodb文档:

线程安全

只有少数C#驱动程序类是线程安全的。其中: MongoServer、MongoDatabase、MongoCollection和MongoGridFS。您经常使用但不是线程安全的常见类包括MongoCursor和所有来自BSON库的类(除了线程安全的BsonSymbolTable)。除非特别说明为线程安全,否则类均不是线程安全的。

所有类的静态属性和方法都是线程安全的。

您可以在此页面上搜索Thread关键字:

http://mongodb.onconfluence.com/pages/viewpage.action?pageId=18907708&navigatingVersions=true#CSharpDriverTutorial-Threadsafety


1
以上链接似乎不再有效。 - M.A.Naseer

5

在2.2版本中发生了变化。

MongoDB使用锁定系统允许多个客户端读写单个数据语料库,以确保所有客户端获得数据的一致视图,并防止多个应用程序同时修改完全相同的数据。锁可以保证所有对单个文档的写入要么全部完成,要么完全不进行。

http://docs.mongodb.org/manual/faq/concurrency/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接