Google Cloud コンソールを使用してデータベースを作成してクエリを実行する

このクイックスタートでは、Google Cloud コンソールを使用して Spanner の基本オペレーションを行う方法について説明します。このクイックスタートでは、以下の操作を行います。

  • Spanner インスタンスを作成する
  • データベースを作成します。
  • スキーマを作成します。
  • データを挿入し変更します。
  • クエリを実行する。

Spanner を使用する料金については、料金をご覧ください。

準備

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. 省略可: Spanner API が自動的に有効になります。それ以外の場合は、手動で有効にします。

    Spanner API を有効にする
  1. インスタンスとデータベースを作成するために必要な権限を取得するには、プロジェクトに対する Cloud Spanner 管理者(roles/spanner.admin)IAM ロールの付与を管理者に依頼してください。

インスタンスを作成する

Spanner を初めて使用するときは、インスタンスを作成する必要があります。これにより、そのインスタンスの Spanner データベースによって使用されるリソースが割り当てられます。

  1. Google Cloud コンソールで、[Spanner] ページに移動します。

    Spanner に移動

  2. Google Cloud プロジェクトを選択するか、新しく作成します(まだ作成していない場合)。

  3. [Spanner] ページで、[プロビジョニングされたインスタンスを作成する] をクリックします。

    以前に Spanner を使用したことがある場合は、プロダクト ページの代わりに Spanner の [インスタンス] ページが表示されます。[インスタンスを作成] をクリックします。

  4. [インスタンスに名前を付ける] ページで、「テスト インスタンス」などのインスタンス名を入力します。

  5. インスタンス ID は、例えば test-instance など、インスタンス名に基づき自動的に入力されます。必要に応じて変更します。[続行] をクリックします。

  6. [インスタンスの構成] ページで、デフォルトのオプション [リージョン] を保持し、プルダウン メニューから構成を選択します。

    インスタンスの構成により、インスタンスが保存および複製される地理的なロケーションが決まります。

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

  8. [コンピューティング容量の割り当て] ページで、[処理ユニット(PU)] を選択し、デフォルト値の 1,000 処理ユニットのままにします。

  9. [作成] をクリックします。

    Google Cloud コンソールに、作成したインスタンスの [概要] ページが表示されます。

データベースの作成

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

    Spanner インスタンスに移動

  2. テスト インスタンスなどの作成したインスタンスをクリックします。

  3. 開いたインスタンスの [概要] ページで、[データベースを作成する] をクリックします。

  4. データベース名には、example-db などの名前を入力します。

  5. データベース言語を選択します。

    PostgreSQL のサポートや、言語の選択に関するガイダンスについては、PostgreSQL Interface をご覧ください。 Google SQL を選択した場合、このクイックスタートの次のセクションの [スキーマを定義する] テキスト フィールドでスキーマを定義します。

    データベース作成ページは次のようになります。

    更新されたデータベース作成ウィンドウ。

  6. [作成] をクリックします。

    Cloud Console に、作成したデータベースの [概要] ページが表示されます。

データベースのスキーマの作成

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

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

  3. 次のように入力します。

    GoogleSQL

    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX),
      BirthDate  DATE
    ) PRIMARY KEY(SingerId);
    

    PostgreSQL

    CREATE TABLE Singers (
      BirthDate  TIMESTAMPTZ,
      SingerId   BIGINT PRIMARY KEY,
      FirstName  VARCHAR(1024),
      LastName   VARCHAR(1024),
      SingerInfo BYTEA
    );
    
  4. [実行] をクリックします。

    Google Cloud コンソールがデータベースの [概要] ページに戻り、[スキーマの更新] が進行中であることが表示されます。更新が完了すると、次のようなページが表示されます。

    GoogleSQL

    更新された概要ページ。

    PostgreSQL

    更新された概要ページ。

    PostgreSQL でテーブル名が小文字に変換されていることに注意します。

データの挿入と変更

Google Cloud Console には、データを挿入、編集、削除するためのインターフェースがあります。

