このページでは、Spanner データベースの管理方法(データベースの作成、データベース オプションの変更、データベースの削除など)について説明します。データベース スキーマを更新する方法については、スキーマを更新するをご覧ください。
データベースの作成とサンプルデータの読み込みを練習することについては、最初のデータベースの Codelab をご覧ください。
データベースの作成
以下の例では、既存のインスタンスにデータベースを作成する方法を示します。
GoogleSQL 言語データベースの場合、データベース スキーマは、データベースの作成時に定義するか、データベースを作成した後に定義できます。PostgreSQL 言語データベースの場合は、作成後にスキーマを定義する必要があります。
スキーマはデータベース定義言語を使用して定義します。これは GoogleSQL 用と PostgreSQL 用にドキュメント化されています。スキーマの作成と更新の詳細については、次のリンク先をご覧ください。
データベースを作成した後で、データベースの削除保護を有効にすることで、アプリケーションとサービスにとって重要なデータベースを保護できます。詳細については、データベースの誤った削除を防止するをご覧ください。
コンソール
Google Cloud コンソールの [インスタンス] ページに移動します。
データベースを作成するインスタンスを選択します。
[データベースを作成] をクリックします。
次の値を入力します。
- Google Cloud コンソールに表示されるデータベース名。
- このデータベースに使用する言語。
- GoogleSQL 言語データベースの場合は、必要に応じてスキーマを定義する一連の DDL ステートメントを指定します。DDL テンプレートを使用して、一般的な要素を事前入力します。DDL ステートメントにエラーがある場合、Google Cloud コンソールでデータベースを作成しようとすると、エラーが返されます。
- 必要に応じて、このデータベースに使用する顧客管理の暗号鍵を選択します。
[作成] をクリックしてデータベースを作成します。
gcloud
gcloud spanner databases create
コマンドを使用します。
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。完全修飾 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。
このグループの他の引数のいずれかが指定されている場合、このフラグを指定する必要があります。完全修飾識別子が指定されている場合、その他の引数は省略できます。
--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 または PostgreSQL の ALTER DATABASE
DDL リファレンスをご覧ください。
スキーマの更新については、スキーマの更新をご覧ください。
Console
Google Cloud コンソールの [インスタンス] ページに移動します。
変更するデータベースが含まれているインスタンスを選択します。
データベースを選択します。
[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 リファレンスをご覧ください。
スキーマ更新オペレーションの進行状況を確認する
コンソール
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 コンソールの [インスタンス] ページに移動します。
削除するデータベースが含まれているインスタンスを選択します。
データベースを選択します。
[データベースを削除] をクリックします。確認メッセージが表示されます。
データベース名を入力して、[削除] をクリックします。
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 リファレンスをご覧ください。
- データベースのバックアップと復元の方法を確認する。
- データベースの誤削除を防止する方法を確認する。
- スキーマを更新する方法を学習する。