範例:Go App Engine 應用程式

本範例為一以 Go 語言撰寫的 App Engine 應用程式,提供 Web 介面,以使用 Cloud Bigtable 追蹤您的 Google 帳戶的訪問次數。此程式可以在本機上的 Docker 容器或雲端的彈性環境中執行。這個應用程式的程式碼位於 GitHub 存放區 GoogleCloudPlatform/golang-samplesbigtable/usercounter 目錄中。

程式碼範例總覽

啟動程式碼範例後,會建立一個 Cloud Bigtable 的管理客戶端。然後使用該客戶端檢查使用者所指定的 Cloud Bigtable 執行個體中,是否有一個名為 user-visit-counter 的資料表,其需擁有一個單一欄位系列 emails。若有必要,其會建立資料表和欄位系列︰

adminClient, err := bigtable.NewAdminClient(ctx, project, instance)
if err != nil {
	log.Fatalf("Unable to create a table admin client. %v", err)
}
tables, err := adminClient.Tables(ctx)
if err != nil {
	log.Fatalf("Unable to fetch table list. %v", err)
}
if !sliceContains(tables, tableName) {
	if err := adminClient.CreateTable(ctx, tableName); err != nil {
		log.Fatalf("Unable to create table: %v. %v", tableName, err)
	}
}
tblInfo, err := adminClient.TableInfo(ctx, tableName)
if err != nil {
	log.Fatalf("Unable to read info for table: %v. %v", tableName, err)
}
if !sliceContains(tblInfo.Families, familyName) {
	if err := adminClient.CreateColumnFamily(ctx, tableName, familyName); err != nil {
		log.Fatalf("Unable to create column family: %v. %v", familyName, err)
	}
}
adminClient.Close()

接下來,程式碼範例會建立一個 Cloud Bigtable 客戶端,用於後續所有的讀取與寫入操作:

client, err = bigtable.NewClient(ctx, project, instance)
if err != nil {
	log.Fatalf("Unable to create data operations client. %v", err)
}

最後,程式碼範例會新增一個 HTTP 處理程序到 App Engine 伺服器的根目錄。對於每一次要求,若有必要,處理程序會提示使用者登入,然後會對使用者的電子郵箱位址資料列進行 Increment 運算,以追蹤使用者的訪問情況︰

tbl := client.Open(tableName)
rmw := bigtable.NewReadModifyWrite()
rmw.Increment(familyName, u.Email, 1)
row, err := tbl.ApplyReadModifyWrite(ctx, u.Email, rmw)
if err != nil {
	return &appError{err, "Error applying ReadModifyWrite to row: " + u.Email, http.StatusInternalServerError}
}

增加資料列後,處理常式會顯示一個 HTML 頁面,列出目前使用者的總造訪次數。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Bigtable 說明文件