实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

設計及查詢 Bigtable 結構定義

实验 20 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1053

Google Cloud 自學實驗室標誌

總覽

Bigtable 是 Google 的全代管 NoSQL 資料庫服務,可隨需求擴充。Bigtable 非常適合在鍵/值儲存空間儲存大量資料,並用於個人化服務、廣告技術、金融科技、數位媒體和物聯網 (IoT) 等用途。Bigtable 具備低延遲的特性,也支援高總處理量讀寫作業,可讓您快速存取大量資料來處理和分析。

在 Bigtable,每個資料列代表單一實體 (例如個別使用者或感應器),並標示專屬的資料列索引鍵。每個資料欄會儲存各資料列的屬性值,而資料欄系列則可用來整理相關資料欄。資料列與資料欄的交集可以有多個儲存格,每個儲存格代表特定時間戳記的資料版本。

在這個實驗室,您將使用 Google Cloud 控制台的 Bigtable 頁面,探索 Bigtable 執行個體,並使用 Bigtable CLI (cbt CLI) 查詢 Bigtable 資料表中的資料。您還會根據 Bigtable 最佳做法,設計資料表結構定義和資料列索引鍵。

學習內容

在這個實驗室,您將瞭解如何存取 Bigtable 執行個體,以及查詢 Bigtable 結構定義。

  • 使用 Google Cloud 控制台探索 Bigtable 執行個體。
  • 為執行個體設定 cbt CLI。
  • 按照 Bigtable 最佳做法,設計適當的結構定義和資料列索引鍵。
  • 在 Bigtable 查詢資料。

必要條件

  • 應對資料庫概念和術語有基本瞭解,例如執行個體、結構定義和鍵。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 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 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

工作 1:在控制台探索 Bigtable 執行個體

在這個實驗室練習,我們已預先建立 Bigtable 執行個體和資料表,供您探索。在這項工作,您將在 Google Cloud 控制台存取名為「personalized-sales」的 Bigtable 執行個體,並查看相關詳細資料。

  1. 在 Google Cloud 控制台的「導覽選單」導覽選單,依序點選「資料庫」>「Bigtable」

  2. 在 Bigtable 執行個體清單,找出名為 personalized-sales 的執行個體 ID。

    請查看「節點」的詳細資料,然後回答下列問題。

  1. 點選 personalized-sales 執行個體 ID,前往執行個體詳細資料頁面。

  2. 按一下「編輯執行個體」

    查看執行個體的詳細資料,然後回答下列問題。

  1. 如要關閉執行個體編輯頁面,請點選「取消」

  2. 在叢集 ID 表格,點選 personalized-sales-cluster1 資料列的「編輯」鉛筆圖示。

    請查看叢集的詳細資料,並回答下列問題。

  3. 如要關閉叢集詳細資料,請點按「取消」

  4. 在導覽選單的「執行個體」下方,點選「資料表」

    查看「UserSessions」資料表的詳細資料,然後回答下列問題。

您已查看 Bigtable 執行個體的詳細資料,現在可以繼續執行下一個工作,使用 cbt CLI 連線至執行個體。

工作 2:設定 Bigtable CLI

如要使用 cbt CLI 指令連線至 Bigtable,請先使用 Cloud Shell,以專案 ID 和 Bigtable 執行個體 ID 更新 .cbtrc 設定檔。

若要複習如何存取 Cloud Shell,請參閱這個實驗室指南上方的「設定和需求」部分。

cbt CLI 主要用於偵錯及探索,但這項實用工具也能用於學習 Bigtable 基礎知識。如要在正式環境完成 CRUD (建立、讀取、更新、刪除) 作業,建議使用 Bigtable 的用戶端程式庫

  1. 在 Cloud Shell 執行下列指令,使用專案 ID 修改 .cbtrc 檔案:
echo project = `gcloud config get-value project` \ >> ~/.cbtrc
  1. 執行下列指令,查看專案中可用的 Bigtable 執行個體清單:
cbt listinstances

輸出內容確認有名為「personalized-sales」的執行個體。

  1. 執行下列指令,使用 Bigtable 執行個體 ID 修改 .cbtrc 檔案:
