GSP1049

總覽
Cloud Spanner 是 Google 全代管、可水平擴充的關聯式資料庫服務。金融服務、遊戲、零售業和許多其他產業的客戶都信任 Cloud Spanner,會使用這項服務執行最嚴苛的工作負載,確保大規模作業的一致性和可用性。
在本實驗室中,您會運用各種方法將資料載入 Cloud Spanner,並執行資料庫備份作業。
學習內容
- 使用 DML 插入資料
- 透過用戶端程式庫插入資料
- 透過用戶端程式庫插入批次資料
- 使用 Dataflow 載入資料
- 備份資料庫
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
工作 1:檢視執行個體
部署期間,系統已為您建立 Cloud Spanner 執行個體、資料庫和資料表。
- 在控制台中,依序點選「導覽選單」圖示
>「查看所有產品」。接著,在「資料庫」部分,點選「Spanner」。
要用到的執行個體名稱為 banking-instance,請點選來前往資料庫檢視畫面。相關資料庫名稱為 banking-db,點進去後會看見預先建立的 Customer 資料表,點選即可查看結構定義。
- 目前資料表沒有任何內容。請返回
banking-db 總覽頁面,在左選單中點選「Spanner Studio」,然後執行下列查詢:
SELECT * FROM Customer;
- 查詢不會傳回任何結果。
工作 2:使用 DML 插入資料
想要將資料插入 Spanner,最簡單的方法是透過 DML。您可使用 Cloud Shell 和 gcloud 執行任何 DML 陳述式,包括 INSERT。
- 在 Cloud Shell 中執行下列指令:
gcloud spanner databases execute-sql banking-db --instance=banking-instance \
--sql="INSERT INTO Customer (CustomerId, Name, Location) VALUES ('bdaaaa97-1b4b-4e58-b4ad-84030de92235', 'Richard Nelson', 'Ada Ohio')"
- 返回控制台,在左選單中點選「總覽」。接著,前往 Customer 資料表頁面並選取「資料」,即可看見剛才插入的資料列。
如前所述,您可使用 gcloud 執行任何 DML 指令。詳情請參閱 DML 和 Spanner 說明文件。
當然,逐列載入資料庫不太有效率。
工作 3:透過用戶端程式庫插入資料
存取 Spanner 的理想方法是透過程式輔助介面,您可在該處使用各種用戶端程式庫,包括 C++、C#、Go、Java、Node.js、PHP、Python 和 Ruby。
- 在 Cloud Shell 中輸入下列指令,叫用 Nano 文字編輯器,並建立新的 insert.py 空白設定檔。
nano insert.py
- 貼上下列程式碼區塊。
from google.cloud import spanner
from google.cloud.spanner_v1 import param_types
INSTANCE_ID = "banking-instance"
DATABASE_ID = "banking-db"
spanner_client = spanner.Client()
instance = spanner_client.instance(INSTANCE_ID)
database = instance.database(DATABASE_ID)
def insert_customer(transaction):
row_ct = transaction.execute_update(
"INSERT INTO Customer (CustomerId, Name, Location)"
"VALUES ('b2b4002d-7813-4551-b83b-366ef95f9273', 'Shana Underwood', 'Ely Iowa')"
)
print("{} record(s) inserted.".format(row_ct))
database.run_in_transaction(insert_customer)
-
依序按下 Ctrl+X > Y 鍵 > Enter 鍵,在退出 Nano 時確認更新並儲存變更。
-
執行 Python 程式碼。
python3 insert.py
- 重新整理 Cloud 控制台,或點選左選單中的其他項目,然後再次點選「資料」,資料庫就會顯示新的資料列。
就像使用 gcloud 一樣,您可透過用戶端程式庫執行任何 DML 陳述式。如要查看所有語言的多個範例,請參閱說明文件。
以這種方法載入資料比使用 gcloud 更有彈性,但若載入的來源含有大量資料列,仍會受到一些限制。
- 點選「Check my progress」,確認目標已達成。
透過用戶端程式庫插入資料工作 4:透過用戶端程式庫插入批次資料
按批次將資料載入 Spanner 是更理想的方法,所有用戶端程式庫都支援批次載入。在本範例中,我們要使用 Python。
- 在 Cloud Shell 中輸入下列指令,叫用 Nano 文字編輯器,並建立新的 batch_insert.py 空白設定檔。
nano batch_insert.py
- 貼上下列程式碼區塊。
from google.cloud import spanner
from google.cloud.spanner_v1 import param_types
INSTANCE_ID = "banking-instance"
DATABASE_ID = "banking-db"
spanner_client = spanner.Client()
instance = spanner_client.instance(INSTANCE_ID)
database = instance.database(DATABASE_ID)
with database.batch() as batch:
batch.insert(
table="Customer",
columns=("CustomerId", "Name", "Location"),
values=[
('edfc683f-bd87-4bab-9423-01d1b2307c0d', 'John Elkins', 'Roy Utah'),
('1f3842ca-4529-40ff-acdd-88e8a87eb404', 'Martin Madrid', 'Ames Iowa'),
('3320d98e-6437-4515-9e83-137f105f7fbc', 'Theresa Henderson', 'Anna Texas'),
('6b2b2774-add9-4881-8702-d179af0518d8', 'Norma Carter', 'Bend Oregon'),
],
)
print("Rows inserted")
-
依序按下 Ctrl+X > Y 鍵 > Enter 鍵,在退出 Nano 時確認更新並儲存變更。
-
執行 Python 程式碼。
python3 batch_insert.py
- 返回 Cloud 控制台,重新整理就會看見剛才插入的新資料。
批次載入資料較有效率,因為是以單一要求執行,只需在用戶端和伺服器間往返一次,這樣延遲時間就會縮短。
不過,這種方法的速度相當慢,而且會耗用資源。
- 點選「Check my progress」,確認目標已達成。
透過用戶端程式庫插入批次資料工作 5:使用 Dataflow 載入資料
Dataflow 是一項 Google Cloud 服務,可大規模處理串流和批次資料。Dataflow 會使用多個 worker 同時執行資料處理作業,也就是透過管道將資料從來源轉換至目的地 (接收器)。
Dataflow 提供多種 Spanner 適用的連接器,能讓您將要連結的資料庫做為「來源」或「接收器」。
需要載入大量資料時,您可善用 Dataflow 的無伺服器分散式處理技術,從來源讀取資料 (例如 Google Cloud Storage 中的 CSV 檔案),再透過接收器連接器將資料載入 Spanner 資料庫。
- 為準備 Dataflow 工作,請在 Cloud Shell 中執行下列指令,為專案建立 bucket,並在 bucket 內新建含有空白檔案的資料夾。
gsutil mb gs://{{{project_0.project_id|Project ID}}}
touch emptyfile
gsutil cp emptyfile gs://{{{project_0.project_id|Project ID}}}/tmp/emptyfile
- 在 Cloud Shell 中執行下列程式碼區塊,確認已設定適當的 API 和權限。
gcloud services disable dataflow.googleapis.com --force
gcloud services enable dataflow.googleapis.com
-
在控制台中,依序點選「導覽選單」圖示
>「查看所有產品」。接著,在「Analytics」部分,點選「Dataflow」。
-
點選畫面頂端的「依據範本建立工作」。
-
在範本中填入下列值:
-
「工作名稱」:spanner-load
-
「區域性端點」:
-
向下捲動「Dataflow 範本」選取器,瀏覽所有可搭配 Dataflow 使用的藍圖。當然,您也能使用 Beam SDK 建立符合需求的管道。
範本主要分成兩種類型:
-
串流:用來為持續流通和處理的資料 (例如網站的線上訂單) 建立管道。
-
批次:用來處理開頭和結尾明確的資料集,例如儲存在 Google Cloud Storage 的檔案。
在這個情境中,您要從 CSV 檔案將超過 15 萬列資料載入 Spanner 的 banking 資料庫。
-
選取「Text Files on Cloud Storage to Cloud Spanner」範本。
-
在範本中填入下列值:
| 項目 |
值 |
| Cloud Spanner instance ID |
banking-instance |
| Cloud Spanner database ID |
banking-db |
| Text Import Manifest file |
spls/gsp1049/manifest.json |
如要瞭解 manifest.json 檔案格式的說明,請點選參數輸入欄位上方的「開啟教學課程」,查看這個範本的教學課程。
請注意,Dataflow 須能存取及讀取儲存資訊清單檔案的 Google Cloud Storage bucket。在本實驗室中,manifest.json 的內容如下:
{
"tables": [
{
"table_name": "Customer",
"file_patterns": [
"gs://spls/gsp1049/Customer_List.csv"
],
"columns": [
{"column_name" : "CustomerId", "type_name" : "STRING" },
{"column_name" : "Name", "type_name" : "STRING" },
{"column_name" : "Location", "type_name" : "STRING" }
]
}
]
}
這個資訊清單檔案指出資料表、資料欄名稱和類型 (與 CSV 檔案顯示的順序一致) 及 CSV 檔案本身,後者也儲存於 Google Cloud Storage bucket。
CSV 檔案的內容如下:
9d238899-8348-4642-9c00-77dc4481145b,Nicole Anderson,Ada Ohio
360ecaa6-9ec3-4fa0-81a5-3b0dc629e1fa,Ellen Richardson,Ada Ohio
8ee6c2ea-923b-45db-8d51-7f8e7a117af0,Wendy Daniel,Ada Ohio
1d7112cc-c1ee-414f-9325-95c97f9a25d3,Virginia Beasley,Ada Ohio
...
- 在「臨時位置」參數部分輸入下列值:
{{{project_0.project_id|Project ID}}}/tmp
-
展開「選用參數」。
-
取消勾選「使用預設機型」。
-
在「一般用途」下方,選擇下列選項:
- 「系列」:E2
- 「機型」:e2-medium (2 個 vCPU,4 GB 記憶體)
-
點選「執行工作」即可啟動管道。
-
這項程序約需 12 至 16 分鐘才能完成。等待期間,您會發現 Dataflow 經歷多個階段:先啟動 worker 並分析範本中的管道,接著讀取資訊清單檔案,開始處理 CSV 檔案。
注意:如果管道啟動失敗並傳回錯誤,指出未佈建 worker 節點,請回到步驟 4,重新使用相同範本和名稱來建立新工作。不過,這次要選擇美國的其他區域性端點。舉例來說,假設步驟 5 指示您將「區域性端點」設為「us-east4」,則第二次嘗試時,可改選「us-east1」。請等到 Dataflow 處理完畢,再繼續操作。完成後,狀態會顯示「成功」。
-
從 Cloud 控制台的左選單返回「Spanner」,前往 Customer 資料表頁面並選取「資料」。畫面上會顯示先前使用 Dataflow 載入的所有新資料列。
-
返回 banking-db 總覽頁面,在左選單中點選「Spanner Studio」,然後執行下列查詢,查看 Customer 資料表的總資料列數:
SELECT COUNT(*) FROM Customer;
透過 Dataflow 範本,就能輕鬆快速地載入大量資料。您可按照相同程序載入其他資料庫的傾印檔,而且格式不限 CSV 檔案,Avro 檔案也沒問題。甚至還能反過來操作,在 Dataflow 中將 Spanner 資料庫做為來源,並以 CSV 或 Avro 格式匯出資料。
- 點選「Check my progress」,確認目標已達成。
使用 Dataflow 載入資料工作 6:備份資料庫
按照上述說明使用 Dataflow,是建立資料備份的一種方法。不過,Spanner 本身就有備份工具。無論是 Cloud 控制台、用戶端程式庫或 gcloud 指令,都能用來備份 Spanner 資料庫。點選連結即可查看相應的說明文件。
在本實驗室中,您要使用 Cloud 控制台備份資料庫。
-
選取左選單中的「備份/還原」。
-
點選「建立備份」。
-
在精靈中填入或選取下列值:
| 項目 |
值 |
| 資料庫名稱 |
banking-db |
| 備份名稱 |
banking-backup-001 |
| 到期日 |
1 年 |
-
點選「建立」。
-
備份作業約需 15 分鐘才能完成,建立進度會顯示在「備份」清單中。
恭喜!
現在您已充分瞭解如何運用各種方法,將資料載入 Cloud Spanner 執行個體並執行備份。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 9 月 16 日
實驗室上次測試日期:2025 年 9 月 16 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。