работает репликации MongoDB 4.0 изнутри? Я хочу понять для себя, что именно происходит, когда я запускаю пустую ноду и она начинает в себя подтягивать БД. Так то я понимаю, что при запуске она получает конфиг, определяет кто PRIMARY, кто SECONDARY. Далее, судя по всему происходит выбор SECONDARY для репликации. Дальше она начинает стягивать БД и коллекции в них. Тянет по одной коллекции, потом строит индексы. Вот эта часть меня больше всего интересует. Когда она начинает тащить коллекцию, лочит ли она его на той стороне, откуда тащит? И тащит ли сразу всю коллекцию целиком, или по кусочкам? В какой момент времени и в какой итерации идёт обращение к opLog?
Нет, не лочит. Смысл в том, что вы потом накатите всё содержимое оплога поверх точки начала initial sync, которая сейчас в самом его начале. Initial sync по сути это find
На время вызова find идёт ли блокировка коллекции? И этот find выполняется на всю коллекцию сразу? К тому же, ведь во время синхронизации коллекций между нодами в выбранную текущую коллекцию могут активно писаться изменения. Как оно обеспечивает в это время атомарность изменений? Про opLog понятно, оно потом докатит разницу.
В монге нет блокировок в классическом их понимании. Блокировки это деталь реализации
Атомарность изменений гарантируется только на уровне документов и эта гарантия сохраняется при чтении
Так с 4 версии нормальные транзакции же появились на уровне коллекций, или я неправильно понял ?
Обсуждают сегодня