Атомарность MongoDB с Javers

Я вижу, что репозиторий Javers mongo хранит данные в двух разных коллекциях. Предполагая, что я использую Javers для аудита и записываю свои объекты домена в другую коллекцию, мне интересно, как поддерживается атомарность в этих операциях сохранения. Выполняет ли Javers какие-то двухэтапные коммиты для поддержания работоспособности между двумя внутренними коллекциями? Предоставляет ли он ловушки для синхронизации операций сохранения клиентского приложения с журналами аудита?


person Aritra    schedule 27.07.2017    source источник


Ответы (1)


В MongoDB нет транзакций. Все, что у вас есть, — это атомарная запись на уровне документа (см. https://docs.mongodb.com/manual/core/write-operations-atomicity/). JaVers не реализует никаких «многодокументных транзакций» на стороне приложения.

Если вам нужны SQL-подобные транзакции, выберите JaversSqlRepository с интеграцией JPA EntityManager (см. https://javers.org/documentation/spring-integration/#jpa-entity-manager-integration).

person Bartek Walacik    schedule 27.07.2017
comment
Почему бы не что-то вроде этого?docs.mongodb.com/manual/tutorial /perform-two-phase-commits - person Aritra; 27.07.2017
comment
даже если javers реализует этот шаблон для управления вставками в свои две коллекции, он не сможет управлять записью приложения. - person Bartek Walacik; 27.07.2017
comment
@BartekWalacik проверяет, действителен ли этот ответ, теперь, когда MongoDB поддерживает транзакции с несколькими документами? - person Araf; 07.07.2021