設計結構定義
Bigtable 資料表的理想結構定義取決於多項因素,包括用途、資料存取模式,以及您打算儲存的資料。本頁面提供 Bigtable 結構定義設計程序的總覽。
閱讀本頁面之前,請先瞭解結構定義設計概念和最佳做法。如果適用,請一併閱讀「時間序列資料的結構定義設計」。
事前準備
建立或找出可用於測試結構定義的 Bigtable 執行個體。
收集資訊
- 找出您打算儲存在 Bigtable 中的資料。
可詢問的問題包括:
- 資料採用哪種格式?可能的格式包括原始位元組、字串、protobuf 和 JSON。
- 資料中的實體是什麼?舉例來說,您是否要儲存網頁瀏覽、股價、廣告刊登位置、裝置評估結果或其他類型的實體?實體是由哪些要素構成?
- 資料是否以時間為準?
- 找出並排序用於取得所需資料的查詢。考量您要儲存的實體,並思考使用資料時的排序和分組方式。您的結構定義設計可能無法滿足所有查詢,但最好能滿足最重要或最常使用的查詢。查詢範例包括:
- IoT 物件一個月內的溫度讀數。
- IP 位址的每日廣告瀏覽次數。
- 行動裝置的最新位置資訊。
- 每位使用者每日的所有應用程式事件。
設計
決定初始結構定義設計。也就是規劃資料列鍵的模式、資料表將擁有的資料欄系列,以及這些資料欄系列中所需資料欄的資料欄限定符。請遵循一般結構定義設計指南。如果資料是以時間為準,請一併遵循時間序列資料指南。
如果您打算使用 SQL 查詢資料表,而不是 Bigtable Data API ReadRows
方法,請參閱下列文件:
如要使用 SQL 查詢資料表檢視區塊和資料表本身,請參閱「資料表和檢視區塊」。
測試
- 使用您為結構定義設計的資料欄系列和資料欄限定符建立資料表。
- 使用您在草案中識別的資料列鍵,將至少 30 GB 的測試資料載入資料表。每個節點的儲存空間使用率應維持在限制以下。
- 執行高負載測試幾分鐘。這個步驟可讓 Bigtable 根據觀察到的存取模式,在節點之間平衡資料。
- 模擬您通常會傳送至資料表的讀取和寫入作業,時間為一小時。
使用 Key Visualizer 和 Cloud Monitoring 檢查模擬結果。
Bigtable 的 Key Visualizer 工具會提供掃描結果,顯示叢集中每個資料表的用量模式。Key Visualizer 可協助您檢查結構定義設計和使用模式是否導致不良結果,例如特定資料列上的資源使用率不均。
監控功能可協助您檢查指標 (例如叢集中最繁忙節點的 CPU 使用率),判斷結構定義設計是否導致問題。
修正
- 根據您透過 Key Visualizer 瞭解到的資訊,視需要修訂結構定義設計。例如:
- 如果發現熱點,請使用不同的資料列鍵。
- 如果發現延遲,請確認資料列是否超過每列 100 MB 的限制。
- 如果您發現必須使用篩選器才能取得所需資料,請考慮以允許更簡單 (且更快) 讀取的方式將資料正規化:依資料列鍵讀取單一資料列或資料列範圍。
- 修改結構化資料後,請再次測試並檢查結果。
- 持續修改結構定義設計並進行測試,直到 Key Visualizer 的檢查結果顯示結構定義設計已達到最佳狀態為止。
後續步驟
- 觀看 Twitter 針對 Bigtable 採用的疊代設計程序簡報。
- 進一步瞭解 Bigtable 效能。