2フェーズコミットトランザクションを実行する方法
注記
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版 を正としてください。
ScalarDB GraphQL は、2フェーズコミットトランザクションと呼ばれるトランザクションをサポートしています。
2フェーズコミットトランザクションを使用すると、複数のプロセス/アプリケーション (マイクロサービスなど) にまたがるトランザクションを実行できます。
トランザクションを開始するアプリケーションを「コーディネーター」と名付け、トランザクションに参加するアプリケーションを「参加者」と名付けます。
すべての2フェーズコミット操作では、ミューテーションまたはクエリ操作に @twoPhaseCommit
ディレクティブをアノテーションする必要があります。以下は、このような操作の説明です。
トランザクションを開始する
トランザクションを開始するには、パラメータを設定せずに @twoPhaseCommit
ディレクティブを追加します。
query some_query @twoPhaseCommit {
# some query
}
開始されたトランザクションのトランザクション ID は、結果の一部である拡張オブジェクトで返されます。
{
"data": {
...
},
"extensions": {
"transaction": {
"id": "the_transaction_id"
}
}
}
トランザクションに参加する (参加者用)
参加者アプリケーションで、コーディネーターアプリケーションによって開始されたトランザクションに参加するには、トランザクション ID を id
パラメータで設定し、join
パラメータを true に設定します。
query some_query_from_participant @twoPhaseCommit(id:"the_transaction_id", join:true) {
# some query
}