このクイックスタートでは、 Google Cloud コンソールを使って Spanner の基本的な操作を行う方法を説明します。このクイックスタートでは、以下を行います。
- Spanner インスタンスを作成する。
- データベースを作成する。
- スキーマを作成する。
- データを挿入、変更する。
- クエリを実行する。
Spanner の使用料金については、料金についてのページをご覧ください。
始める前に
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 省略可: 通常、Spanner API は自動的に有効になります。それ以外の場合は、手動で有効にします。Spanner API を有効にする
-
インスタンスとデータベースを作成するために必要な権限を取得するには、プロジェクトに対する Cloud Spanner 管理者(roles/spanner.admin)IAM ロールの付与を管理者に依頼してください。
Google Cloud コンソールで、[Spanner] ページに移動します。
Google Cloud プロジェクトを選択するか、まだ作成していない場合は新しく作成します。
[Spanner] ページで、[プロビジョニングされたインスタンスを作成] をクリックします。
以前に Spanner を使用したことがある場合は、プロダクト ページの代わりに Spanner の [インスタンス] ページが表示されます。[インスタンスを作成] をクリックします。
[インスタンス名を指定する] ページで、インスタンス名を入力します(例: テスト インスタンス)。
インスタンス ID は、インスタンス名(例: test-instance)に基づき自動的に入力されます。必要に応じて変更できます。[続行] をクリックします。
[インスタンスを構成する] ページで、デフォルトのオプション [リージョン] をそのままにして、プルダウン メニューから構成を選択します。
インスタンスの構成により、インスタンスが保存および複製される地理的位置が決まります。
[続行] をクリックします。
[コンピューティング容量の割り当て] ページで、[処理ユニット(PU)] を選択し、デフォルト値の 1,000 処理ユニットのままにします。
[作成] をクリックします。
Google Cloud コンソールに、作成したインスタンスの [概要] ページが表示されます。
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
「テスト インスタンス」などの作成したインスタンスをクリックします。
開いたインスタンスの [概要] ページで、[データベースを作成] をクリックします。
データベース名には「example-db」などの名前を入力します。
データベース言語を選択します。
PostgreSQL のサポートや、言語の選択に関するガイダンスについては、PostgreSQL Interface をご覧ください。 GoogleSQL を選択した場合は、このクイックスタートの次のセクションにある [スキーマを定義する] テキスト フィールドでスキーマを定義します。
データベース作成ページは次のようになります。
[作成] をクリックします。
Google Cloud コンソールに、作成したデータベースの [概要] ページが表示されます。
ナビゲーション メニューで [Spanner Studio] をクリックします。
[Spanner Studio] ページで、[ 新しいタブ] をクリックするか、空のエディタタブを使用します。
次のように入力します。
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 );(実行)をクリックします。
Google Cloud コンソールがデータベースの [概要] ページに戻り、[スキーマの更新] が進行中であることが表示されます。更新が完了すると、次のようなページが表示されます。
GoogleSQL
PostgreSQL
なお、PostgreSQL ではテーブル名が小文字に変換されます。
データベースの [概要] ページのテーブルのリストで、Singers テーブルをクリックします。
Google Cloud コンソールに Singers テーブルの [スキーマ] ページが表示されます。
ナビゲーション・メニューで、[データ] をクリックして、Singers テーブルの [データ] ページを表示します。
[挿入] をクリックします。
Google Cloud コンソールに Singers テーブルの [Spanner Studio] ページが表示され、
INSERTステートメントが含まれる新しいクエリタブが開いている状態になっています。それを編集して Singers テーブルに 1 行を挿入し、その結果を確認することができます。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, FirstName, LastName, SingerInfo, BirthDate) VALUES (<SingerId>, -- type: INT64 <FirstName>, -- type: STRING(1024) <LastName>, -- type: STRING(1024) <SingerInfo>, -- type: BYTES(MAX) <BirthDate> -- type: DATE ) THEN RETURN SingerId, FirstName, LastName, SingerInfo, BirthDate;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, firstname, lastname, singerinfo, birthdate) VALUES (<singerid>, -- type: bigint <firstname>, -- type: character varying <lastname>, -- type: character varying <singerinfo>, -- type: bytea <birthdate> -- type: timestamp with time zone ); THEN RETURN singerid, firstname, lastname, singerinfo, birthdate;なお、PostgreSQL では、列名がすべて小文字に変換されます。
INSERTステートメントのVALUES句を編集します。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) ) THEN RETURN SingerId, FirstName, LastName, SingerInfo, BirthDate;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 ); THEN RETURN singerid, firstname, lastname, singerinfo, birthdate;(実行)をクリックします。
Spanner により、ステートメントが実行されます。完了すると、[結果] タブに、ステートメントで 1 行が挿入されたことが示されます。
GoogleSQL
PostgreSQL
エクスプローラで、Singers テーブルの横にある (アクションを表示)をクリックし、[データを挿入] をクリックします。
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;(実行)をクリックします。
Spanner によりステートメントが実行されると、[結果] タブに、ステートメントによって 1 行が挿入されたことが示されます。
エクスプローラで、Singers テーブルの横にある (アクションを表示)をクリックし、[データのプレビュー] をクリックします。
(実行)をクリックします。Singers テーブルの行が 2 つになりました。
GoogleSQL
PostgreSQL
[挿入] をクリックして行を追加します。
Spanner に Singers テーブルの [Spanner Studio] ページが表示され、
INSERTステートメントとSELECTステートメントが含まれる新しいクエリタブが開いている状態になっています。テンプレートの
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値ではなく、空の文字列('')です。(実行)をクリックします。
Spanner によりステートメントが実行されると、[結果] タブに、ステートメントによって 1 行が挿入されたことが示されます。
エクスプローラで、Singers テーブルの横にある (アクションを表示)をクリックし、[データのプレビュー] をクリックします。
(実行)をクリックします。
Singersテーブルには現在 3 つの行があり、そのうち主キーの値が3の行では、LastName列が空の文字列になっています。GoogleSQL
PostgreSQL
Singers テーブルの [データ] ページで、主キーの値が
3の行のチェックボックスをオンにし、[編集] をクリックします。Spanner で [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';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';(実行)をクリックします。
Spanner により、ステートメントが実行されます。完了すると、[結果] タブに、最初のステートメントで 1 行が更新されたことが示されます。
エクスプローラで、Singers テーブルの横にある (アクションを表示)をクリックし、[データのプレビュー] をクリックします。
(実行)をクリックします。更新された行に生年月日の値が入りました。
GoogleSQL
PostgreSQL
- Singers テーブルの [データ] ページで、最初の列に
2がある行のチェックボックスをオンにし、[削除] をクリックします。 表示されるダイアログで [確認] をクリックします。
Singers テーブルの行が 2 つになりました。
GoogleSQL
PostgreSQL
データベースの [概要] ページで、ナビゲーション メニューの [Spanner Studio] をクリックします。
[新しいタブ] をクリックして、新しいクエリタブを作成します。次に、クエリエディタに以下のクエリを入力します。
GoogleSQL
SELECT * FROM Singers;PostgreSQL
SELECT * FROM singers;(実行)をクリックします。
Spanner がクエリを実行します。完了すると、[結果] タブにクエリの結果が表示されます。
GoogleSQL
PostgreSQL
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
「テスト インスタンス」など、削除するデータベースがあるインスタンスの名前をクリックします。
example-db など、削除するデータベースの名前をクリックします。
[データベースの詳細] ページで、delete [データベースを削除] をクリックします。
データベース名を入力して [削除] をクリックし、データベースの削除を確定します。
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
「テスト インスタンス」など、削除するインスタンスの名前をクリックします。
[インスタンスを削除] delete をクリックします。
インスタンス名を入力し [削除] をクリックして、インスタンスの削除を確定します。
インスタンスを作成する
Spanner を初めて使用するときは、インスタンスを作成する必要があります。これにより、そのインスタンスの Spanner データベースによって使用されるリソースが割り当てられます。
データベースを作成する
データベースのスキーマの作成
データの挿入と変更
Google Cloud コンソールには、データを挿入、編集、削除するためのインターフェースがあります。
データを挿入する
また、データを入力するときに、空の文字列値を挿入することもできます。
データを編集する
データの削除
クエリの実行
これで完了です。クエリエディタを使用して、正常に Spanner データベースを作成し、SQL ステートメントを実行することができました。
クリーンアップ
Google Cloud アカウントで追加料金が発生しないようにするには、データベースとインスタンスを削除します。Cloud Billing API を無効にしても、課金は停止されません。インスタンスを削除すると、インスタンス内のすべてのデータベースが削除されます。