echo instance = personalized-sales \ >> ~/.cbtrc
  1. 執行下列指令,確認您已使用專案 ID 和執行個體 ID 成功修改 .cbtrc 檔案:
cat ~/.cbtrc

輸出應會如下所示:

project = <project-id> instance = personalized-sales
  1. 執行下列指令,查看名為 personalized-sales 的 Bigtable 執行個體中可用的資料表清單:
cbt ls

輸出內容會確認執行個體已有一個名為「UserSessions」的資料表,後續工作會用到。

工作 3:在 Bigtable 設計結構定義和資料列索引鍵

在這項工作,您將建立測試資料表,探索 Bigtable 的結構定義和資料列索引鍵設計原則。

檢閱原始資料,協助設計結構定義

在 Bigtable 設計結構定義和資料列索引鍵時,先回答幾個關於待儲存資料的重要問題,會很有幫助。

問題 用途
單一資料列代表什麼?(例如:個別使用者或感應器) 找出資料列結構
用於搜尋這項資料最常見的查詢會是什麼? 建立資料列索引鍵
每個資料列會收集哪些值? 識別資料欄 (稱為資料欄限定詞)
是否有相關資料欄可以分組或整理在一起? 找出資料欄系列



舉例來說,假設資料集擷取了某個電子商務公司網站所有使用者的線上購物工作階段。每列代表一個線上購物工作階段,並附有時間戳記。最常見的資料集查詢會擷取個別工作階段的詳細資料和相關聯的使用者 ID。每個購物工作階段儲存的值,是使用者在該工作階段互動和購買的所有商品,以及使用者的顏色偏好。

原始資料可整理如下,並加入更多資料欄來記錄其他產品 (例如 blue_jacket 或 purple_bag):

timestamp user_id preferred_color red_skirt red_hat orange_shoes sale
1638940844260 1939 green seen seen
1638940844260 2466 blue seen seen
1638940844260 1679 blue seen blue_blouse#blue_jacket
1638940844260 2737 blue seen blue_dress#blue_jacket
1638940844260 582 yellow yellow_skirt



注意:上方的使用者 ID 僅為識別碼的簡單示例。在 Bigtable 的常態應用中,您可能會為每位使用者生成通用專屬 ID (UUID)。

建立測試資料表

Bigtable 最佳做法是將具有類似結構定義的資料儲存在同一個資料表,而不是分開儲存。舉例來說,您可以將所有線上購物階段的資料儲存在一個資料表,方便日後擷取。

  • 執行下列指令,建立空資料表,並命名為 test-sessions
cbt createtable test-sessions

建立資料欄系列

在 Bigtable,資料欄資料欄系列的最佳做法包括:

  • 使用資料欄限定詞做為資料,這樣就不必在每個資料列重複相同的值。

  • 將相關資料欄整理到同一個資料欄系列。

  • 為資料欄系列選擇簡短但有意義的名稱。

就這個資料集,儲存產品互動的資料欄限定詞可歸類到一個名為 Interactions 的資料欄系列,而儲存購買資料的資料欄限定詞則可單獨歸類到另一個名為 Sales 的資料欄系列。產生的結構定義會依下列方式整理:

... ... ... Interactions --- --- Sales
timestamp user_id preferred_color red_skirt red_hat orange_shoes sale
1638940844260 1939 green seen seen
1638940844260 2466 blue seen seen
1638940844260 1679 blue seen blue_blouse#blue_jacket
1638940844260 2737 blue seen blue_dress#blue_jacket
1638940844260 582 yellow yellow_skirt



  1. 執行下列指令,將名為 Interactions 的資料欄系列新增至 test_sessions 資料表:
cbt createfamily test-sessions Interactions
  1. 重複執行先前的指令,新增另一個名為 Sales 的資料欄系列,並指定新的資料欄系列名稱:
cbt createfamily test-sessions Sales
  1. 執行下列指令,查看 test_sessions 資料表中的資料欄系列清單:
cbt ls test-sessions

指令傳回下列輸出內容:

Family Name GC Policy ----------- --------- Interactions <never> Sales <never>

點選「Check my progress」,確認目標已達成。 建立 Bigtable 資料表。

建立資料列索引鍵

