天天看點

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

表格存儲TableStore是阿裡雲自研的面向海量結構化和半結構化資料存儲的Serverless NoSQL多模型資料庫,被廣泛用于社交、物聯網、人工智能、中繼資料和大資料等業務場景。表格存儲TableStore采用與Google Bigtable類似的寬表模型,天然的分布式架構,能支撐高吞吐的資料寫入以及PB級資料存儲。

原生的寬表資料模型,存在一些天然的缺陷,例如無法很好的支援屬性列的多條件組合查詢,或者更進階的全文檢索或空間檢索。另外在與計算系統的對接上,特别是流計算場景,傳統的大資料Lambda架構,需要使用者維護多套存儲和計算系統,沒法很天然的支援資料在存儲和計算系統之間的流轉。以上這些問題,均在表格存儲TableStore在支援阿裡巴巴集團内、阿裡雲公共雲以及專有雲等業務中逐漸暴露出來。

表格存儲TableStore簡單可靠的資料模型和架構,開始承擔越來越豐富的不同類型的資料存儲,例如時序時空資料、中繼資料、消息資料、使用者行為資料和軌迹溯源資料等。越來越多的客戶也開始把表格存儲TableStore當做一個統一的線上大資料存儲平台,是以我們迫切需要支援海量資料中對資料的高效查詢、分析和檢索。同時也需要考慮如何更貼近業務,抽象出更貼近業務的資料模型,讓資料的接入變得更加簡單。

在2019年3月6日的雲栖釋出會,表格存儲TableStore對以下幾個方面做了重大更新:

  1. 提供多種資料模型,滿足不同資料場景的需求,簡化資料模組化和開發。
  2. 提供多元化索引,滿足不同場景下簡單或複雜條件查詢的功能需求。
  3. 提供實時資料通道,無縫對接流計算引擎,支援表内資料的實時更新訂閱。

多模型

表格存儲TableStore在選擇要支援的資料模型的時候,更多的綜合了目前業務現狀以及使用者畫像,提取大部分客戶的通用需求,總結和定義了産品适合的幾大類核心資料場景,來抽象和定義資料模型。資料模型的定義分為『具象』和『抽象』:抽象模型是類似于關系模型或者文檔模型的能滿足大部分類型資料的抽象,屬于比較通用的資料模型;具象模型是對某一具體特征場景資料的抽象,适合單一垂直類的資料場景。表格存儲TableStore同時提供抽象和具象模型,當然在介紹這些模型之前,先來明确我們的核心資料場景。

核心場景

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

表格存儲TableStore的核心場景包含這五大類,分别對應不同類型的應用系統,以及每類資料場景下資料有典型的特征和對存儲和計算的特殊的需求,簡單來說:

  • 時序資料:時序資料解決的是對包含4W(Who, When, Where, What)元素資料的抽象,資料量相對比較龐大,需要存儲引擎支援對時間線的索引以及對時間線的時間範圍查詢。
  • 時空資料:時空資料是基于時序資料加上了空間的次元,同時可能沒有時序資料的連續性。總的來說,特征和時序資料比較類似。
  • 消息資料:消息資料廣泛存在于消息系統,例如即時通訊消息系統或者Feeds流消息系統内。消息的存儲和傳遞更像是消息隊列模型,但是要求消息隊列能夠提供海量級消息存儲以及海量Topic,這是傳統專業級消息隊列産品所無法支撐的。
  • 中繼資料:這類中繼資料屬于非關系類中繼資料,例如曆史訂單資料、圖檔智能标簽中繼資料點。特點是量級比較大,每個資料存在的屬性比較多且是稀疏的,要求存儲能夠支援對各種次元屬性的條件過濾,對查詢可用性有比較高的要求。
  • 大資料:這是Bigtable模型所對應的最主要資料場景,特點是資料量極其龐大,需要很好的支援批量計算。

TableStore多模型

基于以上總結的表格存儲TableStore所針對的核心資料場景,我們從業務需求中抽象出三大類資料模型,分别是:WideColumn(寬行模型)、Timeline(消息模型)和Timestream(時序模型)。

寬行模型

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

寬行模型是由Bigtable提出,特征是:

  • 三維資料結構:對比MySQL的二維資料結構,在屬性列這一次元上多了版本屬性。同一列資料可以存儲多個不同版本,并可定義不同的生命周期,主要用于資料的自動化生命周期管理。
  • 稀疏列:表不需要有強格式定義,可以任意的對每一行定義列和類型。
  • 大表:一張表可以存儲萬億行資料,大表資料根據分區鍵的範圍來分區,不同的分區由不同的機器來加載和提供服務,能比較簡單的實作分布式。

寬行模型主要應用于中繼資料和大資料場景,一些典型應用場景可參考:

我們也提供HBase API相容的Client:《

使用HBase Client通路阿裡雲NoSQL資料庫表格存儲

》。

消息模型

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

消息模型是表格存儲TableStore針對消息資料所抽象的資料模型,主要适用于消息系統中海量消息存儲和同步,特征是:

  • 輕量級消息隊列:大表中能模拟海量消息隊列,雖然不能完全模拟一個真正消息隊列的所有能力,但是能滿足對消息最基本的存儲和同步能力。
  • 消息永久存儲:能保證對資料的永久存儲,消息寫入和同步的性能不會受到資料規模的影響。
  • 消息同步模型:對消息同步模型沒有嚴格要求,應用層可以根據自己的業務特征,同時實作推模型或者拉模型。

消息模型主要應用于消息資料場景,一些典型應用場景可參考:

