2013-06-11 1 views
0

Многие проекты, использующие несколько источников данных транзакций, могут нуждаться в каких-то распределенных транзакциях в этих источниках данных для получения согласованных представлений данных. Каковы наиболее распространенные примитивы, которые предоставляют источники транзакционных данных, чтобы они могли быть добавлены в гетерогенную транзакционную систему?общие API для включения транзакций через гетерогенные источники данных

Если вам нужен конкретный пример, допустим, у меня есть транзакционная файловая система, в которой я могу делать снимки, и транзакционную базу данных, в которой есть журнал записи с контрольной точкой, и они запускаются на разных машинах. Как я могу гарантировать, что я получу согласованное представление обоим из них путем моментальной съемки/контрольной точки скоординированным образом? Является ли взломация какой-либо формы двухфазной фиксации, реализованной за пределами источников данных, обычным способом для этого, или сами источники данных обычно предоставляют некоторые API, чтобы сделать двухфазную фиксацию проще для правильной реализации?

ответ

0

Итак, термин, о котором я просил, по-видимому, XA для «eXtended Architecture», где транзакция может охватывать несколько источников данных.

Согласно статье Википедии, стандарт XA, который реализуется многими хранилищами данных, использует двухфазную фиксацию. Я думаю, что это в основном реализовано только базами данных, и, похоже, это в Oracle/SQLServer/DB2/PostgreSQL, возможно, другие. Файловые системы, похоже, не отображают этот примитив для приложений пользовательского уровня, хотя, возможно, некоторые из них это делают.

Вы также можете использовать другой консенсусный протокол (3-фазные фиксации/Paxos являются наиболее распространенными), но на практике немногие системы предоставляют доступ к этому, поэтому двухэтапная фиксация - ваш лучший выбор.

Смежные вопросы