本文說明如何設定及查詢 Spanner Graph 資料庫,以便使用 Google Cloud 控制台和用戶端程式庫,建立複雜資料關係的模型、儲存及分析這些關係。
以下主題說明如何:
如要瞭解 Spanner 定價詳細資料,請參閱 Spanner 定價。
如要試用程式碼研究室,請參閱「開始使用 Spanner Graph」。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
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.
-
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 角色。
-
如要取得查詢 Spanner 圖表所需的權限 (如果未獲授予 Cloud Spanner 管理員角色),請要求管理員授予您專案的「Cloud Spanner 資料庫讀取者 」(
roles/spanner.databaseReader) IAM 角色。
可建立 Spanner 執行個體
首次使用 Spanner 時,必須建立「執行個體」,為 Spanner 資料庫分配資源。本節說明如何使用 Google Cloud 控制台建立執行個體。
前往 Google Cloud 控制台的「Spanner」頁面。
選取或建立 Google Cloud 專案 (如果尚未建立)。
執行下列其中一個步驟:
如果您先前未建立 Spanner 執行個體,請在「Welcome to Spanner」(歡迎使用 Spanner) 頁面上,按一下「Create a provisioned instance」(建立已佈建的執行個體)。
如果您已建立 Spanner 執行個體,請在「執行個體」頁面點選「建立執行個體」。
在「選取版本」頁面中,選取「Enterprise Plus」或「Enterprise」。
Spanner Graph 僅適用於 Enterprise 版或 Enterprise Plus 版。如要比較不同版本,請按一下「比較版本」。詳情請參閱 Spanner 版本總覽。
按一下「繼續」。
在「Instance name」(執行個體名稱) 中輸入執行個體名稱,例如
test-instance。在「執行個體 ID」中,保留或變更執行個體 ID。執行個體 ID 預設為執行個體名稱,但您可以變更。執行個體名稱和執行個體 ID 可以相同,也可以不同。
按一下「繼續」。
在「選擇設定」中,執行下列操作:
請選取「區域」。
在「選擇設定」中,選取區域。Spanner 會在您選取的區域中儲存及複製執行個體。
按一下「繼續」。
在「設定運算能力」中,執行下列操作:
在「選取單位」中,選取「處理單元 (PU)」。
在「選擇資源調度模式」中,保留選取的「手動分配」,並在「數量」中保留 1000 個處理單元。
點按「Create」(建立)。 Google Cloud 控制台會顯示您所建立執行個體的「總覽」頁面。
使用結構定義建立圖形資料庫
本節說明如何使用 Spanner Graph 結構定義建立 Spanner Graph 資料庫。您可以使用 Google Cloud 控制台或用戶端程式庫。
控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下您建立的執行個體,例如
Test Instance。在「總覽」中,按一下執行個體名稱下方的「建立資料庫」。
在「Database name」(資料庫名稱) 中輸入資料庫名稱。例如:
example-db。在「選取資料庫方言」中,選擇 Google 標準 SQL。 PostgreSQL 方言不支援 Spanner Graph。
在「DDL 範本」編輯器分頁中,輸入下列結構定義:結構定義包含兩個節點資料表定義 (
Person和Account),以及兩個邊緣資料表定義 (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 控制台會顯示您所建立資料庫的「總覽」頁面。
用戶端程式庫
Python
Java
Go
C++
插入圖表資料
建立資料庫後,即可在其中新增資料。本節說明如何使用 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 個資料列。
用戶端程式庫
Python
Java
Go
C++
下圖顯示插頁中的人員、帳戶、帳戶擁有權和帳戶轉移:
執行圖形查詢
將資料插入圖表後,您可以查詢資料,找出模式和關係。本節說明如何使用Google Cloud 控制台 (圖形介面) 執行查詢,或透過用戶端程式庫以程式輔助方式執行查詢。
控制台
在資料庫「總覽」頁面中,點選導覽選單中的「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按一下「執行」。
「結果」分頁會顯示帳號 20 擁有者 Dana 的下列路徑:
- 傳送至小艾擁有的「
Account {id:7}」。 轉移給李擁有的「
Account {id:16}」。
- 傳送至小艾擁有的「
用戶端程式庫
Python
Java
Go
C++
清除所用資源
本節說明如何清理您建立的資源,以免 Cloud Billing 帳戶產生費用。如果您打算在「後續步驟」一節中探索其他 Spanner Graph 範例,請暫時不要執行這些步驟。刪除 Spanner 執行個體時,也會刪除該執行個體中的所有資料庫。
刪除資料庫
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下執行個體名稱,例如「Test Instance」。
按一下資料庫名稱,例如 example-db。
在「Database details」(資料庫詳細資料) 頁面,按一下「Delete database」(刪除資料庫)。
輸入資料庫名稱,然後按一下「刪除」,確認要刪除資料庫。
刪除執行個體
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下要刪除的執行個體名稱,例如「Test Instance」。
按一下 [Delete instance] (刪除執行個體)。
輸入執行個體名稱,然後按一下「刪除」,確認要刪除執行個體。
後續步驟
- 如要進一步瞭解 Spanner Graph,請參閱程式碼研究室。
- 瞭解 Spanner Graph 結構定義。
- 建立、更新或捨棄 Spanner Graph 結構定義。
- 插入、更新或刪除 Spanner Graph 資料。
- Spanner Graph 查詢總覽。
- 遷移至 Spanner Graph。