寬表模型
寬表模型(WideColumn)是類Bigtable/HBase模型,可應用于元數據、大數據等多種場景。寬表模型通過數據表存儲數據,單表支持PB級數據存儲和千萬QPS。數據表具有Schema-Free、寬行、多版本數據以及生命周期管理特點,支持主鍵列自增、局部事務、原子計數器、過濾器、條件更新等功能。
模型介紹
表格存儲寬表模型是類Bigtable/HBase模型,通過數據表采用三維結構(行、列和時間)存儲數據。數據表的每一行可以有不同的列,可以動態增加或者減少屬性列,創建表時無需為表的屬性列定義嚴格的Schema。
模型構成
寬表模型如上圖所示,由以下幾個部分組成。
組成部分 | 描述 |
主鍵(Primary Key) | 主鍵是數據表中每一行的唯一標識,主鍵由1到4個主鍵列組成。 |
分區鍵(Partition Key) | 主鍵的第一列稱為分區鍵。表格存儲按照分區鍵對數據表的數據進行分區,具有相同分區鍵的行會被劃分到同一個分區,實現數據訪問負載均衡。 |
屬性列(Attribute Column) | 一行中除主鍵列外,其余都是屬性列。屬性列會對應多個值,不同值對應不同的版本,每行的屬性列個數沒有限制。 |
版本(Version) | 每一個值對應不同的版本,版本的值是一個時間戳,用于定義數據的生命周期。更多信息,請參見版本號。 |
數據類型(Data Type) | 表格存儲支持多種數據類型,包含String、Binary、Double、Integer和Boolean。更多信息,請參見數據類型。 |
生命周期(Time To Live) | 每個數據表可定義數據生命周期。例如生命周期配置為一個月,則表格存儲會自動清理一個月前寫入數據表的數據。更多信息,請參見數據生命周期。 |
最大版本數(Max Versions) | 每個數據表可定義每個屬性列的數據最多保存的版本個數,用于控制屬性列數據的版本個數。當一個屬性列數據的版本個數超過Max Versions時,表格存儲會異步刪除較早版本的數據。更多信息,請參見最大版本數。 |
核心組件
數據表、行、主鍵和屬性是表格存儲寬表模型的核心組件。數據表是行的集合,而每個行是主鍵和屬性的集合。組成主鍵的第一個主鍵列稱為分區鍵。
主鍵、屬性和分區鍵的具體說明請參見下表。
關于主鍵列和屬性列的數據類型的更多信息,請參見命名規則和數據類型。
組件 | 說明 |
主鍵 | 主鍵是數據表中每一行的唯一標識,主鍵由1到4個主鍵列組成。創建數據表時,必須指定主鍵的組成、每一個主鍵列的名稱、數據類型以及主鍵的順序。 表格存儲根據數據表的主鍵索引數據,數據表中的行默認按照主鍵進行升序排序。 |
分區鍵 | 組成主鍵的第一個主鍵列稱為分區鍵。表格存儲會根據數據表中每一行分區鍵的值所屬范圍自動將一行數據分配到對應的分區和機器上來達到負載均衡的目的。具有相同分區鍵值的行屬于同一個數據分區,一個分區可能包含多個分區鍵值。表格存儲服務會自動根據特定的規則對分區進行分裂和合并。 說明 分區鍵值是最小的分區單位,相同的分區鍵值的數據無法再做切分。為了防止分區過大無法切分,單個分區鍵值所有行的大小總和建議不超過10 GB。關于分區鍵選擇的更多信息,請參見表操作篇。 |
屬性 | 屬性由多個屬性列組成。每行的屬性列個數無限制,且每行的屬性列可不同。屬性列在某一行的值可以為空。同一個屬性列的值可以有多種數據類型。 屬性列具有版本特征,屬性列的值可以根據需求保留多個版本,用于查詢和使用;屬性列的值可以設置生命周期(TTL)。更多信息,請參見數據版本和生命周期。 |
與關系模型區別
寬表模型和關系模型的區別請參見下表。
模型 | 特點 |
寬表模型 | 三維結構(行、列和時間)、Schema-Free、寬行、多版本數據以及生命周期管理。 |
關系模型 | 二維(行、列)以及固定的Schema。 |
使用限制
使用寬表模型時的通用限制,請參見通用限制。
使用流程
主要步驟說明請參見下表。
步驟 | 操作 | 說明 |
1 | 創建RAM用戶后,為RAM用戶配置訪問表格存儲資源所需的最小化權限。您可以使用系統默認策略或者自定義權限策略為RAM用戶授予訪問表格存儲資源的權限。 如果要使用阿里云賬號或者要使用的RAM用戶已具有訪問表格存儲存儲資源所需的權限,請跳過此步驟。 重要 阿里云賬號默認具有所有云資源的操作權限,為了您的資源安全,建議您為阿里云賬號創建RAM用戶并為其授權,實現不同RAM用戶擁有不同資源訪問權限的目的。 | |
2 | 使用表格存儲功能前,您必須開通表格存儲服務。 服務僅需開通一次,開通過程免費。如果已經開通表格存儲服務,請跳過此操作。 | |
3 | 根據確定的實例模型和實例規格在所需地域中創建相應實例。 如果已存在實例滿足使用需求,請跳過此步驟。 | |
4 | 創建數據表用于存儲業務相關數據。創建數據表時,您可以根據業務需求同時配置如下功能。
| |
5 | 說明 合理的屬性列設置能提升業務數據使用效率,建議您參考數據操作最新實踐文檔進行屬性列設置。 在數據表中寫入、更新、讀取或者刪除數據。
如果要刪除數據,您可以直接進行手動刪除或者使用數據生命周期實現自動清理數據。具體操作,請參見刪除數據或數據版本和生命周期。 | |
6 | 使用索引加速數據查詢 | 如果基于數據表主鍵的數據讀取不能滿足業務的查詢需求,您可以使用索引加速數據查詢。表格存儲提供了二級索引和多元索引用于滿足不同場景的數據查詢需求。 |
7 | 分析數據 | 通過SQL查詢或者多元索引統計聚合分析表中的數據。
說明 您也可以通過MaxCompute、Spark、Hive或者HadoopMR、函數計算、Flink等計算引擎分析表格存儲中的數據。更多信息,請參見計算與分析概述。 |
計費說明
表格存儲支持VCU模式(原預留模式)和CU模式(原按量模式)兩種計費模式,請根據所用的實例模型參考相應計費模式了解計費信息。更多信息,請參見計費概述。
VCU模式(原預留模式):計費項包括計算能力、數據存儲量和外網下行流量,其中數據存儲量包括高性能存儲、容量型存儲和多元索引存儲。
CU模式(原按量模式):計費項包括讀吞吐量、寫吞吐量、數據存儲量和外網下行流量。
常見問題
相關文檔
您可以通過控制臺、命令行工具快速體驗寬表模型。具體操作,請參見使用寬表模型。
如果要實現實例數據的機房級容災,您可以通過創建同城冗余類型的實例實現。更多信息,請參見同城冗余。
如果要保證數據存儲安全和網絡訪問安全,您可以使用數據表加密、VPC網絡訪問等方式實現。更多信息,請參見數據加密和網絡安全管理。
如果要防止重要數據被誤刪除,您可以使用數據備份功能實現定期備份重要數據。更多信息,請參見備份Tablestore數據。
如果要對表中歷史存量和新增數據的消費處理,您可以使用通道服務實現。更多信息,請參見通道服務概述。
如果要為監控指標配置報警通知,您可以使用云監控實現。更多信息,請參見監控與告警。
如果要以圖表等形式可視化展示數據,您可以使用DataV或者Grafana實現。更多信息,請參見數據可視化工具。
使用寬表模型可以實現元數據、大數據等多種場景的解決方案,例如搭建海量智能元數據管理系統、億量級訂單管理方案、基于多元索引搭建億量級店鋪搜索系統、表格存儲結合Spark流批處理實現一體化存儲和計算、表格存儲結合實時計算Flink進行大數據分析。更多方案介紹,請參見場景實戰-典型場景架構與實現。
基于物聯網場景中多源異構數據存儲、高并發吞吐、海量數據高性價比存儲、多維度數據處理與分析等需求,表格存儲推出了一站式物聯網存儲IoTstore解決方案,為物聯網設備元數據、消息數據、時序軌跡等海量數據提供存儲、查詢、檢索、分析、同步等能力。更多信息, 請參見物聯網存儲簡介、時序數據接入、設備時序數據開發、設備元數據接入和時序分析存儲。