ScalarDB Cluster gRPC API ガイド
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、ScalarDB Cluster gRPC API について説明します。
ScalarDB Cluster を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。
ScalarDB Cluster は、内部で gRPC API を使用する Java API を提供します。
Java または JVM 言語を使用する場合は、ScalarDB Cluster gRPC API を直接使用する代わりに、Java API を使用できます。
Java API の詳細については、Java API を使用した ScalarDB Cluster の開発者ガイドを参照してください。
ScalarDB Cluster gRPC API のサービスとメッセージの詳細については、scalardb-cluster.proto ファイルの定義を参照してください。商用ライセンスを持つ ScalarDB Cluster ユーザーで、scalardb-cluster.proto ファイルが必要な場合は、お問い合わせください。
ScalarDB Cluster gRPC API は、次のサービスで構成されています。
scalardb.cluster.rpc.v1.DistributedTransaction: ScalarDB Cluster に分散トランザクション機能を提供します。scalardb.cluster.rpc.v1.TwoPhaseCommitTransaction: ScalarDB Cluster に2フェーズコミットトランザクション機能を提供します。scalardb.cluster.rpc.v1.DistributedTransactionAdmin: 包括的な管理操作を提供します。
次のセクションでは、各サービスの使用方法について説明します。
ScalarDB Cluster gRPC API でのエラー処理の概要
各サービスの使用方法を説明する前に、このセクションでは ScalarDB Cluster gRPC API でのエラー処理の仕組みについて説明します。
ScalarDB Cluster gRPC API は、エラー処理に Richer error model を採用しています。このモデルにより、サーバーは1つ以上の protobuf メッセージとして表現される追加のエラー詳細を返すことができ、クライアントはそれを利用できるようになります。ScalarDB Cluster gRPC API は、standard set of error message types の1つである google.rpc.ErrorInfo を使用し、追加のエラー詳細を ErrorInfo フィールドに格納します。
ErrorInfo には次のフィールドがあります:
reason: エラーの簡単な説明を提供する文字列。次のセクションでは、各サービスにおけるreasonの可能な値について説明します。domain: エラーの原因を示す文字列。ScalarDB Cluster gRPC API では、この文字 列は常にcom.scalar.db.clusterに設定されます。metadata: 特定のエラーのメタデータのマップ。ScalarDB Cluster gRPC API では、エラーがトランザクションに関連している場合、マップにtransactionIdキーを持つトランザクション ID が配置されます。
エラーが発生した場合は、gRPC レスポンスの google.rpc.Status から ErrorInfo を取得できますが、取得方法はプログラミング言語によって異なります。
特定のプログラミング言語で ErrorInfo を取得する方法については、適切なドキュメントを参照してください。
DistributedTransaction サービスの使用方法
DistributedTransaction サービスは次の RPC を提供します:
Begin: トランザクションを開始します。Get: レコードを取得します。Scan: レコードをスキャンします。Put: レコードを配置します。Delete: レコードを削除します。Mutate複数のレコードを変更 (配置および削除) します。Commit: トランザクションをコミットします。Rollback: トランザクションをロールバックします。
まず、Begin を呼び出してトランザクションを開始します。
次に、Get と Scan を呼び出してレコードを読み取り、Put と Mutate を呼び出してレコードを書き込み、Delete と Mutate を呼び出してレコードを削除します。
トランザクションを終了するには、Commit を呼び出します。あるいは、トランザクションがコミットされる前にいつでも Rollback を呼び出してキャンセルできます。Begin を呼び出すと、応答でトランザクション ID を受け取ります。これを使用して、Get、Scan、Put、Delete、Mutate、Commit、および Rollback を呼び出すことができます。
Begin を呼び出すときに、オプションでトランザクション ID を指定できます。トランザクション ID を指定する場合、ユーザーは ID の一意性を保証する責任があります。トランザクション ID を指定しない場合は、ScalarDB Cluster がトランザクションのトランザクション ID を生成します。
RPC リクエストごとに RequestHeader を設定する必要があります。RequestHeader には、リクエストのホップ数を制限している hop_limit フィールドが含まれています。hop_limit の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、hop_limit は1つ減少します。hop_limit が0に達すると、リクエストは拒否されます。