このクイックスタートでは、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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
- 省略可: Spanner API は自動的に有効になるはずです。それ以外の場合は、手動で有効にします。Spanner API を有効にする
-
インスタンスとデータベースを作成するために必要な権限を取得するには、プロジェクトに対する Cloud Spanner 管理者(roles/spanner.admin)IAM ロールの付与を管理者に依頼してください。
インスタンスの作成
Spanner を初めて使用するときは、インスタンスを作成する必要があります。これにより、そのインスタンスの Spanner データベースによって使用されるリソースが割り当てられます。
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 を選択した場合は、このクイックスタートの次のセクションの [スキーマを定義する] テキスト フィールドでスキーマを定義します。
データベース作成ページは次のようになります。
[作成] をクリックします。
Cloud Console に、作成したデータベースの [概要] ページが表示されます。
データベースのスキーマの作成
ナビゲーション メニューで [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 でテーブル名が小文字に変換されていることに注意します。
データの挿入と変更
Google Cloud Console には、データを挿入、編集、削除するためのインターフェースがあります。
データの挿入
データベースの [概要] ページのテーブルで、Singers テーブルをクリックします。
Google Cloud Console に Singers テーブルの [スキーマ] ページが表示されます。
ナビゲーション・メニューで、[データ] をクリックして、Singers テーブルの [データ] ページを表示します。
[挿入] をクリックします。
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 では、列名がすべて小文字に変換されます。
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 コンソールには、同じ
INSERT
ステートメントとSELECT
ステートメントを含む新しいクエリタブを有する Singers テーブルの [Spanner Studio] ページが再表示されます。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
また、データを入力するときに、空の文字列値を挿入することもできます。
[挿入] をクリックして行を追加します。
Cloud Spanner には、同じ
INSERT
ステートメントとSELECT
ステートメントを含む新しいクエリタブを有する Singers テーブルの Spanner Studio ページが再表示されます。テンプレートの
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 には、編集できるテンプレート
UPDATE
とSET
ステートメントを含む新しいタブがある [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';
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
これで完了です。クエリエディタを使用して、正常にSpanner データベースを作成し、SQL ステートメントを実行することができました。
クリーンアップ
Cloud 請求先アカウントにこれ以上料金が発生しないようにするには、作成したデータベースとインスタンスを削除します。インスタンスを削除すると、そのインスタンス内に作成されたすべてのデータベースが自動的に削除されます。
データベースの削除
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 を使用する方法について確認する。