寬表模型(WideColumn)是類Bigtable/HBase模型,可應用於中繼資料、巨量資料等多種情境。寬表模型通過資料表格儲存體資料,單表支援PB級資料存放區和千萬QPS。資料表具有Schema-Free、寬行、多版本資料以及生命週期管理特點,支援主鍵列自增、局部事務、原子計數器、過濾器、條件更新等功能。
模型介紹
Tablestore寬表模型是類Bigtable/HBase模型,通過資料表採用三維結構(行、列和時間)儲存資料。資料表的每一行可以有不同的列,可以動態增加或者減少屬性列,建立表時無需為表的屬性列定義嚴格的Schema。
模型構成
寬表模型如上圖所示,由以下幾個部分組成。
組成部分 | 描述 |
主鍵(Primary Key) | 主鍵是資料表中每一行的唯一標識,主鍵由1到4個主鍵列組成。 |
分區鍵(Partition Key) | 主鍵的第一列稱為分區鍵。Tablestore按照分區鍵對資料表的資料進行分區,具有相同分區鍵的行會被劃分到同一個分區,實現資料訪問負載平衡。 |
屬性列(Attribute Column) | 一行中除主鍵列外,其餘都是屬性列。屬性列會對應多個值,不同值對應不同的版本,每行的屬性列個數沒有限制。 |
版本(Version) | 每一個值對應不同的版本,版本的值是一個時間戳記,用於定義資料的生命週期。更多資訊,請參見版本號碼。 |
資料類型(Data Type) | Tablestore支援多種資料類型,包含String、Binary、Double、Integer和Boolean。更多資訊,請參見資料類型。 |
生命週期(Time To Live) | 每個資料表可定義資料生命週期。例如生命週期配置為一個月,則Tablestore會自動清理一個月前寫入資料表的資料。更多資訊,請參見資料生命週期。 |
最大版本數(Max Versions) | 每個資料表可定義每個屬性列的資料最多儲存的版本個數,用於控制屬性列資料的版本個數。當一個屬性列資料的版本個數超過Max Versions時,Tablestore會非同步刪除較早版本的資料。更多資訊,請參見最大版本數。 |
核心組件
資料表、行、主鍵和屬性是Table Store寬表模型的核心組件。資料表是行的集合,而每個行是主鍵和屬性的集合。組成主鍵的第一個主鍵列稱為分區鍵。
主鍵、屬性和分區鍵的具體說明請參見下表。
關於主鍵列和屬性列的資料類型的更多資訊,請參見命名規則和資料類型。
組件 | 說明 |
主鍵 | 主鍵是資料表中每一行的唯一標識,主鍵由1到4個主鍵列組成。建立資料表時,必須指定主鍵的組成、每一個主鍵列的名稱、資料類型以及主鍵的順序。 Tablestore根據資料表的主鍵索引資料,資料表中的行預設按照主鍵進行升序排序。 |
分區鍵 | 組成主鍵的第一個主鍵列稱為分區鍵。Tablestore會根據資料表中每一行分區鍵的值所屬範圍自動將一行資料分配到對應的分區和機器上來達到負載平衡的目的。具有相同分區索引值的行屬於同一個資料分區,一個分區可能包含多個分區索引值。Tablestore服務會自動根據特定的規則對分區進行分裂和合并。 說明 分區索引值是最小的分區單位,相同的分區索引值的資料無法再做切分。為了防止分區過大無法切分,單個分區索引值所有行的大小總和建議不超過10 GB。關於分區鍵選擇的更多資訊,請參見表操作篇。 |
屬性 | 屬性由多個屬性列組成。每行的屬性列個數無限制,且每行的屬性列可不同。屬性列在某一行的值可以為空白。同一個屬性列的值可以有多種資料類型。 屬性列具有版本特徵,屬性列的值可以根據需求保留多個版本,用於查詢和使用;屬性列的值可以設定生命週期(TTL)。更多資訊,請參見資料版本和生命週期。 |
與關聯式模式區別
寬表模型和關聯式模式的區別請參見下表。
模型 | 特點 |
寬表模型 | 三維結構(行、列和時間)、Schema-Free、寬行、多版本資料以及生命週期管理。 |
關聯式模式 | 二維(行、列)以及固定的Schema。 |
使用限制
使用寬表模型時的通用限制,請參見使用限制。
功能列表
功能特性 | 描述 | 相關文檔 |
表操作 | 支援列出執行個體中的全部資料表、建立一張資料表、查詢資料表的配置資訊、更新資料表的配置資訊以及刪除一張資料表。 | |
基礎資料操作 | Tablestore提供了PutRow、GetRow、UpdateRow和DeleteRow的單行資料操作介面以及BatchWriteRow、BatchGetRow和GetRange的多行資料操作介面。您可以通過單行資料操作介面或者多行資料操作介面讀寫表中資料。 | |
資料版本和生命週期 | 使用資料版本以及資料生命週期(TTL)功能,您可以有效管理資料,減少資料存放區空間,降低儲存成本。 | |
主鍵列自增 | 設定非分區鍵的主鍵列為自增列後,在寫入資料時,無需為自增列設定具體值,Tablestore會自動產生自增列的值。該值在分區鍵層級唯一且嚴格遞增。 | |
條件更新 | 只有滿足條件時,才能對資料表中的資料進行更新;當不滿足條件時,更新失敗。 | |
局部事務 | 建立資料範圍在一個分區索引值內的局部事務。對局部事務中的資料進行讀寫操作後,可以根據實際情況提交或者丟棄局部事務。 | |
原子計數器 | 將列當成一個原子計數器使用,對該列進行原子計數操作,可用於為某些線上應用提供即時統計功能,例如統計文章的PV(即時瀏覽量)等。 | |
過濾器 | 在服務端對讀取的結果再進行一次過濾,根據過濾器中的條件決定返回哪些行。由於只返回合格資料行,所以在大部分情境下,可以有效降低網路傳輸的資料量,減少回應時間。 | |
二級索引 | 通過建立一張或多張索引表,使用索引表的主鍵列查詢,相當於把資料表的主鍵查詢能力擴充到了不同的列。二級索引包括全域二級索引和本地二級索引。
| |
多元索引 | 多元索引基於倒排索引和列式儲存,可以解決巨量資料的複雜查詢難題,包括非主鍵列查詢、全文檢索索引、首碼查詢、模糊查詢、多條件組合查詢、巢狀查詢、地理位置查詢、統計彙總(max、min、count、sum、avg、distinct_count、group_by)、並發匯出資料等功能。 | |
SQL查詢 | SQL查詢功能為多資料引擎提供統一的提供者。通過SQL查詢功能,您可以對Tablestore中資料進行複雜的查詢和高效的分析。使用SQL查詢資料時,您還可以配合索引來最佳化查詢。 | |
通道服務 | Tablestore提供了增量、全量、增量加全量三種類型的分布式資料即時消費通道,可以實現對錶中歷史存量和新增資料的消費處理。 |
計費說明
計費項目包括讀輸送量、寫輸送量、資料存放區量和外網下行流量。更多資訊,請參見計費概述。
常見問題
相關文檔
如果要實現執行個體資料的機房級容災,您可以通過建立同城冗餘類型的執行個體實現。更多資訊,請參見同城冗餘。
如果要保證資料存放區安全和網路訪問安全,您可以使用資料表加密、VPC網路訪問等方式實現。更多資訊,請參見資料加密和網路安全管理。
如果要防止重要資料被誤刪除,您可以使用資料備份功能實現定期備份重要資料。更多資訊,請參見資料備份。
如果要對錶中歷史存量和新增資料的消費處理,您可以使用通道服務實現。更多資訊,請參見通道服務。
如果要為監控指標配置警示通知,您可以使用CloudMonitor實現。更多資訊,請參見監控與警示。
如果要以圖表等形式可視化展示資料,您可以使用DataV或者Grafana實現。更多資訊,請參見資料視覺效果。