#mongodb
Вопрос:
У меня есть вопрос относительно MongoDB. Я прочитал документацию, но не получил четкого представления об этом, поэтому спрашиваю здесь. У меня есть одна коллекция, в которой мне нужно выполнять 24/7 операции чтения и записи из разных источников. Итак, вопрос в том, можем ли мы одновременно выполнять операции чтения и записи в одной и той же коллекции одновременно? Если нет, то какова альтернатива или какова главная причина этого .
У меня есть несколько крон python, которые выполняют операции R/W над коллекциями одновременно, у меня есть серверный API на стороне узла, который выполняет операции R/W над одной и той же коллекцией, так что это вызовет какие-либо проблемы? В настоящее время все это выполняется на стороне MySQL, но теперь, согласно требованиям клиента, мне нужно перейти на MongoDB из MySQL. Поэтому, пожалуйста, помогите мне разобраться в этой проблеме.
Ответ №1:
Прочитайте часто задаваемые вопросы: Параллелизм
MongoDB использует блокировки чтения и записи, которые позволяют одновременным читателям совместно использовать доступ к ресурсу, такому как база данных или коллекция.
В дополнение к режиму блокировки общего доступа (S) для чтения и режиму блокировки исключительного доступа (X) для операций записи, режимы общего доступа с намерением (IS) и исключительного доступа с намерением (IX) указывают на намерение прочитать или записать ресурс с использованием более тонкой блокировки детализации. При блокировке с определенной степенью детализации все более высокие уровни блокируются с помощью блокировки намерения.
И относительно проводного двигателя Tiger
Для большинства операций чтения и записи WiredTiger использует оптимистичный контроль параллелизма. WiredTiger использует только блокировки намерений на глобальном уровне, уровне базы данных и уровне сбора.
Текущий движок mongodb по умолчанию WiredTiger
таков, что если вы его используете — все в порядке. Чтобы проверить двигатель, выполните это db.serverStatus().storageEngine