このドキュメントでは、Google Cloud コンソールを使用して Spanner Graph を設定してクエリする方法について説明します。このドキュメントでは、次の操作を行います。
- Spanner インスタンスを作成する
- データベースを作成します。
- グラフ スキーマを作成します。
- グラフデータを挿入します。
- 作成したグラフに対してクエリを実行します。
Spanner の料金の詳細については、Spanner の料金をご覧ください。
Codelab を試すには、Spanner Graph を使ってみるをご覧ください。
始める前に
- 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 インスタンスを作成した場合は、[インスタンス] ページで [インスタンスを作成] をクリックします。
[エディションを選択] ページで、[Enterprise Plus] または [Enterprise] を選択します。
Spanner Graph は、Enterprise エディションまたは Enterprise Plus エディションでのみ使用できます。異なるエディションを比較するには、[エディションを比較] をクリックします。詳細については、Spanner エディションの概要をご覧ください。
[続行] をクリックします。
[インスタンス名] にインスタンス名を入力します(例:
test-instance
)。[インスタンス ID] で、インスタンス ID を保持するか変更します。インスタンス ID はデフォルトでインスタンス名になりますが、変更できます。インスタンス名とインスタンス ID は同じでも異なっていてもかまいません。
[続行] をクリックします。
[構成を選択] で、次の操作を行います。
[リージョン] を選択したままにします。
[構成を選択] でリージョンを選択します。選択したリージョンにインスタンスが保存され、複製されます。
[続行] をクリックします。
[コンピューティング容量を構成する] で、次の操作を行います。
[ユニットを選択] で、[処理ユニット(PU)] を選択します。
[スケーリング モードを選択] で [手動で割り当てる] を選択し、[数量] では 1,000 処理ユニットのままにします。
[作成] をクリックします。Google Cloud コンソールに、作成したインスタンスの [概要] ページが表示されます。
データベースを作成する
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
作成したインスタンスをクリックします(例:
Test Instance
)。[概要] で、インスタンス名の下にある [データベースを作成] をクリックします。
[データベース名] にデータベース名を入力します。例:
example-db
[データベース言語を選択] で、Google 標準 SQL を選択します。PostgreSQL 言語では Spanner Graph を使用できません。データベース作成ページは次のようになります。
[作成] をクリックします。Google Cloud コンソールに、作成したデータベースの [概要] ページが表示されます。
Spanner Graph データベースのスキーマを作成する
ナビゲーション メニューで [Spanner Studio] をクリックします。
[Spanner Studio] ページで、[エディタ 1] タブをクリックするか、
[新しいタブ] をクリックするか、新しいタブを使用します。次のスキーマをコピーして、エディタタブに貼り付けます。このスキーマには、2 つのノードテーブル定義(
Person
とAccount
)と 2 つのエッジテーブル定義(PersonOwnAccount
とAccountTransferAccount
)が含まれています。Spanner Graph はリレーショナル テーブルを使用してグラフを定義するため、スキーマにはリレーショナル テーブルとグラフ ステートメントの両方が表示されます。Spanner Graph スキーマの詳細については、Spanner Graph スキーマの概要をご覧ください。CREATE TABLE Person ( id INT64 NOT NULL, name STRING(MAX), birthday TIMESTAMP, country STRING(MAX), city STRING(MAX), ) PRIMARY KEY (id); CREATE TABLE Account ( id INT64 NOT NULL, create_time TIMESTAMP, is_blocked BOOL, nick_name STRING(MAX), ) PRIMARY KEY (id); CREATE TABLE PersonOwnAccount ( id INT64 NOT NULL, account_id INT64 NOT NULL, create_time TIMESTAMP, FOREIGN KEY (account_id) REFERENCES Account (id) ) PRIMARY KEY (id, account_id), INTERLEAVE IN PARENT Person ON DELETE CASCADE; CREATE TABLE AccountTransferAccount ( id INT64 NOT NULL, to_id INT64 NOT NULL, amount FLOAT64, create_time TIMESTAMP NOT NULL, order_number STRING(MAX), FOREIGN KEY (to_id) REFERENCES Account (id) ) PRIMARY KEY (id, to_id, create_time), INTERLEAVE IN PARENT Account ON DELETE CASCADE; CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES (Account, Person) EDGE TABLES ( PersonOwnAccount SOURCE KEY (id) REFERENCES Person (id) DESTINATION KEY (account_id) REFERENCES Account (id) LABEL Owns, AccountTransferAccount SOURCE KEY (id) REFERENCES Account (id) DESTINATION KEY (to_id) REFERENCES Account (id) LABEL Transfers );
[実行] をクリックします。[結果] ページに、スキーマの更新が実行されていることが示されます。アップデートが完了すると、[結果] にアップデートが完了したことを示すメッセージが表示されます。
グラフデータを挿入する
Google Cloud コンソールには、データを挿入、編集、削除するためのインターフェースがあります。
データの挿入
- [Spanner Studio] ページで、 [新しいタブ] をクリックするか、エディタタブを使用します。
次のグラフデータ挿入ステートメントをコピーして、ノードとエッジに貼り付けます。
INSERT INTO Account (id, create_time, is_blocked, nick_name) VALUES (7,"2020-01-10 06:22:20.222",false,"Vacation Fund"), (16,"2020-01-27 17:55:09.206",true,"Vacation Fund"), (20,"2020-02-18 05:44:20.655",false,"Rainy Day Fund"); INSERT INTO Person (id, name, birthday, country, city) VALUES (1,"Alex","1991-12-21 00:00:00","Australia","Adelaide"), (2,"Dana","1980-10-31 00:00:00","Czech_Republic","Moravia"), (3,"Lee","1986-12-07 00:00:00","India","Kollam"); INSERT INTO AccountTransferAccount (id, to_id, amount, create_time, order_number) VALUES (7,16,300,"2020-08-29 15:28:58.647","304330008004315"), (7,16,100,"2020-10-04 16:55:05.342","304120005529714"), (16,20,300,"2020-09-25 02:36:14.926","103650009791820"), (20,7,500,"2020-10-04 16:55:05.342","304120005529714"), (20,16,200,"2020-10-17 03:59:40.247","302290001255747"); INSERT INTO PersonOwnAccount (id, account_id, create_time) VALUES (1,7,"2020-01-10 06:22:20.222"), (2,20,"2020-01-27 17:55:09.206"), (3,16,"2020-02-18 05:44:20.655");
次のグラフは、挿入されたユーザー、アカウント、アカウントの所有権、アカウントの移行を示しています。
[実行] をクリックします。実行が完了すると、[結果] タブに 3 行が挿入されたことが示されます。
グラフクエリを実行する
データベースの [概要] ページで、ナビゲーション メニューの [Spanner Studio] をクリックします。
[Spanner Studio] ページで、
[新しいタブ] をクリックするか、エディタタブを使用します。クエリエディタに以下のクエリを入力します。このクエリでは、Dana が送金したすべてのユーザーと、送金の金額が見つかります。
GRAPH FinGraph MATCH (from_person:Person {name: "Dana"})-[:Owns]-> (from_account:Account)-[transfer:Transfers]-> (to_account:Account)<-[:Owns]-(to_person:Person) RETURN from_person.name AS from_account_owner, from_account.id AS from_account_id, to_person.name AS to_account_owner, to_account.id AS to_account_id, transfer.amount AS amount
[実行] をクリックします。
[結果] タブには、Dana から
Account {id:20}
までの次のパスが表示されます。- Alex が所有する
Account {id:7}
へのパス。 Lee が所有する
Account {id:16}
へのパス。
- Alex が所有する
クリーンアップ
次のステップの例の多くでは、このドキュメントで設定したリソースを使用します。これらの例のいずれかを使用して Spanner Graph の作業を続ける場合は、これらのクリーンアップ手順はまだ行わないでください。
そうでない場合は、Cloud 請求先アカウントに追加料金が発生しないように、設定時に作成したデータベースとインスタンスを削除します。インスタンスを削除すると、そのインスタンス内に作成されたすべてのデータベースが自動的に削除されます。
データベースの削除
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
テスト・インスタンスなど、削除するデータベースがあるインスタンスの名前をクリックします。
example-db など、削除するデータベースの名前をクリックします。
[データベースの詳細] ページで [データベースを削除] をクリックします。
データベース名を入力して [削除] をクリックし、データベースを削除することを確認します。
インスタンスを削除する
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
[テスト インスタンス] など、削除するインスタンスの名前をクリックします。
[インスタンスの削除] をクリックします。
インスタンス名を入力し [削除] をクリックして、インスタンスを削除することを確認します。
次のステップ
- codelab を使用して Spanner Graph の詳細を確認する。
- Spanner Graph スキーマについて学習する。
- Spanner Graph スキーマを作成、更新、削除する。
- Spanner Graph データを挿入、更新、削除する。
- Spanner Graph クエリの概要。
- Spanner Graph への移行。