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