表格存儲TableStore是阿里雲自研的面向海量結構化和半結構化數據存儲的Serverless NoSQL多模型數據庫,被普遍用於社交、物聯網、人工智能、元數據和大數據等業務場景。表格存儲TableStore採用與Google Bigtable相似的寬表模型,自然的分佈式架構,能支撐高吞吐的數據寫入以及PB級數據存儲。數據庫
原生的寬表數據模型,存在一些自然的缺陷,例如沒法很好的支持屬性列的多條件組合查詢,或者更高級的全文檢索或空間檢索。另外在與計算系統的對接上,特別是流計算場景,傳統的大數據Lambda架構,須要用戶維護多套存儲和計算系統,無法很自然的支持數據在存儲和計算系統之間的流轉。以上這些問題,均在表格存儲TableStore在支持阿里巴巴集團內、阿里雲公共雲以及專有云等業務中逐漸暴露出來。編程
表格存儲TableStore簡單可靠的數據模型和架構,開始承擔愈來愈豐富的不一樣類型的數據存儲,例如時序時空數據、元數據、消息數據、用戶行爲數據和軌跡溯源數據等。愈來愈多的客戶也開始把表格存儲TableStore當作一個統一的在線大數據存儲平臺,因此咱們迫切須要支持海量數據中對數據的高效查詢、分析和檢索。同時也須要考慮如何更貼近業務,抽象出更貼近業務的數據模型,讓數據的接入變得更加簡單。跨域
在2019年3月6日的阿里雲新品發佈會上,表格存儲TableStore對如下幾個方面作了重大升級:數據結構
表格存儲TableStore在選擇要支持的數據模型的時候,更多的綜合了當前業務現狀以及用戶畫像,提取大部分客戶的通用需求,總結和定義了產品適合的幾大類核心數據場景,來抽象和定義數據模型。數據模型的定義分爲『具象』和『抽象』:抽象模型是相似於關係模型或者文檔模型的能知足大部分類型數據的抽象,屬於比較通用的數據模型;具象模型是對某一具體特徵場景數據的抽象,適合單一垂直類的數據場景。表格存儲TableStore同時提供抽象和具象模型,固然在介紹這些模型以前,先來明確咱們的核心數據場景。架構
表格存儲TableStore的核心場景包含這五大類,分別對應不一樣類型的應用系統,以及每類數據場景下數據有典型的特徵和對存儲和計算的特殊的需求,簡單來講:less
基於以上總結的表格存儲TableStore所針對的核心數據場景,咱們從業務需求中抽象出三大類數據模型,分別是:WideColumn(寬行模型)、Timeline(消息模型)和Timestream(時序模型)。異步
寬行模型是由Bigtable提出,特徵是:分佈式
寬行模型主要應用於元數據和大數據場景,一些典型應用場景可參考:ide
咱們也提供HBase API兼容的Client:《使用HBase Client訪問阿里雲NoSQL數據庫表格存儲》。函數
消息模型是表格存儲TableStore針對消息數據所抽象的數據模型,主要適用於消息系統中海量消息存儲和同步,特徵是:
消息模型主要應用於消息數據場景,一些典型應用場景可參考:
時序模型主要應用與時序和時空場景,也是表格存儲TableStore綜合了業界主流的時序數據庫,所定義和抽象的數據模型,特徵是:
時序模型主要應用於時序和時空數據,一些典型應用場景可參考:
上述場景中提到的對於表內數據的查詢優化,最基本手段就是須要對數據創建索引。表格存儲TableStore選擇的作法是,對於不一樣類型的查詢場景,咱們須要提供不一樣類型的索引。業界對海量數據創建索引的方案有多種,在傳統技術架構中應用比較多的主要包括Phoenix SQL二級索引或者Elasticsearch搜索引擎。二級索引能提供高效的固定維度的條件查詢,查詢性能不受數據規模的影響,而Elasticsearch搜索引擎能提供比較靈活的多條件組合查詢、全文索引和空間索引。兩種類型的索引實現,有不一樣的優缺點,以及適用於不一樣的場景。表格存儲TableStore的作法是同時實現和這兩類索引原理相似的索引,來知足不一樣場景下對查詢的不一樣需求。
當用戶建立一張表時,其全部PK列構成了該表的『一級索引』:即給定完整的行主鍵,能夠迅速的查找到該主鍵所在行的數據。可是愈來愈多的業務場景中,須要對錶的屬性列,或者非主鍵前綴列進行條件上的查詢,因爲沒有足夠的索引信息,只能經過進行全表的掃描,配合條件過濾,來獲得最終結果,特別是全表數據較多,但最終結果不多時,全表掃描將浪費極大的資源。表格存儲TableStore提供的全局二級索引功能支持在指定列上創建索引,生成的索引表中數據按用戶指定的索引列進行排序,主表的每一筆寫入都將自動異步同步到索引表。用戶只向主表中寫入數據,根據索引表進行查詢,在許多場景下,將極大的提升查詢的效率。更多的技術解讀,請參考這篇文章《經過全局二級索引加速表格存儲上的數據查詢》。
表格存儲TableStore多元索引是表格存儲TableStore重點打造的一個多功能索引能力,旨在補位二級索引沒法覆蓋的場景,解決大數據場景下的複雜查詢和輕量級分析問題,好比多字段組合查詢、前綴查詢、通配符查詢、嵌套查詢、全文檢索(分詞)、地理位置查詢、排序和統計聚合等功能。關於對多元索引的更多解讀,能夠閱讀這篇文章《TableStore多元索引,大數據查詢的利器》,關於多元索引的更多應用場景,能夠參考如下文章:
表格存儲TableStore已經與比較多的開源大數據計算引擎以及阿里雲計算產品銜接,例如Hive、Spark、MaxCompute以及DataLakeAnalytics等,覆蓋了批量計算和交互式分析。能夠由第三方產品提供的數據通道服務,將表格存儲TableStore上的數據全量或者增量複製到計算系統,也能夠由計算系統經過Connector直接訪問表內的數據。
批量計算和交互式分析訪問數據存儲的方式是批量掃描,主要經過自定義數據Connector的方式。可是其餘類計算系統例如流計算或者函數計算(Lambda架構),數據是須要流式的而且實時的從存儲系統到計算系統。這個能力是傳統開源Bigtable類數據庫所作不到的,例如HBase或Cassandra。
若是表內的數據能夠實時的流動,那將給錶帶來更豐富的計算和處理場景,例如能夠作跨域複製、備份,或者接入流計算引擎作實時分析或者函數計算作事件觸發式編程,也能夠由應用方自定義數據處理,來作個性化數據處理。
表格存儲TableStore提供了全新的實時數據通道,能支持訂閱表內的實時數據更新,來擴充表格存儲TableStore的計算能力。
TableStore 通道服務(Tunnel Service)是基於表格存儲數據接口之上的全增量一體化服務,通道服務爲用戶提供了增量、全量、增量加全量三種類型的分佈式數據實時消費通道。經過爲數據表創建Tunnel Service數據通道,能夠簡單地實現對錶中歷史存量和新增數據的消費處理。基於通道服務用戶能夠輕鬆的實現如圖所示的場景架構:數據同步、搬遷和備份,流式數據處理以及事件驅動架構。
關於對通道服務TunnelService更多的技術解讀,能夠參考這篇文章:《大數據同步利器: 表格存儲全增量一體消費通道》。基於通道服務的更多應用場景,能夠參考如下文章:
表格存儲TableStore經過同時提供具象和抽象的數據模型,來知足不一樣核心數據場景的要求,更貼近業務抽象;提供多元化索引(全局二級索引和多元索引)來知足不一樣類型場景條件查詢需求;提供全新的實時數據通道,來擴充實時計算的能力以及可自定義的實時數據處理。這三大方面的新功能發佈,可以讓咱們在數據模型、靈活查詢以及數據分析層面,都有必定的提高,幫助打造統一的在線數據存儲平臺。
本文爲雲棲社區原創內容,未經容許不得轉載。