Является ли MongoDB потокобезопасным?
Я запускаю MongoDB в Windows. У меня есть 1 или более потоков, которые удаляют и воссоздают коллекцию.
используя mongo.exe
С show collections()
команда, я вижу несколько коллекций с тем же именем (более 1000 коллекций с тем же именем!).
когда я запускаю validate:
> db.MY_COLLECTION.validate()
Я:
{ "errmsg" : "ns not found", "ok" : 0, "valid" : false }
на size()
команда возвращает 0 и find()
ничего не возвращает.
мой вопрос: Является ли поток MongoDB безопасным? Продолжение вопрос был бы чем-то вроде ' я делаю это правильно (удаление и воссоздание) или есть лучший способ обновить все содержимое коллекции?'
2 ответов
из документации mongodb:
потокобезопасность
только несколько классов драйверов C# являются потокобезопасными. Среди них: MongoServer, MongoDatabase, MongoCollection и MongoGridFS. Общие классы вы будете использовать много, которые не являются потокобезопасными, включают MongoCursor и все классы из библиотеки BSON (кроме bsonsymboltable, который является потокобезопасным). Класс не является потокобезопасным, если специально не задокументирован как потокобезопасный.
все статические свойства и методы всех классов являются потокобезопасными.
вы можете найти слово поток на этой странице:
изменено в версии 2.2.
MongoDB позволяет нескольким клиентам читать и записывать один корпус данных с помощью системы блокировки, чтобы гарантировать, что все клиенты получают согласованное представление данных и предотвратить несколько приложений от изменения одних и тех же частей данных в то же время. Блокировки помогают гарантировать, что все записи в один документ выполняются полностью или не выполняются вообще.