このクイックスタートでは、Google Cloud コンソールを使って Spanner の基本的な操作を行う方法を説明します。このクイックスタートでは、以下を行います。
- Spanner インスタンスを作成する。
- データベースを作成する。
- スキーマを作成する。
- データを挿入、変更する。
- クエリを実行する。
Spanner の使用料金については、料金についてのページをご覧ください。
始める前に
- 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.
-
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
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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
(
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 は、インスタンス名(「テスト インスタンス」など)に基づき自動的に入力されます。必要に応じて変更できます。[続行] をクリックします。
[インスタンスを構成する] ページで、デフォルトのオプション [リージョン] をそのままにして、プルダウン メニューから構成を選択します。
インスタンスの構成により、インスタンスが保存および複製される地理的位置が決まります。
[続行] をクリックします。
[コンピューティング容量の割り当て] ページで、[処理ユニット(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ステートメントとSELECTステートメントが含まれる新しいクエリタブが開いている状態になっています。それを編集して 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, 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 では、列名がすべて小文字に変換されます。
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;[実行] をクリックします。
Spanner により、ステートメントが実行されます。完了すると、[結果] タブでは、最初のステートメントで 1 行が挿入されたことと、テーブルのデータを表示するリンクが示されます。
[結果] タブで、[テーブル] をクリックします。Singers テーブルに行が 1 つ追加されました。
GoogleSQL
PostgreSQL
[挿入] をクリックして別の行を追加します。
Google Cloud コンソールに 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 (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 テーブルの行が 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テーブルには現在 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 行が更新されたことと、テーブルのデータを表示するリンクが示されます。
[結果] タブで、[テーブル] をクリックします。
更新された行に生年月日の値が入りました。
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 のスキーマとデータモデルについて理解する。
- GoogleSQL データ定義言語(DDL)について学ぶ。
- クエリ実行プランについて学ぶ。
- C++、C#、Go、Java、Node.js、PHP、Python、Ruby、REST、gcloud を使って Spanner を操作する方法を学ぶ。
インスタンスを作成する
Spanner を初めて使用するときは、インスタンスを作成する必要があります。これにより、そのインスタンスの Spanner データベースによって使用されるリソースが割り当てられます。
データベースを作成する
データベースのスキーマの作成
データの挿入と変更
Google Cloud コンソールには、データを挿入、編集、削除するためのインターフェースがあります。
データを挿入する
また、データを入力するときに、空の文字列値を挿入することもできます。
データを編集する
データの削除
クエリの実行
これで完了です。クエリエディタを使用して、正常に Spanner データベースを作成し、SQL ステートメントを実行することができました。
クリーンアップ
Google Cloud アカウントに追加料金が課されないようにするには、データベースとインスタンスを削除します。Cloud Billing API を無効にしても、課金は停止されません。インスタンスを削除すると、インスタンス内のすべてのデータベースが削除されます。