#c# #.net #mongodb #mongodb-.net-driver
#c# #.net #mongodb #mongodb-.net-driver
Вопрос:
Допустим, у меня есть две коллекции A и B. В моей программе на C # я пытаюсь получить данные из них. В настоящее время я сначала получаю данные из коллекции A и сохраняю документы в контейнер. А затем получить данные из коллекции B. Но теоретически данные могут быть изменены после получения от A и до получения от B. Так что я получаю неправильные результаты. Есть ли безопасный способ?
Ответ №1:
Mongodb не поддерживает транзакции. Из-за того, что mongodb был разработан для масштабируемости (это означает сегментирование, репликацию), а распределенные транзакции могут быть очень дорогими и замедлять работу базы данных в целом. Таким образом, вы не можете блокировать коллекцию A для записи, пока вы получаете / обновляете ее, загружая из B.
В mongodb есть какие-то транзакции — это атомарные обновления для одного документа. Таким образом, вы можете обновить часть документа без его загрузки.
Ответ №2:
Хотя Mongo явно не поддерживает блокировку таблиц, как это делают системы SQL, вы можете захотеть взглянуть на эту fsync
функцию. Если я правильно читаю документы, вы должны иметь возможность использовать его как хак, чтобы временно предотвратить запись данных.