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

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

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

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

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

Console

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

    Instances

  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')"

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

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

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

コンソール

  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 が合格するまで待ちます。詳細については、ポイントインタイム リカバリをご覧ください。次に、次の手順を行います。

Console

  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"

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

Console

  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

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

Console

  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'

次のステップ