表格存储TableStore全新升级,打造统一的在线数据存储平台!
表格存儲TableStore是阿里云自研的面向海量結構化和半結構化數據存儲的Serverless NoSQL多模型數據庫,被廣泛用于社交、物聯網、人工智能、元數據和大數據等業務場景。表格存儲TableStore采用與Google Bigtable類似的寬表模型,天然的分布式架構,能支撐高吞吐的數據寫入以及PB級數據存儲。
原生的寬表數據模型,存在一些天然的缺陷,例如無法很好的支持屬性列的多條件組合查詢,或者更高級的全文檢索或空間檢索。另外在與計算系統的對接上,特別是流計算場景,傳統的大數據Lambda架構,需要用戶維護多套存儲和計算系統,沒法很天然的支持數據在存儲和計算系統之間的流轉。以上這些問題,均在表格存儲TableStore在支持阿里巴巴集團內、阿里云公共云以及專有云等業務中逐漸暴露出來。
表格存儲TableStore簡單可靠的數據模型和架構,開始承擔越來越豐富的不同類型的數據存儲,例如時序時空數據、元數據、消息數據、用戶行為數據和軌跡溯源數據等。越來越多的客戶也開始把表格存儲TableStore當做一個統一的在線大數據存儲平臺,所以我們迫切需要支持海量數據中對數據的高效查詢、分析和檢索。同時也需要考慮如何更貼近業務,抽象出更貼近業務的數據模型,讓數據的接入變得更加簡單。
在2019年3月6日的云棲發布會,表格存儲TableStore對以下幾個方面做了重大升級:
多模型
表格存儲TableStore在選擇要支持的數據模型的時候,更多的綜合了當前業務現狀以及用戶畫像,提取大部分客戶的通用需求,總結和定義了產品適合的幾大類核心數據場景,來抽象和定義數據模型。數據模型的定義分為『具象』和『抽象』:抽象模型是類似于關系模型或者文檔模型的能滿足大部分類型數據的抽象,屬于比較通用的數據模型;具象模型是對某一具體特征場景數據的抽象,適合單一垂直類的數據場景。表格存儲TableStore同時提供抽象和具象模型,當然在介紹這些模型之前,先來明確我們的核心數據場景。
核心場景
?
表格存儲TableStore的核心場景包含這五大類,分別對應不同類型的應用系統,以及每類數據場景下數據有典型的特征和對存儲和計算的特殊的需求,簡單來說:
- 時序數據:時序數據解決的是對包含4W(Who, When, Where, What)元素數據的抽象,數據量相對比較龐大,需要存儲引擎支持對時間線的索引以及對時間線的時間范圍查詢。
- 時空數據:時空數據是基于時序數據加上了空間的維度,同時可能沒有時序數據的連續性。總的來說,特征和時序數據比較類似。
- 消息數據:消息數據廣泛存在于消息系統,例如即時通訊消息系統或者Feeds流消息系統內。消息的存儲和傳遞更像是消息隊列模型,但是要求消息隊列能夠提供海量級消息存儲以及海量Topic,這是傳統專業級消息隊列產品所無法支撐的。
- 元數據:這類元數據屬于非關系類元數據,例如歷史訂單數據、圖片智能標簽元數據點。特點是量級比較大,每個數據存在的屬性比較多且是稀疏的,要求存儲能夠支持對各種維度屬性的條件過濾,對查詢可用性有比較高的要求。
- 大數據:這是Bigtable模型所對應的最主要數據場景,特點是數據量極其龐大,需要很好的支持批量計算。
TableStore多模型
基于以上總結的表格存儲TableStore所針對的核心數據場景,我們從業務需求中抽象出三大類數據模型,分別是:WideColumn(寬行模型)、Timeline(消息模型)和Timestream(時序模型)。
寬行模型
?
寬行模型是由Bigtable提出,特征是:
- 三維數據結構:對比MySQL的二維數據結構,在屬性列這一維度上多了版本屬性。同一列數據可以存儲多個不同版本,并可定義不同的生命周期,主要用于數據的自動化生命周期管理。
- 稀疏列:表不需要有強格式定義,可以任意的對每一行定義列和類型。
- 大表:一張表可以存儲萬億行數據,大表數據根據分區鍵的范圍來分區,不同的分區由不同的機器來加載和提供服務,能比較簡單的實現分布式。
寬行模型主要應用于元數據和大數據場景,一些典型應用場景可參考:
- 《TableStore實戰:智能元數據管理方案》
- 《TableStore實戰:億量級訂單管理解決方案》
- 《百億級全網輿情分析系統存儲設計》
- 《基于云上分布式NoSQL的海量氣象數據存儲和查詢方案》
我們也提供HBase API兼容的Client:《使用HBase Client訪問阿里云NoSQL數據庫表格存儲》。
消息模型
?
消息模型是表格存儲TableStore針對消息數據所抽象的數據模型,主要適用于消息系統中海量消息存儲和同步,特征是:
- 輕量級消息隊列:大表中能模擬海量消息隊列,雖然不能完全模擬一個真正消息隊列的所有能力,但是能滿足對消息最基本的存儲和同步能力。
- 消息永久存儲:能保證對數據的永久存儲,消息寫入和同步的性能不會受到數據規模的影響。
- 消息同步模型:對消息同步模型沒有嚴格要求,應用層可以根據自己的業務特征,同時實現推模型或者拉模型。
消息模型主要應用于消息數據場景,一些典型應用場景可參考:
- 《現代IM系統中消息推送和存儲架構的實現》
- 《TableStore Timeline:輕松構建千萬級IM和Feed流系統》
- 《如何打造千萬級Feed流系統》
- 《基于TableStore構建簡易海量Topic消息隊列》
- 《如何快速開發一個IM系統》
時序模型
?
時序模型主要應用與時序和時空場景,也是表格存儲TableStore綜合了業界主流的時序數據庫,所定義和抽象的數據模型,特征是:
- 海量數據存儲:能提供PB級數據存儲,可打造多租戶的時序數據庫底層存儲,寫入和查詢性能不受數據規模的影響。
- 時間線索引:提供對時間線的索引,能滿足對時間線Tag的任何條件組合過濾,并且能夠支持比較海量的時間線規模。
- 完整的模型定義:在業界標桿的時序數據庫模型定義上,補充了空間維度的定義并且提供空間索引,以及支持多列值支持,不限制只對數值類型的支持。
時序模型主要應用于時序和時空數據,一些典型應用場景可參考:
- 《TableStore時序數據存儲 - 架構篇》
- 《TableStore實戰:輕松實現軌跡管理與地理圍欄》
查詢優化
上述場景中提到的對于表內數據的查詢優化,最基本手段就是需要對數據建立索引。表格存儲TableStore選擇的做法是,對于不同類型的查詢場景,我們需要提供不同類型的索引。業界對海量數據建立索引的方案有多種,在傳統技術架構中應用比較多的主要包括Phoenix SQL二級索引或者Elasticsearch搜索引擎。二級索引能提供高效的固定維度的條件查詢,查詢性能不受數據規模的影響,而Elasticsearch搜索引擎能提供比較靈活的多條件組合查詢、全文索引和空間索引。兩種類型的索引實現,有不同的優缺點,以及適用于不同的場景。表格存儲TableStore的做法是同時實現和這兩類索引原理類似的索引,來滿足不同場景下對查詢的不同需求。
全局二級索引
?
當用戶創建一張表時,其所有PK列構成了該表的『一級索引』:即給定完整的行主鍵,可以迅速的查找到該主鍵所在行的數據。但是越來越多的業務場景中,需要對表的屬性列,或者非主鍵前綴列進行條件上的查詢,由于沒有足夠的索引信息,只能通過進行全表的掃描,配合條件過濾,來得到最終結果,特別是全表數據較多,但最終結果很少時,全表掃描將浪費極大的資源。表格存儲TableStore提供的全局二級索引功能支持在指定列上建立索引,生成的索引表中數據按用戶指定的索引列進行排序,主表的每一筆寫入都將自動異步同步到索引表。用戶只向主表中寫入數據,根據索引表進行查詢,在許多場景下,將極大的提高查詢的效率。更多的技術解讀,請參考這篇文章《通過全局二級索引加速表格存儲上的數據查詢》。
多元索引
?
表格存儲TableStore多元索引是表格存儲TableStore重點打造的一個多功能索引能力,旨在補位二級索引無法覆蓋的場景,解決大數據場景下的復雜查詢和輕量級分析問題,比如多字段組合查詢、前綴查詢、通配符查詢、嵌套查詢、全文檢索(分詞)、地理位置查詢、排序和統計聚合等功能。關于對多元索引的更多解讀,可以閱讀這篇文章《TableStore多元索引,大數據查詢的利器》,關于多元索引的更多應用場景,可以參考以下文章:
- 《TableStore:交通數據的存儲、查詢和分析利器》
- 《TableStore:爬蟲數據存儲和查詢利器》
計算銜接
表格存儲TableStore已經與比較多的開源大數據計算引擎以及阿里云計算產品銜接,例如Hive、Spark、MaxCompute以及DataLakeAnalytics等,覆蓋了批量計算和交互式分析。可以由第三方產品提供的數據通道服務,將表格存儲TableStore上的數據全量或者增量復制到計算系統,也可以由計算系統通過Connector直接訪問表內的數據。
批量計算和交互式分析訪問數據存儲的方式是批量掃描,主要通過自定義數據Connector的方式。但是其他類計算系統例如流計算或者函數計算(Lambda架構),數據是需要流式的并且實時的從存儲系統到計算系統。這個能力是傳統開源Bigtable類數據庫所做不到的,例如HBase或Cassandra。
如果表內的數據可以實時的流動,那將給表帶來更豐富的計算和處理場景,例如可以做跨域復制、備份,或者接入流計算引擎做實時分析或者函數計算做事件觸發式編程,也可以由應用方自定義數據處理,來做個性化數據處理。
表格存儲TableStore提供了全新的實時數據通道,能支持訂閱表內的實時數據更新,來擴充表格存儲TableStore的計算能力。
通道服務
?
TableStore 通道服務(Tunnel Service)是基于表格存儲數據接口之上的全增量一體化服務,通道服務為用戶提供了增量、全量、增量加全量三種類型的分布式數據實時消費通道。通過為數據表建立Tunnel Service數據通道,可以簡單地實現對表中歷史存量和新增數據的消費處理。基于通道服務用戶可以輕松的實現如圖所示的場景架構:數據同步、搬遷和備份,流式數據處理以及事件驅動架構。
關于對通道服務TunnelService更多的技術解讀,可以參考這篇文章:《大數據同步利器: 表格存儲全增量一體消費通道》。基于通道服務的更多應用場景,可以參考以下文章:
- 《實時計算最佳實踐:基于表格存儲和Blink的大數據實時計算》
- 《TableStore: 海量結構化數據實時備份實戰?》
- 《TableStore: 海量結構化數據分層存儲方案》
總結
表格存儲TableStore通過同時提供具象和抽象的數據模型,來滿足不同核心數據場景的要求,更貼近業務抽象;提供多元化索引(全局二級索引和多元索引)來滿足不同類型場景條件查詢需求;提供全新的實時數據通道,來擴充實時計算的能力以及可自定義的實時數據處理。這三大方面的新功能發布,能夠讓我們在數據模型、靈活查詢以及數據分析層面,都有一定的提升,幫助打造統一的在線數據存儲平臺。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的表格存储TableStore全新升级,打造统一的在线数据存储平台!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【实操手册】如何把一场直播录制下来?
- 下一篇: GAN的一些很酷的应用