データ プレースメントの作成と管理

このページでは、Spanner でデータ プレースメントを作成して管理する方法について説明します。

地域別パーティショニングの仕組みの詳細については、地域別パーティショニングの概要をご覧ください。

データ プレースメントを作成する

Spanner インスタンス パーティションデータベースを作成したら、プレースメントを作成します。

コンソール

  1. Google Cloud コンソールの [インスタンス] ページに移動します。

    インスタンス

  2. ユーザーが作成したインスタンス パーティションがあるインスタンスを選択します。

  3. データをパーティショニングするデータベースを選択します。

  4. ナビゲーション メニューで [Spanner Studio] をクリックします。

  5. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。

  6. CREATE PLACEMENTGoogleSQLPostgreSQL)DDL ステートメントを入力します。

    たとえば、次のコマンドを実行して、インスタンス パーティション europe-partition にプレースメント テーブル europeplacement を作成できます。

    GoogleSQL

    CREATE PLACEMENT `europeplacement` OPTIONS (instance_partition="europe-partition");
    

    PostgreSQL

    CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
    

    省略可: [オブジェクト エクスプローラ] ペインを使用して、プレースメント オブジェクトを表示、検索、操作することもできます。詳細については、データを探索するをご覧ください。

  7. [実行] をクリックします。

gcloud

gcloud CLI コマンドを使用してプレースメントを作成するには、gcloud spanner databases ddl update を使用します。

たとえば、インスタンス パーティション europe-partition にプレースメントを作成します。

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"

プレースメントのデフォルトのリーダーを設定する

ロケーションがデュアルリージョンまたはマルチリージョンにある場合、プレースメントのデフォルトのリーダー リージョンを設定できます。新しいリーダー リージョンは、デュアルリージョンまたはマルチリージョンのプレースメント ロケーション内の 2 つの読み取り / 書き込みリージョンのいずれか 1 つである必要があります。詳細については、デュアルリージョンで有効な構成マルチリージョンで有効な構成の表をご覧ください。

リーダー リージョンを設定しない場合は、プレースメントのロケーションで指定されているデフォルトのリーダー リージョンが使用されます。デュアルリージョンまたはマルチリージョンのロケーションごとのリーダー リージョンの一覧については、デュアルリージョンで有効な構成マルチリージョンで有効な構成の表をご覧ください。デフォルトのリーダー リージョンは L で表されます。たとえば、nam8 のデフォルトのリーダー リージョンはロサンゼルス(us-west2)にあります。次の手順では、これをオレゴン(us-west1)に設定する方法について説明します。

コンソール

  1. Google Cloud コンソールの [インスタンス] ページに移動します。

    インスタンス

  2. ユーザーが作成したインスタンス パーティションがあるインスタンスを選択します。

  3. データをパーティショニングするデータベースを選択します。

  4. ナビゲーション メニューで [Spanner Studio] をクリックします。

  5. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。

  6. CREATE PLACEMENTGoogleSQLPostgreSQL)DDL ステートメントを入力します。

    たとえば、次のコマンドを実行して、インスタンス パーティション nam8-partition にプレースメント テーブル nam8placement を作成し、デフォルトのリーダー ロケーションを us-west1 に設定します。

    GoogleSQL

    CREATE PLACEMENT `nam8placement`
      OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
    

    PostgreSQL

    CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
    

    省略可: [オブジェクト エクスプローラ] ペインを使用して、プレースメント オブジェクトを表示、検索、操作することもできます。詳細については、データを探索するをご覧ください。

  7. [実行] をクリックします。

gcloud

gcloud CLI コマンドを使用してプレースメントを作成するには、gcloud spanner databases ddl update を使用します。

たとえば、インスタンス パーティション nam8-partition にプレースメント テーブル nam8placement を作成し、デフォルトのリーダー ロケーションを us-west1 として設定します。

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement \
     OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"

データ プレースメントを削除する

プレースメントを削除することはできません。プレースメントとそれに関連するデータを削除するには、データベースを削除する必要があります。詳細については、データベースを削除するをご覧ください。

