Мы интегрируем Mongo DB в качестве базы данных в нашей системе на основе .NET.Поскольку в нашей системе требуется согласованность данных, нам необходимо поддерживать транзакции.Mongo DB v4.0 поддерживает транзакции, но для того, чтобы интегрировать его с механизмом .NET System.Transaction, нам кажется, что нам нужно реализовать менеджер ресурсов для Mongo либо с одной фазой (IPromotableSinglePhaseNotification), либо с двухфазной (IEnlistNotification).commit.
- Драйвер Mongo C # предоставляет API-интерфейс StartTransaction (), Commit () и Rollback (), который выглядит как API однофазного принятия, поэтому наш менеджер ресурсов должен реализовывать одну фазуинтерфейс.С другой стороны, нам нужно поддерживать распределенные транзакции, так что это подходит для механизма 2-phase-commit, но какой должна быть реализация первого этапа (Prepare) в этом случае?
- В случае несколькихУчастники транзакции Mongo (например, распределенная транзакция), что произойдет, если один из участников потерпит неудачу в API Commit () драйвера Mongo?Что мне делать со всеми предыдущими уже преданными участниками?