У нас есть система, которая использует SQL Server 2008 в тандеме с MongoDB, используя последний для множества специальных отчетов. Они не пересекаются сильно , но есть одно или два места, где им действительно нужно работать вместе.
Я всегда был слегка обеспокоен последствиями транзакций, но полагал, что это не было большой проблемой, если приложение сначала работало в Mongo, и технически не такая большая проблема, если транзакция не удается в середине время от времени. Но появилась недавняя ошибка, которая приводила к тому, что они последовательно терпели неудачу, и, хотя я исправил ошибку, вызвавшую ее, я понял, насколько неприятно то, что я не могу просто распределить транзакцию по всей единице работы.
Учитывая одну базу данных, которая поддерживает распределенные транзакции (SQL Server 2008), и другую, которая на самом деле не поддерживает любую семантику ACID (MongoDB), существует ли какой-то способ структурирования кода приложения, чтобы работы («транзакция») либо выполняется успешно, либо выполняется откат в обеих базах данных?
Очевидно, я должен был бы использовать некоторые дополнительные столбцы / ключи для отслеживания статуса транзакции - но что и в каком контексте?