.NET транзакции, Mongo DB, двухфазная фиксация против однофазной фиксации - PullRequest
0 голосов
/ 03 марта 2019

Мы интегрируем 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?Что мне делать со всеми предыдущими уже преданными участниками?
...