在 Bigtable 中建立及更新計數器

瞭解如何使用匯總在 Bigtable 中建立及更新計數器,也就是在寫入時匯總值的資料表儲存格。本快速入門導覽課程會使用Google Cloud 控制台、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,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

    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,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

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

建立 Bigtable 執行個體

控制台

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

  2. 在「Instance name」(執行個體名稱) 欄位中輸入 Counters quickstart instance

  3. 在「Instance ID」(執行個體 ID) 欄位中輸入 counters-quickstart-instance

  4. 按一下「繼續」

  5. 在「選取版本」部分,選取「Enterprise」

  6. 按一下「繼續」

  7. 在「儲存空間類型」部分,選取「SSD」。

  8. 按一下「繼續」

  9. 在「Cluster ID」(叢集 ID) 欄位中輸入 counters-quickstart-cluster

  10. 在「Region」(區域) 清單中,選取「us-east1 (南卡羅來納州)」

  11. 在「Zone」(可用區) 清單中,選取「us-east1-c」

  12. 在節點調度資源部分,選取「Autoscaling」(自動調度資源),然後執行下列操作:

    1. 在節點數下限中輸入 1
    2. 在節點數量上限中輸入 3
  13. 按一下「建立」,建立執行個體。

gcloud

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

    gcloud bigtable instances create counters-quickstart-instance \
        --display-name="Counters quickstart instance" \
        --edition=ENTERPRISE \
        --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. 在 Google Cloud 控制台的左側導覽窗格中,按一下「表格」

  2. 按一下 「建立資料表」

  3. 在「Table ID」(資料表 ID) 欄位中輸入 counters_quickstart_table

  4. 在「資料欄系列」下方,針對要新增的每個資料欄系列,按一下「新增資料欄系列」,然後輸入下列設定:

    • sum_family

      1. 在「Column family name」(資料欄系列名稱) 欄位中輸入 sum_family
      2. 在「Column family type」(資料欄系列類型) 區段中,選取「Aggregate」(匯總)
      3. 在「Aggregator」(匯總器) 清單中,選取「Sum」(總和)
      4. 在「設定垃圾回收政策」部分,選取「永不收集垃圾」
      5. 按一下「完成」
    • min_family

      1. 在「Column family name」(資料欄系列名稱) 欄位中輸入 min_family
      2. 在「Column family type」(資料欄系列類型) 區段中,選取「Aggregate」(匯總)
      3. 在「匯總器」清單中,選取「最小值」
      4. 在「設定垃圾回收政策」部分,選取「永不收集垃圾」
      5. 按一下「完成」
    • max_family

      1. 在「Column family name」(資料欄系列名稱) 欄位中輸入 max_family
      2. 在「Column family type」(資料欄系列類型) 區段中,選取「Aggregate」(匯總)
      3. 在「Aggregator」(匯總器) 清單中,選取「Max」(最大值)
      4. 在「設定垃圾回收政策」部分,選取「永不收集垃圾」
      5. 按一下「完成」
  5. 點選「建立」

  6. 如要查看新的資料欄系列及其匯總設定,請按照下列步驟操作:

    1. 在導覽選單中,按一下「Bigtable Studio」
    2. 在左側的「物件總管」樹狀結構中,依序展開「資料表」counters_quickstart_table 和「資料欄系列」

cbt

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

    • 資料欄系列 max_family 的類型為 Max,輸入類型為 Int64
    • 資料欄系列 min_family 的類型為 Min,輸入類型為 Int64
    • 資料欄系列 sum_family 的類型為 Sum,輸入類型為 Int64
    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
    

讀取資料

您可以在 Google Cloud 控制台中以 SQL 查詢資料表,或使用 cbt CLI 讀取資料。

在 Google Cloud 控制台中以 SQL 查詢資料表

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

    前往執行個體清單

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

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

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

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

    SELECT * FROM `counters_quickstart_table`
    
  6. 按一下「執行」。查詢結果會顯示在「結果」表格中,如下所示:

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

使用 cbt CLI 讀取

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

    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
    

清除所用資源

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

控制台

  1. 刪除 counters_quickstart_table 資料表:

    1. 前往 Google Cloud 控制台的「Bigtable instances」(Bigtable 執行個體) 頁面。

      前往執行個體清單

    2. 在執行個體清單中,按一下「Counters quickstart instance」

    3. 按一下左側導覽窗格中的「表格」

    4. 按一下 counters_quickstart_table 旁的 ,然後點選「刪除」

    5. 輸入 counters_quickstart_table 確認,然後按一下「Delete」(刪除)

  2. 刪除執行個體:

    1. 前往 Google Cloud 控制台的「Bigtable instances」(Bigtable 執行個體) 頁面。

      前往執行個體清單

    2. 按一下「Counters quickstart instance」

    3. 點選「Delete instance」

    4. 輸入 counters-quickstart-instance 確認,然後按一下「Delete」(刪除)

  3. 在終端機中,刪除設定檔和選用憑證:

    1. 刪除 .cbtrc 檔案:

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

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

      gcloud auth revoke
      

cbt

  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
    

後續步驟