目標
このチュートリアルでは、Java 用の Spanner クライアント ライブラリを使用する以下の手順について説明します。
- Spanner のインスタンスとデータベースを作成します。
- データベースのデータに対し、書き込み、読み取り、SQL クエリの実行を行います。
- データベース スキーマを更新します。
- 読み取り / 書き込みトランザクションを使用してデータを更新します。
- セカンダリ インデックスをデータベースに追加します。
- インデックスを使用して、データの読み込みと SQL クエリの実行を行います。
- 読み取り専用トランザクションを使用してデータを取得します。
費用
このチュートリアルでは、Google Cloudの課金対象コンポーネントである Spanner を使用します。Spanner の使用料金については、料金についてのページをご覧ください。
始める前に
設定で説明されている手順を終わらせておきます。この手順では、デフォルトの Google Cloud プロジェクトの作成と設定、課金の有効化、Cloud Spanner API の有効化、Cloud Spanner API の使用に必要な認証情報を取得するための OAuth 2.0 の設定を行います。
特に、gcloud auth
application-default login を使用したローカル開発環境の認証情報の設定は必ず行ってください。
ローカルの Java 環境を準備する
開発マシンに次のものがまだインストールされていない場合はインストールします。
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/googleapis/java-spanner.gitSpanner のサンプルコードが含まれるディレクトリに移動します。
cd java-spanner/samples/snippetsサンプル JAR ファイルを生成します。
mvn clean package
インスタンスを作成する
Spanner を最初に使用する際は、インスタンスを作成する必要があります。インスタンスとは、Spanner データベースによって使用されるリソースの割り当てのことです。インスタンスの作成時には、インスタンス構成を選択してデータの格納場所を指定し、さらに使用するノード数も選択してインスタンスの配信リソースおよびストレージ リソースの量を決定します。
次のいずれかの方法で Spanner インスタンスを作成する方法については、インスタンスを作成するをご覧ください。インスタンスに test-instance という名前を付けることで、このドキュメント内の他のトピックで test-instance という名前のインスタンスを参照している箇所と関連付けて使用できます。
- Google Cloud CLI
- Google Cloud コンソール
- クライアント ライブラリ(C++、C#、Go、Java、Node.js、PHP、Python、Ruby)
サンプル ファイルを確認する
サンプル リポジトリには、C# で Java を使用する方法を示すサンプルが含まれています。
データベースを作成する
GoogleSQL
java -jar target/spanner-snippets/spanner-google-cloud-samples.jar \
createdatabase test-instance example-db
PostgreSQL
java -jar target/spanner-snippets/spanner-google-cloud-samples.jar \
createpgdatabase test-instance example-db
以下のように表示されます。
Created database [example-db]
GoogleSQL
PostgreSQL
次のステップでは、データベースにデータを書き込みます。
データベース クライアントを作成する
読み取りまたは書き込みを行うには、まずDatabaseClient を作成する必要があります。DatabaseClient はデータベース接続と考えることができます。Spanner とのすべてのやり取りは DatabaseClient を経由する必要があります。通常はアプリケーション開始時に DatabaseClient を作成し、読み取り、書き込み、トランザクションの実行に DatabaseClient を再利用します。
クライアントごとに Spanner のリソースを使用するため、close() を呼び出して不要なクライアントを閉じることをおすすめします。
詳細については、DatabaseClient Javadoc リファレンスをご覧ください。
DML を使用してデータを書き込む
読み取り / 書き込みトランザクションでデータ操作言語(DML)を使用してデータを挿入できます。
executeUpdate() メソッドを使用して DML ステートメントを実行します。
writeusingdml 引数を使用してサンプルを実行します。
java -jar target/spanner-snippets/spanner-google-cloud-samples.