在 Bigtable,最佳做法是將單一實體 (例如:單一線上購物工作階段) 的所有資訊儲存在單一資料列。相關最佳做法是建立資料列索引鍵,以便查詢及擷取特定範圍的資料列。

如要套用 Bigtable 資料列索引鍵的最佳做法,建議您這麼做:

  • 根據要用來擷取資料的查詢,設計資料列索引鍵。

  • 請避免使用以時間戳記或連續數字 ID 開頭的資料列索引鍵,或導致相關資料無法分組的資料列索引鍵。

  • 設計資料列索引鍵時,請從較常見的值 (例如國家/地區) 開始,然後以更精細的值 (例如城市) 結尾。

  • 使用人類可讀的字串值 (例如使用者 ID 後接時間戳記),在每個資料列索引鍵中儲存多個以分隔符號區隔的值。

在上一個部分,timestamp、user_id 和 preferred_color 未歸入任何資料欄系列。回想一下原始資料的相關問題,這個資料集的大部分查詢都會擷取個別工作階段的詳細資料,以及相關聯的使用者 ID。

為支援這些查詢,這個資料表的理想資料列索引鍵是使用者 ID 和工作階段時間戳記的組合。此外,資料列索引鍵可加入前置字元,標示每位使用者的顏色偏好 (例如使用者 ID 1939 的 green1939#1638940844260),以便擷取偏好特定顏色的所有使用者。

... Interactions --- --- Sales
row_key red_skirt red_hat orange_shoes sale
green1939#1638940844260 seen seen
blue2466#1638940844260 seen seen
blue1679#1638940844260 seen blue_blouse#blue_jacket
blue2737#1638940844260 seen blue_dress#blue_jacket
yellow582#1638940844260 yellow_skirt
  1. 執行下列指令,使用資料列索引鍵將資料新增至 Interactions 資料欄系列:
cbt set test-sessions green1939#1638940844260 Interactions:red_hat=seen
  1. 執行下列指令,使用資料列索引鍵將資料新增至 Sales 資料欄系列:
cbt set test-sessions blue2737#1638940844260 Sales:sale=blue_dress#blue_jacket
  1. 執行下列指令,查看資料表中的資料:
cbt read test-sessions

請注意,雖然 blue2737#1638940844260 的資料是後來新增的,但在結果中的排序卻比 green1939#1638940844260 高。由於 Bigtable 會依資料列索引鍵的字母順序排列及儲存資料列,因此記錄會依這個順序傳回。這個順序類似字母順序,但開頭為數字的資料列不會由小到大排序 (例如 1、13、2、25、6 和 70)。

清除測試資料

  • 如要刪除測試資料表,請執行下列指令:
cbt deletetable test-sessions

點選「Check my progress」,確認目標已達成。 刪除 Bigtable 資料表。

工作 4:在 Bigtable 查詢資料

在這項工作中,您將使用 cbt CLI 從預先建立且已完整填入資料的測試資料表版本 (名為「UserSessions」的現有資料表) 擷取資料,並瞭解資料表如何套用 Bigtable 結構定義和資料列索引鍵設計的最佳做法。

查詢有限資料列

在這個步驟,您將瞭解 UserSessions 資料表如何遵循 Bigtable 最佳做法,將所有使用者與產品的互動和產品購買記錄儲存在一個資料表,其中每個線上購物工作階段都有一列。

  • 執行下列指令,查看資料表前五列的資料:
cbt read UserSessions \ count=5

輸出內容的結構如下:

---------------------------------------------- ROW KEY COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE ... ---------------------------------------------- ROW KEY COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE ...

輸出值應如下所示:

---------------------------------------------- blue0#1638940844350 Interactions:blue_hat @ 2022/06/08-19:47:33.864000 "viewed details" Interactions:green_jacket @ 2022/06/08-19:47:33.864000 "seen" ... ---------------------------------------------- blue1#1638940844304 Interactions:blue_dress @ 2022/06/08-19:47:33.864000 "purchased" Sales:sale @ 2022/06/08-19:47:33.864000 "blue_dress"

每列包含一位使用者與多項產品的互動 (例如 blue_hat 和 green_jacket),包括使用者是否「看過」、「查看詳細資料」「購買」產品。此外,購買交易會記錄在 Sales 資料欄系列的 sale 資料欄限定詞。

UserSessions 遵循最佳做法,將所有相關的使用者互動和產品都放在同一個資料表,而不是為每種互動、產品或銷售分別建立一個資料表。此外,單一線上購物工作階段的所有產品互動和購買行為,都會儲存為資料表中的一列。

依資料列索引鍵查詢

在 Bigtable,最有效率的查詢會使用下列其中一種方法擷取資料:

  • 資料列索引鍵
  • 資料列索引鍵前置字串
  • 由起始和結束資料列索引鍵定義的資料列範圍

在後續步驟,您將使用 cbt CLI 中的各個選項,查詢「UserSessions」資料表並擷取所需記錄。

若要瞭解如何使用 Bigtable 用戶端程式庫,透過資料列索引鍵讀取單一資料列的資料,請參閱 Bigtable 說明文件。

依資料列索引鍵前置字串查詢

  • 執行下列指令,查看顏色偏好設定為「yellow」的前十列:
cbt read UserSessions \ prefix=yellow \ count=10

輸出值應如下所示:

---------------------------------------------- yellow991#1638940844645 Interactions:green_skirt @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_skirt"

依特定資料列索引鍵範圍查詢

  • 執行下列指令,查看特定範圍內的所有資料列:
cbt read UserSessions \ start=yellow941#1638940844381 \ end=yellow991#1638940844645

輸出值應如下所示:

---------------------------------------------- yellow991#1638940844603 Interactions:blue_blouse @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_jacket#yellow_blouse"

read 指令會以 start 值提供的資料列索引鍵做為範圍開頭,這個範圍會在 end 值提供的資料列索引鍵「之前」結束。因此,輸出內容中不會傳回資料列索引鍵 yellow991#1638940844645

依特定資料列索引鍵查詢

  • 執行下列指令,查看特定資料列索引鍵的所有資料:
cbt lookup UserSessions \ yellow582#1638940844260

輸出值應如下所示:

---------------------------------------------- yellow582#1638940844260 Interactions:blue_jacket @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_skirt"

依資料欄限定詞和資料欄系列查詢

在接下來的步驟,您將擷取依資料欄限定詞和資料欄系列篩選的資料,瞭解如何在 UserSessions 資料表遵循資料欄最佳做法。

  1. 執行下列指令,查詢 Interactions 資料欄系列中前五列的資料:
cbt read UserSessions count=5 \ columns="Interactions:.*"

輸出值應如下所示:

---------------------------------------------- blue0#1638940844501 Interactions:blue_blouse @ 2022/06/08-19:47:33.864000 "viewed details" Interactions:green_jacket @ 2022/06/08-19:47:33.864000 "seen"
  1. 執行下列指令,查詢 Interactions 資料欄系列中,green_jacket 資料欄限定詞含有資料的前五列:
cbt read UserSessions count=5 \ columns="Interactions:green_jacket"

輸出值應如下所示:

---------------------------------------- blue1009#1638940844380 Interactions:green_jacket @ 2022/06/08-21:30:08.683000 "seen" ---------------------------------------- blue101#1638940844263 Interactions:green_jacket @ 2022/06/08-21:30:08.683000 "seen"
  1. 執行下列指令,查詢 Sales 資料欄系列中,sale 資料欄限定詞含有資料的前五列:
cbt read UserSessions count=5 \ columns="Sales:sale"

輸出值應如下所示:

---------------------------------------- blue0#1638940844379 Sales:sale @ 2022/06/08-19:47:33.864000 "blue_shoes#blue_shoes" ---------------------------------------------- blue1#1638940844409 Sales:sale @ 2022/06/08-19:47:33.864000 "blue_blouse"

由於「Sales」資料欄系列只有一個資料欄限定詞 (sale),因此 columns 的值「"Sales:sale"」「"Sales:.*"」會傳回相同的資料欄。

恭喜!

在這個實驗室,您使用 Google Cloud 控制台探索了 Bigtable 執行個體,並透過 Cloud Bigtable CLI (cbt CLI) 查詢 Bigtable 資料表中的資料。您也根據 Bigtable 最佳做法設計了資料表結構定義和資料列索引鍵。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 5 月 30 日

實驗室上次測試日期:2023 年 2 月 16 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。