資料表和檢視表
在 Bigtable 中,您可以將資料儲存在資料表中,並建立多種資料表檢視畫面。您使用的檢視畫面類型取決於您的用途。
資料表
Bigtable 資料表是經過排序的鍵/值對應關係,可將資料儲存在資料列和資料欄中。每個資料列都由單一專屬的資料列索引鍵建立索引。彼此關聯的資料欄通常會分組為「資料欄系列」。
Bigtable 的資料模型十分彈性,資料表也稀疏。也就是說,如果資料列中未使用資料欄,系統就不會儲存該資料欄的資料。您不需要像關聯式資料庫一樣,為未使用的資料欄儲存 NULL 值。在 Bigtable 資料表中,特定資料列可能只有一個資料欄,而相鄰的資料列則有 100 個資料欄。
在資料列中,資料欄可以包含多個儲存格,每個儲存格都由四元組 (資料列索引鍵、資料欄系列、資料欄限定詞、時間戳記) 識別。在資料欄中儲存多個儲存格,可記錄該資料列和資料欄的儲存資料歷來變化。
Bigtable 資料表不支援聯結,且僅支援單一資料列內的交易。
資料表是執行個體層級的資源,會自動複製到執行個體中的每個叢集。資料保留時間是由資料欄系列層級設定的垃圾回收政策控管。
詳情請參閱「Bigtable 總覽」和「結構定義設計最佳做法」。
瀏覽次數
Bigtable 支援下列類型的資料表檢視畫面:邏輯檢視畫面、持續性 materialized view 和授權檢視畫面。您可以透過檢視表與特定使用者和群組共用資料表資料,無須授予他們基礎來源資料的存取權。
邏輯檢視表
邏輯檢視表 (通常簡稱為「檢視表」) 是 SQL 查詢的結果。可做為虛擬資料表,供其他 SQL 查詢使用。 詳情請參閱「建立及管理邏輯檢視區塊」。
參數化檢視區塊
參數化檢視區塊是一種邏輯檢視區塊,可根據應用程式情境動態篩選資料範圍。這種做法可保護應用程式免於 SQL 注入攻擊,並減少多個靜態檢視區塊的需求。
詳情請參閱「參數化檢視區塊總覽」。
持續性 materialized view
持續增補的 materialized view 是透過對 Bigtable 資料表持續執行 SQL 查詢所建立。Bigtable 會根據查詢輸出內容建立新資料表,並與來源資料表保持同步。
持續性具體化檢視區塊有助於提升查詢效能。新資料表 (即持續性具體化檢視區塊) 的結構定義與來源資料表不同,包含預先匯總或轉換的資料,最適合用於與來源資料表不同的查詢。
持續性 materialized view 處於唯讀狀態。您需要支付持續 materialized view 的儲存費用,以及建立第二個資料表、與來源資料表保持同步,以及複製資料表時的處理作業費用。
詳情請參閱「持續具體化檢視區塊」。
授權檢視表
授權檢視表是資料表檢視表,可設定為只包含特定資料表資料,並單獨授予存取權,不必與來源資料表相同。授權 view 是透過 JSON 格式的定義檔定義。
與持續性具體化檢視區或邏輯檢視區不同,Bigtable 授權檢視區可用於控管讀寫權限。
如果您在 Bigtable 資料表中儲存多位客戶的資料,並希望只授予每位客戶存取資料表子集的權限,授權 view 就非常實用。
授權檢視不會產生額外儲存費用。
詳情請參閱「授權檢視表總覽」。
比較
下表提供更多資訊,說明 Bigtable 資料表檢視區塊之間的差異。
| 邏輯檢視畫面 | 參數化檢視區塊 | 持續性具體化檢視區塊 | 授權 view | |
|---|---|---|---|---|
| 結構 | 代表 SQL 查詢結果的虛擬資料表 | 代表 SQL 查詢結果的虛擬資料表 | 以來源資料表為基礎的唯讀資料表 | 資料表子集 |
| 定義 | SQL 查詢 | 使用 VIEW_PARAMETERS() 的 SQL 查詢 |
SQL 查詢 | JSON 定義檔案 |
| 與來源資料表保持一致 | 查詢執行時保持一致 | 查詢執行時保持一致 | 最終一致性 | 查詢執行時保持一致 |
| 查詢選項 | 必須使用 SQL | SQL | SQL 或 Bigtable Data API | Bigtable Data API |
| 可寫入 | 否 | 否 | 否 | 是 |
| 儲存空間 | 資料仍會保留在來源資料表中 | 資料仍會保留在來源資料表中 | 資料經過複製、彙整或轉換後,會儲存在新的唯讀資料表中 | 資料仍會保留在來源資料表中 |
| 使用費用 | 運算處理作業,執行查詢 | 運算處理作業,執行查詢 | 同步處理時的運算處理、儲存空間費用 | 運算處理作業,執行查詢 |