Целевая аудитория: Java-разработчики, использующие Spring Boot и MongoDB.
Версия Java: 11
Цель статьи: разобраться, как устроены транзакции в MongoDB, когда их использовать, и как реализовать в Spring Boot с тестами и Docker. MongoDB — документно-ориентированная NoSQL-база данных. Изначально она не поддерживала транзакции, полагаясь на атомарность операций над одним документом. Однако с версии 4.0 (2018) появилась поддержка многооператорных транзакций, а с 4.2 — транзакции между коллекциями и базами данных. Но! Транзакции в MongoDB работают только в реплика-сетах (replica set) или кластерах с шардированием. Для локальной разработки можно эмулировать replica set с помощью одного узла. С версии 3.2 MongoDB использует движок WiredTiger по умолчанию. Он поддерживает: Когда вы начинаете транзакцию: ⚠️ Ограничения:Максимум 1000 изменённых документов за одну транзакцию (можно увеличить через transactionLifetimeLimitSeconds).
Транзакция не должна длиться дольше 60 секунд по умолчанию.
Нельзя