ScalarDB Cluster .NET Client SDK の 2 フェーズコミットインターフェイスを使用した分散トランザクションをはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Cluster .NET Client SDK は、ScalarDB の 2 フェーズコミットインターフェイスを使用したトランザクションをサポートします。SDK には、クラスター内の通信を強化するためのトランザクションとマネージャーの抽象化が含まれています。
次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。
2 フェーズコミットインターフェースを使用したトランザクションについて
SDK を使用すると、複数のアプリケーションにまたがる 2 フェーズコミットインターフェースを使用したトランザクションを実行できます。たとえば、複数のマイクロサービスがある場合、それぞれのマイクロサービスにトランザクションマネージャーを作成し、それらのマイクロサービスにまたがるトランザクションを実行できます。
2 フェーズコミットインターフェースを使用したトランザクションには、コーディネーターと参加者の 2 つのロールがあり、これらが協力して 1 つのトランザクションを実行します。
コーディネータープロセスは最初にトランザクションを開始し、トランザクションの ID をすべての参加者に送信し、参加者プロセスがトランザクションに参加します。 CRUD または SQL 操作を実行した後、コーディネータープロセスと参加者プロセスは 2 フェーズインターフェースを使用してトランザクションをコミットします。
SDK をインストールする
ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの SDK を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。<MAJOR>.<MINOR>
を、使用しているバージョンに置き換えます。
dotnet add package ScalarDB.Client --version '<MAJOR>.<MINOR>.*'
設定ファイルを作成する
scalardb-options.json
ファイルを作成し、次の内容を追加します。<HOSTNAME_OR_IP_ADDRESS>
を FQDN または IP アドレスに、<PORT>
をクラスターのポート番号 (デフォルトでは 60053
) に置き換えます。
{
"ScalarDbOptions": {
"Address": "http://<HOSTNAME_OR_IP_ADDRESS>:<PORT>",
"HopLimit": 10
}
}
設定ファイルやクライアントを設定するその他の方法の詳細については、クライアント設定を参照してください。
トランザクションマネージャーを取得します (コーディネータと参加者用)
2 フェーズコミットインターフェイスを使用した分散トランザクシ ョンには、トランザクションマネージャーを取得する必要があります。トランザクションマネージャーを取得するには、次のように TransactionFactory
を使用します。
// Pass the path to the settings file created in the previous step.
var factory = TransactionFactory.Create("scalardb-options.json");
using var manager = factory.GetTwoPhaseCommitTransactionManager();
あるいは、次のトランザクションマネージャーを指定して、2 フェーズコミットインターフェイスを使用したトランザクションに CRUD 操作の代わりに SQL を使用することもできます。
using var manager = factory.GetSqlTwoPhaseCommitTransactionManager();
トランザクションを開始する (コーディネータ用)
次のように、コーディネータの 2 フェーズコミットインターフェイスを使用してトランザクションを開始できます。
var transaction = await manager.BeginAsync();
開始されたトランザクションの ID は、次のコードで取得できます。
var transactionId = transaction.Id;