時序模型

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

時序模型主要應用與時序和時空場景,也是表格存儲TableStore綜合了業界主流的時序資料庫,所定義和抽象的資料模型,特征是:

  • 海量資料存儲:能提供PB級資料存儲,可打造多租戶的時序資料庫底層存儲,寫入和查詢性能不受資料規模的影響。
  • 時間線索引:提供對時間線的索引,能滿足對時間線Tag的任何條件組合過濾,并且能夠支援比較海量的時間線規模。
  • 完整的模型定義:在業界标杆的時序資料庫模型定義上,補充了空間次元的定義并且提供空間索引,以及支援多列值支援,不限制隻對數值類型的支援。

時序模型主要應用于時序和時空資料,一些典型應用場景可參考:

查詢優化

上述場景中提到的對于表内資料的查詢優化,最基本手段就是需要對資料建立索引。表格存儲TableStore選擇的做法是,對于不同類型的查詢場景,我們需要提供不同類型的索引。業界對海量資料建立索引的方案有多種,在傳統技術架構中應用比較多的主要包括Phoenix SQL二級索引或者Elasticsearch搜尋引擎。二級索引能提供高效的固定次元的條件查詢,查詢性能不受資料規模的影響,而Elasticsearch搜尋引擎能提供比較靈活的多條件組合查詢、全文索引和空間索引。兩種類型的索引實作,有不同的優缺點,以及适用于不同的場景。表格存儲TableStore的做法是同時實作和這兩類索引原理類似的索引,來滿足不同場景下對查詢的不同需求。

全局二級索引

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

當使用者建立一張表時,其所有PK列構成了該表的『一級索引』:即給定完整的行主鍵,可以迅速的查找到該主鍵所在行的資料。但是越來越多的業務場景中,需要對表的屬性列,或者非主鍵字首列進行條件上的查詢,由于沒有足夠的索引資訊,隻能通過進行全表的掃描,配合條件過濾,來得到最終結果,特别是全表資料較多,但最終結果很少時,全表掃描将浪費極大的資源。表格存儲TableStore提供的全局二級索引功能支援在指定列上建立索引,生成的索引表中資料按使用者指定的索引列進行排序,主表的每一筆寫入都将自動異步同步到索引表。使用者隻向主表中寫入資料,根據索引表進行查詢,在許多場景下,将極大的提高查詢的效率。更多的技術解讀,請參考這篇文章《

通過全局二級索引加速表格存儲上的資料查詢

多元索引

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

表格存儲TableStore多元索引是表格存儲TableStore重點打造的一個多功能索引能力,旨在補位二級索引無法覆寫的場景,解決大資料場景下的複雜查詢和輕量級分析問題,比如多字段組合查詢、字首查詢、通配符查詢、嵌套查詢、全文檢索(分詞)、地理位置查詢、排序和統計聚合等功能。關于對多元索引的更多解讀,可以閱讀這篇文章《

TableStore多元索引,大資料查詢的利器

》,關于多元索引的更多應用場景,可以參考以下文章:

計算銜接

表格存儲TableStore已經與比較多的開源大資料計算引擎以及阿裡雲計算産品銜接,例如Hive、Spark、MaxCompute以及DataLakeAnalytics等,覆寫了批量計算和互動式分析。可以由第三方産品提供的資料通道服務,将表格存儲TableStore上的資料全量或者增量複制到計算系統,也可以由計算系統通過Connector直接通路表内的資料。

批量計算和互動式分析通路資料存儲的方式是批量掃描,主要通過自定義資料Connector的方式。但是其他類計算系統例如流計算或者函數計算(Lambda架構),資料是需要流式的并且實時的從存儲系統到計算系統。這個能力是傳統開源Bigtable類資料庫所做不到的,例如HBase或Cassandra。

如果表内的資料可以實時的流動,那将給表帶來更豐富的計算和處理場景,例如可以做跨域複制、備份,或者接入流計算引擎做實時分析或者函數計算做事件觸發式程式設計,也可以由應用方自定義資料處理,來做個性化資料處理。

表格存儲TableStore提供了全新的實時資料通道,能支援訂閱表内的實時資料更新,來擴充表格存儲TableStore的計算能力。

通道服務

表格存儲TableStore全新更新,打造統一的線上資料存儲平台!多模型查詢優化計算銜接總結

TableStore 通道服務(Tunnel Service)是基于表格存儲資料接口之上的全增量一體化服務,通道服務為使用者提供了增量、全量、增量加全量三種類型的分布式資料實時消費通道。通過為資料表建立Tunnel Service資料通道,可以簡單地實作對表中曆史存量和新增資料的消費處理。基于通道服務使用者可以輕松的實作如圖所示的場景架構:資料同步、搬遷和備份,流式資料處理以及事件驅動架構。

關于對通道服務TunnelService更多的技術解讀,可以參考這篇文章:《

大資料同步利器: 表格存儲全增量一體消費通道

》。基于通道服務的更多應用場景,可以參考以下文章:

總結

表格存儲TableStore通過同時提供具象和抽象的資料模型,來滿足不同核心資料場景的要求,更貼近業務抽象;提供多元化索引(全局二級索引和多元索引)來滿足不同類型場景條件查詢需求;提供全新的實時資料通道,來擴充實時計算的能力以及可自定義的實時資料處理。這三大方面的新功能釋出,能夠讓我們在資料模型、靈活查詢以及資料分析層面,都有一定的提升,幫助打造統一的線上資料存儲平台。

繼續閱讀