問題タブ [2phase-commit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
93 参照

.net - 「分散トランザクション」で複数のデータベースを更新する

私は2つのデータベースを持っています。1 つは SQL Server で、もう 1 つは MongoDB です。これらの DB は両方とも AWS でホストされています。

定期的に (おそらく月に 1 回) 実行される .NET バックグラウンド サービスを作成し、SQL Server と MongoDB の両方で大量のデータを更新する必要があります。そして、2 つの DB 間にデータの不一致がなく、データが同期されるように、単一の「分散トランザクション」でそれを行う必要があります。
私は読ん2 Phase transactionsだことがありますが、MongoDB はトランザクションをサポートしていないため、ここでは不可能だと思いますか? (間違っている場合は訂正してください。ただし、MongoDB 3.4 を使用しているため、トランザクションはサポートされていないと思います)。それで、分散トランザクションを実装するために実装
できるかどうかを確認する予定でしたか? これを行うために検討すべき他のパターン/テクニックはありますか?saga pattern

0 投票する
0 に答える
30 参照

database - コミット フェーズ中に 1 つのノードがクラッシュしたり低速になったりした場合の 2 フェーズ コミット データの一貫性

2 フェーズ コミットでは、ノードの 1 つがコミット フェーズ中にクラッシュするか遅くなり、他のノードが既に変更を正常にコミットしているとします。これらの成功したノードの 1 つにクエリが発行された場合、クライアントの観点から見ると、そのデータの一貫性はどうなるでしょうか?

クライアントは、その成功したノードでコミットされた最新の変更を確認しますか?それとも、トランザクション コーディネーターは、クライアントが現在進行中のトランザクションの前のデータ/状態のみを確認できるように、以前に成功した TransactionID をクエリと共にノードに渡しますか?