プレースメント キーを使用してテーブルを作成する

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. CREATE TABLEGoogleSQLPostgreSQL)DDL ステートメントを入力します。

    たとえば、プレースメント キーを使用して歌手データをパーティショニングする Singers テーブルを作成できます。

    GoogleSQL

    CREATE TABLE Singers (
      SingerId INT64 NOT NULL,
      SingerName STRING(MAX) NOT NULL,
      ...
      Location STRING(MAX) NOT NULL PLACEMENT KEY
    ) PRIMARY KEY (SingerId);
    

    PostgreSQL

    CREATE TABLE Singers (
      SingerId bigint PRIMARY KEY,
      SingerName varchar(1024),
      ...
      Location varchar(1024) NOT NULL PLACEMENT KEY
    );
    

gcloud

テーブルを作成するには、gcloud spanner databases ddl update を使用します。

たとえば、プレースメント キーを使用して歌手データをパーティショニングする Singers テーブルを作成できます。

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"

プレースメント キーを使用してテーブルを編集する

プレースメント キーをテーブルから削除することはできません。また、テーブルの作成後にプレースメント キーをテーブルに追加することもできません。ただし、ALTER TABLEGoogleSQLPostgreSQL)DDL ステートメントを使用して、プレースメント以外のキー列の追加や削除などにより、テーブル内の他のフィールドを変更することはできます。

プレースメント キーを使用してテーブルを削除する

プレースメント キーを含むテーブルを削除する前に、まず次の操作を行う必要があります。

  1. テーブル内のすべての行を削除する。
  2. データベースの version_retention_period が合格するまで待つ。詳しくは、ポイントインタイム リカバリをご覧ください。次に、以下の手順で操作します。

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. DROP TABLEGoogleSQLPostgreSQL)DDL ステートメントを入力します。

    たとえば、Singers テーブルを削除します。

    DROP TABLE Singers;
    

gcloud

テーブルを削除するには、gcloud spanner databases ddl update を使用します。

たとえば、Singers テーブルを削除します。

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"

プレースメント テーブルに行を挿入する

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. INSERT INTOGoogleSQLPostgreSQL)DDL ステートメントを入力します。

    たとえば、歌手 Marc Richards を Singers テーブルに追加し、europeplacement でパーティショニングします。

    INSERT INTO Singers(SingerId, SingerName, Location)
    VALUES (1, 'Marc Richards', 'europeplacement')
    

gcloud

テーブルにデータを書き込むには、gcloud spanner rows insert を使用します。

たとえば、歌手 Marc Richards を Singers テーブルに追加し、europeplacement でパーティショニングします。

gcloud spanner rows insert --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'

プレースメント テーブルの行を更新する

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. DML またはミューテーションを使用して、プレースメント テーブルのデータを更新します。

    たとえば、Singers テーブルの singerid=1 の名前を Catalina Smith に更新します。

    UPDATE Singers s
    SET s.name='Catalina Smith'
    WHERE s.id=1;
    

gcloud

プレースメント テーブルのデータを更新するには、gcloud spanner rows update を使用します。

たとえば、Singers テーブルの singerid=1 の名前を Catalina Smith に更新します。

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'

プレースメント テーブルの行を移動する

コンソール

  1. 新しいインスタンス パーティションとプレースメントをまだ作成していない場合は作成します。
  2. ナビゲーション メニューで [Spanner Studio] をクリックします。
  3. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  4. DML またはミューテーションを使用して、データを新しいパーティションに移動します。

    たとえば、Singers テーブルの singerid=1asiaplacement に移動します。

    UPDATE Singers s
    SET s.location='asiaplacement'
    WHERE s.id=1;
    

gcloud

データを移動するインスタンス パーティションとプレースメントを作成したら、gcloud spanner rows update を使用します。

たとえば、Singers テーブルの singerid=1asiaplacement に移動します。

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,Location='asiaplacement'

プレースメント テーブルの行を削除する

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. DML またはミューテーションを使用してデータを削除します。

    たとえば、Singers テーブルの singerid=1 を削除します。

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

データを削除するには、gcloud spanner rows delete を使用します。

たとえば、Singers テーブルの singerid=1 を削除します。

gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1

プレースメント テーブルのデータをクエリする

コンソール

  1. ナビゲーション メニューで [Spanner Studio] をクリックします。
  2. [Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
  3. クエリを実行します。

    たとえば、Singers テーブルに対してクエリを実行します。

    SELECT * FROM Singers s WHERE s.SingerId=1;
    

gcloud

データをクエリするには、gcloud spanner databases execute-sql を使用します。

たとえば、Singers テーブルに対してクエリを実行します。

gcloud spanner databases execute-sql example-db \
  --sql='SELECT * FROM Singers s WHERE s.SingerId=1'

次のステップ