このページでは、Spanner データベースの管理方法(データベースの作成、データベース オプションの変更、データベースの削除など)について説明します。このページには、GoogleSQL 言語データベースおよび PostgreSQL 言語データベースの情報が記載されています。データベース スキーマを更新する方法については、スキーマを更新するをご覧ください。
データベースの作成とサンプルデータの読み込みを練習するには、Spanner データベース Codelab をご覧ください。
データベースを作成する
以下の例で示すのは、既存のインスタンスにデータベースを作成する方法です。
GoogleSQL 言語データベースの場合、データベース スキーマの定義は、データベースの作成時またはデータベースの作成後に行えます。PostgreSQL 言語データベースの場合は、作成後にスキーマを定義する必要があります。
スキーマはデータベース定義言語を使用して定義します。これは GoogleSQL 用と PostgreSQL 用にドキュメント化されています。スキーマの作成と更新の詳細については、次のリンク先をご覧ください。
データベースの作成後にデータベースの削除保護を有効にすれば、アプリケーションとサービスにとって重要なデータベースを保護できます。詳細については、データベースが誤って削除されることを防止をご覧ください。
Google Cloud コンソール
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
データベースを作成するインスタンスを選択します。
[データベースを作成] をクリックします。
次の値を入力します。
- Google Cloud コンソールに表示するデータベース名。
- このデータベースで使用する言語。
- GoogleSQL 言語データベースの場合、スキーマを定義する一連の DDL ステートメントを必要に応じて指定します。DDL テンプレートを使用すると、一般的な要素を事前入力できます。DDL ステートメントにエラーがある場合、 Google Cloud コンソールでデータベースを作成しようとするとエラーが返されます。
- 必要に応じて、このデータベースで使用する顧客管理の暗号鍵を選択します。
[作成] をクリックしてデータベースを作成します。
gcloud
gcloud spanner databases create
コマンドを使用します。
```sh
gcloud spanner databases create DATABASE \
--instance=INSTANCE \
[--async] \
[--database-dialect=DATABASE_DIALECT] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \
[--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
[GCLOUD_WIDE_FLAG …]
```
次のオプションは必須です。
DATABASE
- データベース ID またはデータベースの完全修飾 ID。完全修飾識別子を指定する場合は、
--instance
フラグを省略できます。 --instance=INSTANCE
- データベースの Spanner インスタンス。
次のオプションは省略可能です。
--async
- 処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。
--database-dialect=DATABASE_DIALECT
- Spanner データベースの SQL 言語。
POSTGRESQL
またはGOOGLE_STANDARD_SQL
にする必要があります。 --ddl=DDL
- 新しく作成されたデータベース内で実行するセミコロン区切りの DDL(データ定義言語)ステートメント。いずれかのステートメントにエラーがある場合、データベースは作成されません。
--ddl_file
が設定されていると、このフラグは無視されます。PostgreSQL 言語データベースではサポートされていません。 --ddl-file=DDL_FILE
- 新しく作成されたデータベース内で実行するセミコロン区切りの DDL(データ定義言語)ステートメントを含むファイルのパス。いずれかのステートメントにエラーがある場合、データベースは作成されません。
--ddl_file
が設定されていると、--ddl
は無視されます。PostgreSQL 言語データベースではサポートされていません。
データベースの作成時に使用する Cloud Key Management Service 鍵を指定する場合は、次のオプションを含めます。
--kms-key=KMS_KEY
- 鍵の ID または鍵の完全修飾 ID。
このグループの他の引数を指定する場合は、このフラグを指定する必要があります。完全修飾 ID が指定されている場合は、他の引数を省略できます。
--kms-keyring=KMS_KEYRING
- 鍵の Cloud KMS キーリング ID。
--kms-location=KMS_LOCATION
- Google Cloud 鍵のロケーション。
--kms-project=KMS_PROJECT
- Google Cloud 鍵のプロジェクト ID。
クライアント(GoogleSQL)
C++
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。
Spanner に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
データベース スキーマまたはオプションを更新する
データベース スキーマとオプションは、DDL ステートメントを使用して更新できます。
たとえば、テーブルに列を追加するには、次の DDL ステートメントを使用します。
GoogleSQL
ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);
PostgreSQL
ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);
クエリ オプティマイザーのバージョンを更新するには、次の DDL ステートメントを使用します。
GoogleSQL
ALTER DATABASE Music SET OPTIONS(optimizer_version=null);
PostgreSQL
ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;
サポートされているオプションの詳細については、GoogleSQL の DDL リファレンスまたは PostgreSQL の ALTER DATABASE
DDL リファレンスをご覧ください。
スキーマの更新については、スキーマの更新をご覧ください。
Google Cloud コンソール
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
変更するデータベースのあるインスタンスを選択します。
データベースを選択します。
[Spanner Studio] をクリックします。
[新しいタブ] をクリックするか、空のエディタタブを使用します。次に、適用する DDL ステートメントを入力します。
[実行] をクリックして更新を適用します。DDL にエラーがある場合は Google Cloud コンソールからエラーが返され、データベースは変更されません。
gcloud
gcloud
コマンドライン ツールでデータベースを変更するには、gcloud spanner databases ddl update
を使用します。
gcloud spanner databases ddl update \ (DATABASE : --instance=INSTANCE) \ [--async] \ [--ddl=DDL] \ [--ddl-file=DDL_FILE] \
使用可能なオプションの詳細については、gcloud
リファレンスをご覧ください。
--ddl
フラグまたは --ddl-file
フラグを使用して、データベースの更新をコマンドに渡します。DDL ファイルが指定されている場合、--ddl
フラグは無視されます。
使用する DDL ステートメントについては、GoogleSQL か PostgreSQL の ALTER DATABASE
DDL リファレンスを参照してください。
DDL
詳細については、GoogleSQL または PostgreSQL の ALTER DATABASE
DDL リファレンスをご覧ください。
スキーマ更新オペレーションの進行状況を確認する
Google Cloud コンソール
Spanner のナビゲーション メニューで [オペレーション] タブをクリックします。[オペレーション] ページに、現在実行中のオペレーションのリストが表示されます。
リストからスキーマ オペレーションを見つけます。まだ実行中の場合、次の画像のように、完了しているオペレーションの割合が [終了時刻] 列の進行状況インジケーターに表示されます。
gcloud
gcloud spanner operations describe
を使用してオペレーションの進行状況を確認します。
オペレーション ID を取得します。
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
次のように置き換えます。
- INSTANCE-NAME は、Spanner インスタンス名に置き換えます。
- DATABASE-NAME は、データベースの名前に置き換えます。
gcloud spanner operations describe
を実行します。gcloud spanner operations describe OPERATION_ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
次のように置き換えます。
- OPERATION-ID: 確認するオペレーションのオペレーション ID。
- INSTANCE-NAME: Spanner インスタンス名。
- DATABASE-NAME: Spanner データベース名。
出力の
progress
セクションに、完了したオペレーションの割合が表示されます。出力は次のようになります。done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
REST v1
オペレーション ID を取得します。
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
次のように置き換えます。
- INSTANCE-NAME は、Spanner インスタンス名に置き換えます。
- DATABASE-NAME は、データベース名に置き換えます。
オペレーションの進行状況を確認します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT-ID: プロジェクト ID。
- INSTANCE-ID: インスタンス ID。
- DATABASE-ID: データベース ID。
- OPERATION-ID: オペレーション ID。
HTTP メソッドと URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
オペレーションに時間がかかりすぎる場合はキャンセルできます。詳細については、長時間実行データベース オペレーションをキャンセルするをご覧ください。
データベースを削除する
データベースを完全に削除すると、データベースとそのデータがすべて削除されます。データベースの削除は取り消しできません。データベースでデータベースの削除保護が有効になっている場合、削除保護を無効にするまでそのデータベースを削除することはできません。
データベースが削除されても、既存のバックアップは削除されません。詳細については、バックアップと復元をご覧ください。
Google Cloud コンソール
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
削除するデータベースのあるインスタンスを選択します。
データベースを選択します。
[データベースを削除] をクリックします。確認を求められるので、
データベース名を入力して [削除] をクリックします。
gcloud
gcloud
コマンドライン ツールでデータベースを削除するには、gcloud spanner databases delete
を使用します。
gcloud spanner databases delete \ (DATABASE : --instance=INSTANCE)
次のオプションは必須です。
DATABASE
- データベース ID またはデータベースの完全修飾 ID。完全修飾 ID を指定する場合は、
--instance
フラグを省略する必要があります。 --instance=INSTANCE
- データベースの Spanner インスタンス。
詳細については、gcloud
リファレンスをご覧ください。
DDL
DDL では、データベース削除の構文がサポートされていません。
次のステップ
- データベースを作成してサンプルデータを読み込む。
- GoogleSQL DDL リファレンスを確認する。
- PostgreSQL DDL リファレンスを確認する。
- データベースのバックアップと復元の方法を確認する。
- データベースが誤って削除されることを防止する方法を確認する。
- スキーマを更新する方法を確認する。