在 Bigtable 中建立及更新計數器

瞭解如何使用匯總在 Bigtable 中建立及更新計數器,也就是在寫入時匯總值的資料表儲存格。本快速入門導覽課程會使用 Google Cloud CLI 和 cbt CLI 建立三個計數器:

  • 持續計算總和的計數器
  • 追蹤所有新增值的最小值
  • 追蹤所有新增值最大值的計數器

事前準備

  1. 登入 Google 帳戶。

    如果沒有帳戶,請 申請新帳戶

  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:

    gcloud components update
    gcloud components install cbt
  6. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  7. 確認專案已啟用計費功能 Google Cloud

  8. 啟用 Cloud Bigtable API 和 Cloud Bigtable Admin API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  9. 安裝 Google Cloud CLI。

  10. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  11. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  12. 初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:

    gcloud components update
    gcloud components install cbt
  13. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  14. 確認專案已啟用計費功能 Google Cloud

  15. 啟用 Cloud Bigtable API 和 Cloud Bigtable Admin API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  16. 執行下列指令,確保 gcloud CLI 為最新版本,且包含 cbt CLI:
    gcloud components update
    gcloud components install cbt

建立 Bigtable 執行個體

  1. 使用 bigtable instances create 指令建立執行個體。

    gcloud bigtable instances create counters-quickstart-instance \
        --display-name="Counters quickstart instance" \
        --cluster-config=id="counters-quickstart-cluster",zone="us-east1-c"
    

連線至執行個體

  1. 建立 .cbtrc 檔案,將 cbt CLI 設為使用您的專案和執行個體。

    echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc
    

    PROJECT_ID 替換為您使用的專案 ID。

  2. 確認您已正確設定 .cbtrc 檔案。

    cat ~/.cbtrc
    

    終端機會顯示 .cbtrc 檔案的內容,類似於下列內容:

    project = PROJECT_ID
    instance = counters-quickstart-instance

    現在您可以使用 cbt CLI 執行個體。

建立含有匯總資料欄系列的資料表

  1. 使用 cbt createtable 指令建立名為 counters_quickstart_table 的資料表,其中包含三個匯總資料欄系列。使用不同的匯總類型設定每個資料欄系列:

    • 資料欄系列 max_familyMax 類型,輸入類型為 Integer
    • 資料欄系列 min_familyMin 類型,輸入類型為 Integer
    • 資料欄系列 sum_familySum 類型,輸入類型為 Integer
    cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax
    
  2. 執行 cbt ls 指令,列出資料欄系列。

    cbt ls counters_quickstart_table
    

    shell 會顯示類似以下內容的輸出︰

    Family Name     GC Policy
    -----------     ---------
    max_family      <never>
    min_family      <never>
    sum_family      <never>
    

在資料表中建立計數器

  1. 使用 cbt addtocell 指令,在三個資料欄系列中各寫入一個新資料欄,並使用 row-key1 的資料列索引鍵和 0 的時間戳記,將初始值設為 5。這項作業會建立匯總儲存格,做為計數器使用。

    cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=5@0
    cbt addtocell counters_quickstart_table row-key1 min_family:min_column=5@0
    cbt addtocell counters_quickstart_table row-key1 max_family:max_column=5@0
    

讀取資料

  1. 如要以整數而非位元組的形式查看計數器值,請定義 yaml 檔案,供 cbt CLI 用於格式化輸出內容。執行以下指令:

    echo "families:" > cbtformat.yaml
    echo "  max_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    echo "  min_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    echo "  sum_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    
  2. 確認您已正確設定 cbtformat.yaml 檔案。

    cat ~/cbtformat.yaml
    

    終端機會顯示 cbtformat.yaml 檔案的內容,類似於下列內容:

    families:
      max_family:
        default_encoding: BigEndian
        default_type: INT64
      min_family:
        default_encoding: BigEndian
        default_type: INT64
      sum_family:
        default_encoding: BigEndian
        default_type: INT64
    
  3. 使用 cbt read 指令傳遞 yaml 檔案,並讀取您新增至資料表的資料。現在表格有三欄,每欄的匯總類型都不同。

    cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
    

    殼層會顯示類似下列內容的輸出。這些值會格式化為整數,時間戳記則採用世界標準時間格式。

    row-key1
      max_family:max_column                    @ 1970/01/01-00:00:00.000000
        5
      min_family:min_column                    @ 1970/01/01-00:00:00.000000
        5
      sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
        5
    

更新計數器

  1. 使用您建立儲存格時的相同時間戳記,在資料表的每個欄位中新增值 3。在每個資料欄中,系統會根據儲存格的彙整類型,將儲存格值與現有值合併。

    cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=3@0
    cbt addtocell counters_quickstart_table row-key1 min_family:min_column=3@0
    cbt addtocell counters_quickstart_table row-key1 max_family:max_column=3@0
    
  2. 再次使用 cbt read 指令讀取資料表中的資料。每個儲存格現在都包含匯總值。

    cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
    

    sum_column 包含 5 和 3 的總和 (8),min_column 包含寫入其中的兩個值的最小值 (3),而 max_column 包含寫入其中的兩個值的最大值 (5)。

    row-key1
        max_family:max_column                    @ 1970/01/01-00:00:00.000000
            5
        min_family:min_column                    @ 1970/01/01-00:00:00.000000
            3
        sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
            8
    
  3. 選用:在 Google Cloud 控制台中以 SQL 查詢資料表。

    1. 在 Google Cloud 控制台中,開啟「Bigtable instances」(Bigtable 執行個體) 頁面。

      前往執行個體清單

    2. 從清單中選取 counters-quickstart-instance

    3. 在導覽選單中,按一下「Bigtable Studio」

    4. 按一下「編輯器」分頁標籤。

    5. 將這項查詢貼到編輯器:

      SELECT * FROM `counters_quickstart_table`
      
    6. 按一下「執行」。查詢結果會顯示在「Results」(結果) 資料表中,類似於下列內容:

    _key max_family min_family sum_family
    row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }

清除所用資源

為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。

  1. 在終端機中刪除資料表 counters_quickstart_table

    cbt deletetable counters_quickstart_table
    
  2. 刪除執行個體:

    cbt deleteinstance counters-quickstart-instance
    
  3. 刪除 .cbtrc 檔案:

    rm ~/.cbtrc
    
  4. 刪除格式設定檔案:

    rm ~/cbtformat.yaml
    
  5. 選用:從 gcloud CLI 撤銷憑證:

    gcloud auth revoke
    

後續步驟