このページでは、Spanner データベースを作成して管理する方法について説明します。
- データベースを作成するさまざまな方法
- データベース オプションを変更する
- データベースを削除する
このページには、GoogleSQL 言語データベースと PostgreSQL 言語データベースの両方の情報が記載されています。データベース スキーマを更新する方法については、スキーマを更新するをご覧ください。インスタンスの作成の詳細については、インスタンスの作成と管理をご覧ください。既存のインスタンスにデータベースを作成するには、次のいずれかの方法を使用します。
- データベースを作成する: SQL 言語を選択し、スキーマを定義して、新しいデータベースを作成できます。
- 独自のデータをインポートする: CSV、MySQL ダンプ、PostgreSQL ダンプファイルを新しいデータベースまたは既存のデータベースにインポートできます。
- サンプルデータでデータベースを作成する: 使用可能なサンプル データセットのいずれかを使用してデータベースにデータを入力し、Spanner の機能を試すことができます。
データベースの作成
既存のインスタンスに新しいデータベースを作成できます。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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
独自のデータをインポート
CSV ファイル、MySQL ダンプファイル、PostgreSQL ダンプファイルを使用して、独自のデータを Spanner データベースにインポートできます。Cloud Storage を使用して、または Cloud Storage バケットから直接、ローカル ファイルをアップロードできます。Cloud Storage を使用してローカル ファイルをアップロードすると、料金が発生する場合があります。
CSV ファイルを使用する場合は、データベース スキーマを含む別の JSON ファイルもアップロードする必要があります。
Google Cloud コンソール
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
データベースを作成するインスタンスを選択します。
[独自のデータをインポート] をクリックします。
次の値を入力します。
[ファイル形式] を選択します。
パソコンからファイルをアップロードするか、ファイルへの Cloud Storage バケットパスを選択します。
(省略可)CSV ファイルを使用する場合は、データベース スキーマを含む別の JSON ファイルもアップロードする必要があります。JSON ファイルでは、スキーマを定義するために次の構造を使用する必要があります。
{ "name": "COLUMN_NAME", "type": "TYPE", "notNull": NOT_NULL_VALUE, "primaryKeyOrder": PRIMARY_KEY_ORDER }
次のように置き換えます。
COLUMN_NAME: テーブルの列の名前。
TYPE: 列のデータ型。
(省略可)NOT_NULL_VALUE: 列に null 値を格納できるかどうか。有効な入力は
true
またはfalse
です。デフォルトはfalse
です。(省略可): PRIMARY_KEY_ORDER: 主キーの順序を決定します。主キー以外の列の場合、値は
0
に設定されます。値を整数に設定します。たとえば、主キー列の場合は1
です。番号の小さい列は、複合主キーの早い段階で表示されます。
CSV ファイルでは、デフォルトでフィールド区切り文字にカンマ、行区切り文字に改行が使用されます。カスタム区切り文字の使用について詳しくは、
gcloud alpha spanner databases import
リファレンスをご覧ください。宛先として新しいデータベースまたは既存のデータベースを選択します。
[インポート] をクリックします。
Spanner は Cloud Shell を開き、Spanner 移行ツールをインストールして
gcloud alpha spanner databases import
コマンドを実行するコマンドを入力します。ENTER
キーを押して、データベースにデータをインポートします。
サンプル データセットを使用する
既存のインスタンスに新しいデータベースを作成し、サンプル データセットからデータを入力できます。サンプル データセットは、リレーショナル モデル、全文検索、ベクトル検索などの Spanner の機能を試すのに役立ちます。
Google Cloud コンソール
Google Cloud コンソールで、[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 リファレンスを確認する。
- データベースのバックアップと復元の方法を確認する。
- データベースが誤って削除されることを防止する方法を確認する。
- スキーマを更新する方法を確認する。