データの挿入

  1. データベースの [概要] ページのテーブルで、Singers テーブルをクリックします。

    Google Cloud Console に Singers テーブルの [スキーマ] ページが表示されます。

  2. ナビゲーション・メニューで、[データ] をクリックして、Singers テーブルの [データ] ページを表示します。

  3. [挿入] をクリックします。

    Google Cloud コンソールには、Singers テーブルに行を挿入し、その挿入の結果を表示するために編集する INSERT ステートメントと SELECT ステートメントを含む新しいクエリタブを有する、Singers テーブルの [Spanner Studio] ページが表示されます。

    GoogleSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      Singers (SingerId,
        BirthDate,
        FirstName,
        LastName,
        SingerInfo)
    VALUES
      (<SingerId>, -- type: INT64
        <BirthDate>, -- type: DATE
        <FirstName>, -- type: STRING(1024)
        <LastName>, -- type: STRING(1024)
        <SingerInfo> -- type: BYTES(MAX)
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=<SingerId>;
    

    PostgreSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      singers (singerid,
        birthdate,
        firstname,
        lastname,
        singerinfo)
    VALUES
      (<singerid>, -- type: bigint
        <birthdate>, -- type: timestamp with time zone
        <firstname>, -- type: character varying
        <lastname>, -- type: character varying
        <singerinfo> -- type: bytea
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      singers
    WHERE
      singerid=<singerid>;
    

    なお、PostgreSQL では、列名がすべて小文字に変換されます。

  4. INSERT ステートメントの VALUES 句と SELECT ステートメントの WHERE 句を編集します。

    GoogleSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      Singers (SingerId,
        BirthDate,
        FirstName,
        LastName,
        SingerInfo)
    VALUES
      (1, -- type: INT64
        NULL, -- type: DATE
        'Marc', -- type: STRING(1024)
        'Richards', -- type: STRING(1024)
        NULL -- type: BYTES(MAX)
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=1;
    

    PostgreSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      singers (singerid,
        birthdate,
        firstname,
        lastname,
        singerinfo)
    VALUES
      (1, -- type: bigint
        NULL, -- type: timestamp with time zone
        'Marc', -- type: character varying
        'Richards', -- type: character varying
        NULL -- type: bytea
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      singers
    WHERE
      singerid=1;
    
  5. [実行] をクリックします。

    Spanner により、ステートメントが実行されます。 完了すると、[結果] タブでは、最初のステートメントで 1 行が挿入されたことと、テーブルのデータを表示するリンクが示されます。

  6. [結果] タブで、[テーブル] リンクをクリックします。Singers テーブルに行が 1 つ追加されました。

    GoogleSQL

    1 行で構成される更新された Singers テーブルデータ。

    PostgreSQL

    1 行で構成される更新された Singers テーブルデータ。

  7. [挿入] をクリックして別の行を追加します。

    Google Cloud コンソールには、同じ INSERT ステートメントと SELECT ステートメントを含む新しいクエリタブを有する Singers テーブルの [Spanner Studio] ページが再表示されます。

  8. INSERT ステートメントの VALUES 句と SELECT ステートメントの WHERE 句を編集します。

    GoogleSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      Singers (SingerId,
        BirthDate,
        FirstName,
        LastName,
        SingerInfo)
    VALUES
      (2, -- type: INT64
        NULL, -- type: DATE
        'Catalina', -- type: STRING(1024)
        'Smith', -- type: STRING(1024)
        NULL -- type: BYTES(MAX)
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=2;
    

    PostgreSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      singers (singerid,
        birthdate,
        firstname,
        lastname,
        singerinfo)
    VALUES
      (2, -- type: bigint
        NULL, -- type: timestamp with time zone
        'Catalina', -- type: character varying
        'Smith', -- type: character varying
        NULL -- type: bytea
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      singers
    WHERE
      singerid=2;
    
  9. [実行] をクリックします。

    Spanner によりステートメントが実行されると、[結果] タブには、最初のステートメントによって 1 行挿入されたことが示されます。

  10. テーブルのリンクをクリックします。Singers テーブルの行が 2 つになりました。

    GoogleSQL

    2 行で構成される更新された Singers テーブルデータ。

    PostgreSQL

    2 行で構成される更新された Singers テーブルデータ。

また、データを入力するときに、空の文字列値を挿入することもできます。

  1. [挿入] をクリックして行を追加します。

    Cloud Spanner には、同じ INSERT ステートメントと SELECT ステートメントを含む新しいクエリタブを有する Singers テーブルの Spanner Studio ページが再表示されます。

  2. テンプレートの INSERT ステートメントの VALUES 句と、SELECT ステートメントの WHERE 句を編集します。

    GoogleSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      Singers (SingerId,
        BirthDate,
        FirstName,
        LastName,
        SingerInfo)
    VALUES
      (3, -- type: INT64
        NULL, -- type: DATE
        'Kena', -- type: STRING(1024)
        '', -- type: STRING(1024)
        NULL -- type: BYTES(MAX)
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=3;
    

    PostgreSQL

      -- Add new values in the VALUES clause in order of the column list.
      -- Each value must be type compatible with its associated column.
    INSERT INTO
      singers (singerid,
        birthdate,
        firstname,
        lastname,
        singerinfo)
    VALUES
      (3, -- type: bigint
        NULL, -- type: timestamp with time zone
        'Kena', -- type: character varying
        '', -- type: character varying
        NULL -- type: bytea
        );
      -- Change values in the WHERE condition to match the inserted row.
    SELECT
      *
    FROM
      singers
    WHERE
      singerid=3;
    

    なお、姓の列に指定された値は、NULL 値ではなく、空の文字列('')です。

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

    Spanner によりステートメントが実行されると、[結果] タブには、最初のステートメントによって 1 行挿入されたことが示されます。

  4. テーブルのリンクをクリックします。Singers テーブルには 3 つの行があり、3 の 主キー値を有する行には、LastName 列に空の文字列があります。

    GoogleSQL

    3 行で構成される更新された Singers テーブルデータ。

    PostgreSQL

    3 行で構成される更新された Singers テーブルデータ。

データの編集

  1. Singers テーブルの [データ] ページで、主キーの値で 3 の行にあるチェックボックスをオンにして、[編集] をクリックします。

    Spanner Studio ページに、編集可能なテンプレート UPDATE ステートメントと SET ステートメントを含む新しいタブが表示されます。なお、両方のステートメントの WHERE 句は、更新する行が 3 の主キー値を持つ行であることを示しています。

    GoogleSQL

      -- Change values in the SET clause to update the row where the WHERE condition is true.
    UPDATE
      Singers
    SET
      BirthDate='',
      FirstName='Kena',
      LastName='',
      SingerInfo=''
    WHERE
      SingerId=3;
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=3;
    

    PostgreSQL

      -- Change values in the SET clause to update the row where the WHERE condition is true.
    UPDATE
      singers
    SET
      birthdate=NULL,
      firstname='Kena',
      lastname='',
      singerinfo=NULL
    WHERE
      singerid='3';
    SELECT
      *
    FROM
      singers
    WHERE
      singerid='3';
    
  2. UPDATE ステートメントの SET 句を編集して、生年月日のみを更新します。

    GoogleSQL

      -- Change values in the SET clause to update the row where the WHERE condition is true.
    UPDATE
      Singers
    SET
      BirthDate='1961-04-01'
    WHERE
      SingerId=3;
    SELECT
      *
    FROM
      Singers
    WHERE
      SingerId=3;
    

    PostgreSQL

      -- Change values in the SET clause to update the row where the WHERE condition is true.
    UPDATE
      singers
    SET
      birthdate='1961-04-01 00:00:00 -8:00'
    WHERE
      singerid='3';
    SELECT
      *
    FROM
      singers
    WHERE
      singerid='3';
    
  3. [実行] をクリックします。

    Spanner により、ステートメントが実行されます。 完了すると、[結果] タブでは、最初のステートメントで 1 行が更新されたことと、テーブルのデータを表示するリンクが示されます。

  4. [結果] タブで、[テーブル] リンクをクリックします。

    更新された行には、生年月日の値が入っています。

    GoogleSQL

    更新された行がある更新された Singers テーブルデータ。

    PostgreSQL

    更新された行がある更新された Singers テーブルデータ。

データの削除

  1. Singers テーブルの [データ] ページで、最初の列の 2 が含まれる行のチェックボックスをオンにして、[削除] をクリックします。
  2. 表示されるダイアログで [確認] をクリックします。

    Singers テーブルの行が 2 つになりました。

    GoogleSQL

    2 行で構成される更新された Singers テーブルデータ。SingerId 2 の行が消えました。

    PostgreSQL

    2 行で構成される更新された Singers テーブルデータ。SingerId 2 の行が消えました。

クエリの実行

  1. データベースの [概要] ページで、ナビゲーション メニューの [Spanner Studio] をクリックします。

  2. [新しいタブ] をクリックして、新しいクエリタブを作成します。次に、クエリエディタに以下のクエリを入力します。

    GoogleSQL

    SELECT * FROM Singers;
    

    PostgreSQL

    SELECT * FROM singers;
    
  3. [実行] をクリックします。

    Spanner がクエリを実行します。完了すると、[結果] タブにクエリの結果が表示されます。

    GoogleSQL

    クエリ結果。

    PostgreSQL

    クエリ結果。

これで完了です。クエリエディタを使用して、正常にSpanner データベースを作成し、SQL ステートメントを実行することができました。

クリーンアップ

Cloud 請求先アカウントにこれ以上料金が発生しないようにするには、作成したデータベースとインスタンスを削除します。インスタンスを削除すると、そのインスタンス内に作成されたすべてのデータベースが自動的に削除されます。

データベースの削除

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

    Spanner インスタンスに移動

  2. テスト・インスタンスなど、削除するデータベースがあるインスタンスの名前をクリックします。

  3. example-db など、削除するデータベースの名前をクリックします。

  4. [データベースの詳細] ページで、[データベースを削除する] をクリックします。

  5. データベース名を入力して [削除] をクリックし、データベースを削除することを確認します。

インスタンスの削除

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

    Spanner インスタンスに移動

  2. [テスト インスタンス] など、削除するインスタンスの名前をクリックします。

  3. [インスタンスを削除する] をクリックします。

  4. インスタンス名を入力し [削除] をクリックして、インスタンスを削除することを確認します。

次のステップ