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

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

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

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

準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

    Spanner API を有効にする
  7. インスタンスとデータベースを作成するために必要な権限を取得するには、プロジェクトに対する 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 をご覧ください。 GoogleSQL を選択した場合は、このクイックスタートの次のセクションの [スキーマを定義する] テキスト フィールドでスキーマを定義します。

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

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

  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 には、編集できるテンプレート UPDATESET ステートメントを含む新しいタブがある [Spanner Studio] ページが表示されます。なお、両方のステートメントの 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. インスタンス名を入力し [削除] をクリックして、インスタンスを削除することを確認します。

次のステップ