在 Bigtable 中建立及更新計數器
瞭解如何使用匯總在 Bigtable 中建立及更新計數器,也就是在寫入時匯總值的資料表儲存格。本快速入門導覽課程會使用 Google Cloud CLI 和 cbt CLI 建立三個計數器:
- 持續計算總和的計數器
- 追蹤所有新增值的最小值
- 追蹤所有新增值最大值的計數器
事前準備
-
登入 Google 帳戶。
如果沒有帳戶,請 申請新帳戶。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:
gcloud components update gcloud components install cbt
-
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 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 專案名稱。
啟用 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 -
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:
gcloud components update gcloud components install cbt
-
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 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 專案名稱。
啟用 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 - 執行下列指令,確保 gcloud CLI 為最新版本,且包含
cbtCLI:gcloud components updategcloud components install cbt
建立 Bigtable 執行個體
使用
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"
連線至執行個體
建立
.cbtrc檔案,將cbtCLI 設為使用您的專案和執行個體。echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc將 PROJECT_ID 替換為您使用的專案 ID。
確認您已正確設定
.cbtrc檔案。cat ~/.cbtrc終端機會顯示
.cbtrc檔案的內容,類似於下列內容:project = PROJECT_ID instance = counters-quickstart-instance
現在您可以使用
cbtCLI 執行個體。
建立含有匯總資料欄系列的資料表
使用
cbt createtable指令建立名為counters_quickstart_table的資料表,其中包含三個匯總資料欄系列。使用不同的匯總類型設定每個資料欄系列:- 資料欄系列
max_family是Max類型,輸入類型為Integer。 - 資料欄系列
min_family是Min類型,輸入類型為Integer。 - 資料欄系列
sum_family是Sum類型,輸入類型為Integer。
cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax- 資料欄系列
執行
cbt ls指令,列出資料欄系列。cbt ls counters_quickstart_tableshell 會顯示類似以下內容的輸出︰
Family Name GC Policy ----------- --------- max_family <never> min_family <never> sum_family <never>
在資料表中建立計數器
使用
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
讀取資料
如要以整數而非位元組的形式查看計數器值,請定義
yaml檔案,供cbtCLI 用於格式化輸出內容。執行以下指令: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確認您已正確設定
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使用
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
更新計數器
使用您建立儲存格時的相同時間戳記,在資料表的每個欄位中新增值 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再次使用
cbt read指令讀取資料表中的資料。每個儲存格現在都包含匯總值。cbt read counters_quickstart_table format-file=$HOME/cbtformat.yamlsum_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 控制台中以 SQL 查詢資料表。
在 Google Cloud 控制台中,開啟「Bigtable instances」(Bigtable 執行個體) 頁面。
從清單中選取
counters-quickstart-instance。在導覽選單中,按一下「Bigtable Studio」。
按一下「編輯器」分頁標籤。
將這項查詢貼到編輯器:
SELECT * FROM `counters_quickstart_table`按一下「執行」。查詢結果會顯示在「Results」(結果) 資料表中,類似於下列內容:
_key max_family min_family sum_family row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。
在終端機中刪除資料表
counters_quickstart_table:cbt deletetable counters_quickstart_table刪除執行個體:
cbt deleteinstance counters-quickstart-instance刪除
.cbtrc檔案:rm ~/.cbtrc刪除格式設定檔案:
rm ~/cbtformat.yaml選用:從 gcloud CLI 撤銷憑證:
gcloud auth revoke