新一代實時數倉:阿里云數據庫 SelectDB 版--100% 兼容 Apache Doris 的全托管云原生實時數倉
阿里云數據庫 SelectDB 版是 100% 兼容 Apache Doris 的云原生數倉產品,具有存算分離和實時彈性的核心優勢。同時提供離線及實時流式數據同步鏈路;實時更新和萬級 QPS 高并發點查特性。提供基于倒排的文本檢索和日志分析能力,同時支持基于 Multi-Catalog 的湖倉一體方案和開放的生態產品協同能力。本文將介紹 SelectDB 產品能力及其所支持的場景,為數倉選型提供參考和借鑒。
一、阿里云 SelectDB 產品產生背景
1. Apache Doris 是全球流行的開源實時數倉產品
SelectDB 是基于 Apache Doris 提供的一個商業化的云原生產品。Apache Doris 是一款國產的開源數據庫,專注于實時數倉領域。該項目始于 2013 年,并于 2022 年在 Apache 基金會的支持下成為頂級項目。經過將近 10 年的演進,Apache Doris 的內核已經非常穩定和成熟。現在,該項目在社區中的關注度和活躍度都非常高。
2. Apache Doris 被 4000+ 國內外企業生產系統使用
目前,在國內外使用 Apache Doris 的企業范圍非常廣泛,遍布各個行業,包括一些行業的頭部企業。其成熟度毋庸置疑,已經在客戶業務中得到了廣泛驗證。
二、SelectDB 核心能力
SelectDB 是在 Doris 基礎上孵化出來的一個商業化的實時數倉,在 Doris 上做了云原生改造,并在阿里云上提供托管服務。接下來將從用戶使用實時數倉的整個鏈路,展示 SelectDB 在各個環節上的產品能力的匹配。
1. 全面數據導入及同步鏈路
首先來看數據導入層面。對于數倉產品來說,客戶最先面臨的問題就是如何將數據同步到數倉中,以便向上層業務提供數據服務,包括實時分析等業務構建。在這一層面,SelectDB 是基于 Apache Doris 的,因此具有良好的開放性和生態兼容性。它支持各種數據源,包括流式和批量的大數據鏈路加速導入。
SelectDB 支持的數據類型和數據源非常豐富,如 CSV、MySQL、SQLServer、Oracle 等數據源,能夠進行數據類型的轉換和導入。對于流式數據,SelectDB 與 Flink、Kafka 等常見鏈路有完善的對接方式;對于大數據體系如 hive,Hadoop,MC 等,SelectDB 支持通過 DataWorks 和 DataX 等平臺及工具,進行批量離線數據的導入。
此外,對于數據湖的數據,為了進行數據湖的聯邦查詢和湖倉統一管理,SelectDB 與 Iceberg、Hudi 有良好的兼容性。這使得在數據湖層面可以進行很好的數據分析,在業務層面可以通過統一的 SelectDB 訪問層向上層業務提供數據湖和數倉的統一服務接口。
總而言之,SelectDB 在流式數據、離線數據和數據湖數據方面,提供了全面的技術對接,可以幫助我們便捷地將數據導入數倉,解決了數據入倉這一首要問題。
2. 高吞吐數據寫入及實時更新
在數據入倉以后,我們面臨的第二個問題是數據可能會需要進行更新。數據進入數據倉庫以后,例如訂單、物流等實時業務的數據需要進行實時狀態更新。SelectDB 針對不同場景提供了不同的數據實時更新能力:
- 對于 TP 庫的數據,分析時業務對數據的唯一性要求比較高,SelectDB 提供了主鍵(Unique)模型,可以保證數據從 TP 到數倉中的數據一致性,支持全列和部分列的更新。同時基于業務場景,提供了兩種更新方式:
MoR (Merge On Read):這種方式適用于人群畫像標簽導入等涉及低頻、大批量數據更新的場景。人群畫像有很多標簽,離線標簽通過 T+1 或小時級別的計算進行批量導入。MOR 方式下,數據能夠以更大的吞吐量批量寫入,吞吐量可達 100 萬每秒。
MoW (Merge On Write):適用于實時分析場景,極致的時效性和實時性要求。如訂單狀態變更,需要進行實時更新。這種方式面向高頻、小批量更新,在數據進倉時同步更新原有數據,消耗更多 IO 資源,對 IOPS 要求較高。這種模式下,數據寫入過程中事務性保證完成一致性處理,查詢時直接獲取一致性的數據結果,減少查詢時數據一致性處理,查詢性能相比批量導入方式可提升 5-10 倍。 - 對于聚合場景,提供了 Agg 聚合引擎類型。此類業務查詢多是進行聚合結算結果的查詢。如用戶積分的寫入和更新,新增積分記錄會進行存量和新增計費的聚合計算。那么基于聚合引擎和聚合函數就可以完成增量寫入過程的的聚合更新。對于聚合表引擎中進行替換更新的列,也支持通過 replace_if_not_null 方式實現部分列的更新操作。
3. 毫秒級實時查詢能力
接下來將討論衡量 OLAP 實時數倉的一個核心指標,即實時查詢能力,這里看主要分析場景來進行說明。
首先是寬表分析場景,通常涉及到人群畫像和 BI 等場景,數據在 ETL 清洗和處理之后形成一張大寬表,對外提供服務。這里主要關注的是單表分析的性能,業界常用的衡量標準之一是 ClickBench 測試。在最新的 ClickBench 測試中,SelectDB 榮登榜首。這充分證明了 SelectDB 在寬表分析場景下的數據分析性能處于在業界領先位置。
4. 萬級 QPS 高并發點查能力
另外一種場景是數據詳情的查詢。比如 Trace 的場景,日志進到數倉以后,查詢某個用戶具體的行為軌跡,這就需要根據 QueryID 或者 UID 進行精準匹配查詢。又如用戶畫像的數據,經過 ETL 清洗后,可以在數倉中提供一些人群畫像的查詢分析,但如果要獲取某個具體用戶的標簽,就需要根據用戶 ID 去查詢對應的標簽列,這些情況就是一個點查的詳情查詢。數據在 OLAP 中默認是列存排序,基于排序結果進行數據塊存儲。當進行離散的精準 ID 匹配查詢時,每次查詢命中的數據結果需要在多個數據塊中進行大量的 IO 檢索,引起 IO 放大,會明顯影響查詢性能,因此在默認列存模式下,效率是比較低的。
SelectDB 的解決方案是提供行存和列存混合存儲的方式,在具體業務場景中只需開啟行存模式,通過冗余方式行列同時存儲并創建索引,提升點查性能。這樣在 Data serving 場景下,數倉可以直接對外提供高并發的點查服務。基于測試結果,在 1 億條記錄規模下,用 48 核 BE 資源測試可以支持萬級別的點查 QPS,滿足了大部分業務場景的高并發查詢需求。
5. 高性價比日志分析方案
日志分析是 OLAP 中的一個通用情景。傳統用戶日志分析使用 Elasticsearch 這種日志檢索引擎的較多。但由于 ES 的寫入過程索引構建成本高,以及大量依賴內存來支持請求加速,大數據規模下資源用量高且容易發生 OOM,且壓縮率較低,造成存儲成本高,整體性價比不是很高。
SelectDB 提供了倒排索引的能力,允許對文本列進行分詞,并在其上創建倒排索引,從而支持關鍵字的模糊匹配和全文檢索。同時對于非文本列,如 Decimal 或 Int 類型的數據,同樣可以加速查詢,特別是針對非排序列的 Ad-Hoc 查詢場景。通過這種方式,SelectDB 在日志分析中能夠顯著提升寫入和查詢效率,同時降低資源消耗,有效解決了以往 Elasticsearch 在性能上的瓶頸問題,整體性價比是 ES 的 10 倍以上。
6. 多租戶管理和資源隔離
除了完整的數據導入和點查服務,包括聚合分析、日志分析和全文檢索等能力,針對具有高合規性要求的金融客戶,為滿足其數據安全和權限管理方面的特殊需求,SelectDB 提供了兼容 MySQL 協議賬號和數據訪問安全認證體系,確??梢詫崿F細粒度的資源權限控制,支持庫級、行級和列級角色授權及數據權限管理。
在數據傳輸層面,支持 SSL/TLS 安全加密傳輸,全面保障數據存儲和訪問安全。在內核層面,實現了基于用戶角色的資源隔離和權限限制,有效防止了單一用戶或角色在多用戶使用集群中對資源的過度使用,從而確保了整個集群的穩定性和實例的資源限制,為合規性和數據安全性提供了全方位保障。
7. 基于 Multi-Catalog 的湖倉一體能力
另外,Lakehouse 成為當前大數據處理的一種流行方式之一?;?Lakehouse 的方案可以減少數據冗余成本,同時提供一體化的處理處理能力。SelectDB 提供了基于 Multi-Catalog 的湖倉一體能力,可以為各種數據湖和對象存儲的數據提供統一管理,實現了實時的元數據結構同步,從而在整個 SelectDB 平臺上實現了統一的邏輯層面的數據管理。在引擎層面,實現了數據湖查詢的加速處理和數據緩存,利用引擎本身的加速能力優化數據湖的查詢。同時,通過聯邦查詢的能力,可以將數據湖的數據導入到 SelectDB 本地存儲引擎上,以加速實時數據分析。這樣,通過 SelectDB 統一的 API 接口,業務可以輕松訪問數據湖和實時數倉,整個技術棧更加統一,業務開發難度大大降低。
三、SelectDB 云原生特性
SelectDB 的云原生特性主要體現在四個方面:
- 存算分離:即存儲和計算可以獨立擴展,實現了資源解耦。
- 實時彈性:資源彈性調整完全實時,無需停機或大量數據遷移。
- 多計算負載隔離:讀寫分離,確保不同業務在共享存儲后能進行物理隔離。
- 數據共享:在多集群環境下實現了數據在隔離的同時保持一致性。
接下來將詳細分析 SelectDB 在這四個方面的具體實現。
1. 存算分離,獨立擴容
SelectDB 整體架構劃分為三個層次。首先,我們將計算層拆分為兩部分:第一部分是純粹的計算引擎,另一部分則是在計算引擎層面引入了本地盤,這部分曾在 MPP 架構下用于全量數據存儲,現在則退化為緩存作用,利用云盤等進行數據緩存。這兩部分構成了計算層的資源,即區分了純計算能力與緩存能力。而原先在 MPP 架構下全量數據存儲層的數據,現在則放置于基于阿里云 OSS 對象存儲構建的共享數據存儲層。通過這種架構實現了存儲和計算的分離。中間的 Cache 用于加速讀寫操作。
這種架構相比于 MPP 架構帶來了明顯的優勢,特別是對于 Doris、StarRocks 相關技術體系,在以前的架構中,數據高可用性主要通過副本實現,每份數據需要在多個節點上存儲多個副本以保證服務的連續性和可靠性。而現在,在云原生存算分離架構下,數據的全量存儲轉移到了基于阿里云的 OSS 對象存儲的共享存儲上,而阿里云 OSS 對象存儲本身就具備容災備份的能力,所以在數據庫引擎層面,數據只需存儲一份副本即可,其可靠性完全依賴于存儲介質本身。這樣對存儲資源的使用量就減少到了之前的三分之一。
考慮到緩存也會占用一部分存儲資源,所以我們根據業務需求設置了緩存命中率,建議從 10% 起步逐步調整緩存分配比例。如果數據分布比較離散,完全可以最大程度地利用整個 Cache 的容量,使其與共享存儲所占比例持平。這樣做的好處是,一方面可以通過共享存儲保證數據的持久可靠性,同時還可以通過 Cache 加速讀寫能力。即使在這種情況下,我們整體數據的副本數量最多只需做到兩副本,相比之前的三副本存儲方式可以減少三分之一的存儲用量,同時 OSS 的單位存儲成本也更具優勢。
2. 實時彈性
通過云原生的方式解決了存算分離的問題,使得計算層和存儲層能夠獨立擴展。當需要擴展計算層時,不再需要進行數據的 Reshard 或 Rebalance 操作。相比于傳統的 MPP 架構,SelectDB 水平擴展僅進行元數據刷新和主動緩存加載即可完成擴容,不需要復雜的數據遷移過程。因此整體的擴容效率不依賴數據量,可以實時完成擴容。存儲層采用 serverless 方式,根據需求靈活使用,業務完全不感知其擴容和縮容的過程。
單副本寫&讀寫 Cache 加速性能
在數據存儲和查詢過程中,緩存起著至關重要的作用。SelectDB 通過在計算層添加緩存來加速讀寫操作。具體而言,數據寫入過程中,首先緩存至存儲介質,同時也寫入到 OSS 上,確保在緩存和持久化層都有最新寫入的熱數據,以便查詢時能夠迅速獲取最新結果,保證查詢性能。
在緩存數據淘汰策略上,SelectDB 采用兩級緩存淘汰策略:
第一級基于 TTL 策略,定義數據生命周期以防止數據在緩存期間被清除;
第二級策略則根據訪問熱度使用 LRU 算法,優先保留高頻訪問熱數據,從而在保證數據存儲效率的同時,有效提升系統查詢性能。
在性能消耗方面,相較于傳統的 MPP 架構,云原生模式下單副本的模式,寫入數據處理量減少了 2/3,顯著減少了 CPU 資源的消耗。數據的批量寫入和 CPU 計算能力的高效利用,使得整體寫入效率明顯提升,同時保持了數據存儲的可靠性和查詢的實時性,從而在大數據處理場景下表現出色。
3. 單實例多計算組資源隔離
另外,SelectDB 提供了單實例多計算資源隔離的能力,主要是為了滿足多業務隔離需求。通過業務訪問隔離和讀寫分離的設置,確保了高業務負載情況下數據資源的完全隔離,從而保證了數據導入和查詢過程中不會出現業務相互干擾的情況。
具體做法是在計算層面實現邏輯計算資源的隔離,邏輯資源對應的物理資源也是完全獨立的。這樣從用戶角度來看是不同的計算集群,還基于容器化技術實現了集群的快速部署和釋放,有效地保證了強隔離。再結合 Doris 內核在用戶級別提供的軟負載的隔離,可以滿足不同級別的隔離需求。
四、SelectDB 開放生態和產品協同
在數倉選型過程中,還需要考慮產品的生態開放性。SelectDB 作為一個基于 Apache Doris 的云原生商業化改造產品,本身就是基于 Apache Doris 內核構建的,因此協議上完全兼容 Apache Doris,避免了技術綁定帶來的困擾。SelectDB 提供的是開放的生態系統,允許客戶從 Doris 或 StarRocks 技術棧無縫切換到 SelectDB,幾乎沒有切換成本。
SelectDB 兼容 MySQL 協議,這也意味著開發成本較低。它采用標準的 MySQL 語法,允許使用 MySQL 客戶端工具(如 Navicat、DBeaver)直接對接,開發者可以按照標準的 MySQL 開發模式進行 SelectDB 開發工作。
SelectDB 作為一個開放的生態系統,與 MySQL 以及 Flink、Kafka 等大數據技術棧的兼容性良好,涵蓋了離線批處理和實時數據流的接入。并且在云端實現了與整個云生態系統的緊密銜接,通過云控制臺進行操作,可以顯著減少生態鏈路構建及運維的成本。
此外,SelectDB 支持從 RDS 和 PolarDB、MySQL 等技術棧實時導入數據,并計劃在未來推出 Zero-ETL 服務,同時支持與阿里云上下游其他數據庫產品的無縫流轉,進一步優化數據流動,實現價值放大。對于大數據工具,在云上也提供了良好的對接和支持。
以上就是 SelectDB 在數據引入、更新、分析能力、成本和彈性擴容等各方面所提供的核心能力。
目前,我們提供了一個包含 8 核集群和相應存儲資源的優惠套餐,感興趣可以掃描上圖中的二維碼進行體驗。