使用可能なインターフェース
Spanner を操作する際は、複数あるプログラマティック インターフェースのいずれかを利用できます。次に、利用可能なインターフェースを、利用をおすすめする順に示します。
- クライアント ライブラリ: Spanner クライアント ライブラリは複数の言語で利用可能で、gRPC で構築されています。gRPC に抽象化レイヤを提供し、セッション管理、トランザクション実行、再試行などの詳細を処理します。
- ORM とフレームワーク ドライバ: Google では、JDBC など、いくつかの一般的なオブジェクト リレーショナル マッピング ライブラリ(ORM)とフレームワークに対して、オープンソースの Spanner ドライバをサポートしています。これらのドライバは、こうしたフレームワークで定義された API を介して Spanner データベースを使用できます。
- RPC API: 使用しているプログラミング言語に対応したクライアント ライブラリや ORM ドライバがない場合は、gRPC で構築された RPC API を使用します。gRPC は、REST API と比較してパフォーマンス上のメリットが多数あります。これには、プロトコル バッファ形式でのオブジェクトの表現(JSON と比較して作成とコンシュームが高速である)、永続接続(これによりリクエストあたりのオーバーヘッドが少なくなる)などがあります。gRPC のコンセプトでこのようなメリットおよびその他のメリットに関する詳細をお読みください。
- REST API: Spanner のクライアント ライブラリまたは RPC API を使用できない場合は、REST API を使用してください。RPC API で利用可能ないくつかの機能が REST API ではサポートされていない点に注意してください。この点については以下で説明します。
RPC と REST API
次の表は、RPC API と REST API のインターフェースで使用可能な Spanner の機能を比較したものです。
特徴 | RPC API でのサポート | REST API でのサポート |
---|---|---|
リクエストの取り消し | ○ | × |
リクエストでの期限やタイムアウトの設定 | ○ | × |
ストリーミング リクエストの送信 | はい。ExecuteStreamingSQL と StreamingRead をご覧ください。 |
部分的。HTTP ストリーミングはサポートされていますが、アプリケーション レベルのフロー制御はサポートされていません。 |
クライアント ライブラリの機能のサポート
次の表に、クライアント ライブラリと、それぞれがサポートする Spanner の主な機能を示します。