什麼是真正的HTAP?(二)挑戰篇

来源:https://www.cnblogs.com/yangwilly/archive/2022/08/15/16587547.html
-Advertisement-
Play Games

上一篇文章中,我們從技術和商業角度分析了 HTAP 系統緣起的背景,本篇文章中,我們將從 HTAP 定義及其相關核心技術等方面來討論:構建一個 HTAP 所面臨的核心問題和挑戰有哪些? HTAP 涉及技術和對產品的影響 HTAP 是將 TP 和 AP 進行高度融合的產物, 而非簡單的 TP 和 AP ...


上一篇文章中,我們從技術和商業角度分析了 HTAP 系統緣起的背景,本篇文章中,我們將從 HTAP 定義及其相關核心技術等方面來討論:構建一個 HTAP 所面臨的核心問題和挑戰有哪些?
file

HTAP 涉及技術和對產品的影響

HTAP 是將 TP 和 AP 進行高度融合的產物, 而非簡單的 TP 和 AP 相加:TP+AP ≠ HTAP。有的資料庫讓 TP 系統通過簡單的數據同步方式(比如 Binlog等),將數據同步到 AP 系統,然後再由 AP 系統進行處理數據,雖然該種方式從用戶的角度來看似乎是獲得了同時處理 TP 和 AP 的能力,但是從本質上來看,這並不能稱為真正的 HTAP 產品,國內有一些資料庫廠商宣傳 HTAP 概念很起勁,但是自身可能還真不滿足 HTAP 的定義。下麵我們就 HTAP 所涉及到的幾個核心問題來探討一下,一個真正的 HTAP 產品需要具備哪些能力。
我們將從以下維度進行探討:

  1. 架構選擇(Architecture choice)
  2. 數據導入及查詢處理引擎 (Ingestion and query processing egnines)
  3. 存儲方案 (Storage options)
  4. 數據組織方案 (Data organization)
  5. 事務語義(Transaction semantics)
  6. 數據的時效性(Recency of data being read by OLAP)
  7. 索引支持(Indexing supports)
  8. AP 負載和 TP 負載的相互干擾(Workload interference)

當系統接收到一個查詢負載的時候,查詢處理模塊需要識別出該查詢負載中的 TP 負載和 AP 負載。並能夠依據相應的策略(這裡可以是基於規則或者是基於查詢代價),將相應的負載轉發至相應的處理引擎。

1. 架構的選擇
Single system(即 One system) 還是 Seperate system 的選擇當前更多是基於工程上的難度。目前不少產品均是在原有的 TP 系統之上,疊加了一個 AP 系統並使用某種數據同步工具將TP系統中的數據同步至AP系統中。Seperate system 雖然有其優點,但這種方案存在著許多不容忽視的問題,比如無法保證對事務的支持能力、數據的時效性,以及複雜的系統架構等(下文會有詳細的解釋)。相比之下,One system 不僅架構簡潔,對於事務的支持能力和數據的時效性等方面都能提供更好的保證。但是,One system 架構的技術難度相對較大,工程上也具有一定的難度,同時還需要考慮 TP 和 AP 負載間的相互干擾等問題。StoneDB 目前就是採用 One System 的架構設計,我們深知此架構的優勢和難度。

2. 查詢處理及數據導入引擎

該維度對產品有兩個方面的描述。由於 HTAP 所面臨的業務場景通常存著需要對海量數據進行分析處理需求,而在分析場景下,為了加速分析,通常的做法是將需要進行分析的數據,以列存的方式進行組織,這樣可以利用列存的優勢加速分析。因此,需要將適用於 TP 場景的行存類型數據轉為適用於 AP 場景的列存數據。對於一個 HTAP 資料庫首先需要解決的問題是高速的數據載入。這裡又包括兩個方面:

- 全量數據的載入方案,保證海量數據快速準確導入。

- 增量數據的更新方案,保證數據的時效性。

在數據載入完成後,另外一個維度是查詢處理。查詢處理部分屬於整個 HTAP 資料庫的核心模塊,其最重要的能力是能夠同時完成 TP 負載和 AP 負載的處理。
索引已成為 TP 系統的標配,通過設置索引可以大大提高資料庫的檢索速度,改善資料庫性能。而 AP 系統中的更新操作通常為批量更新,在更新時首先需要定位到待更新的數據,考慮到 AP 系統的數據組織和存儲模型,如何能夠通過設置索引快速定位到需要更新的數據(尤其是在以列存且數據多為壓縮形式的情況下)也是需要解決的一個難題。

3. 存儲方案

隨著存儲技術的進步,存儲介質和方式以及單位價格都發生了翻天覆地的變化,一個清晰的事實是:高速存儲介質正在廣泛地應用到資料庫領域。對於 HTAP 資料庫來說,TP 部分和 AP 部分的存儲方案選擇涉及到架構、性能、成本和業務場景等多方因素的影響。

4. 數據組織方案

選擇列存儲加行存儲(DSM + NSM),還是 PAX (Partition Attributes Across)方案或者是其它方案。數據組織方案的選擇不僅會極大的影響系統性能,還會影響數據的存儲成本。而系統的整體性價比也是我們挑選產品的重要指標之一

5. 事務語義

需要具有支持完整的事務語義的能力,即無論是 TP 部分還是 AP 部分都需要對事務進行完整的支持。現有的很多 HTAP 解決方案,AP 系統中所處理的數據均是同步自 TP 系統中已提交的數據。這類解決方案存在以下幾個問題:首先,對應長事務場景下,如何保證 AP 系統可以獲得最新版本的數據值得我們仔細考慮。再者,通過以同步日誌的方式,數據的時效性和一致性需要認真考慮。最後,為瞭解決上述問題,會影響到事務的執行效率,導致系統吞吐量的下降。

6. 數據的時效性

需要保證 AP 系統所處理的數據均為當前最新版本的數據。當前的很多系統是在 TP 數據提交完成後,通過同步日誌的方式將 TP 部分的變更同步到 AP 部分,這種方式無法保證數據的時效性,因而不能稱之為真正的 HTAP 系統。

7.索引的支持

索引已成為 TP 系統的標配,通過設置索引可以大大提高資料庫的檢索速度,改善資料庫性能。而 AP 系統中的更新操作通常為批量更新,在更新時首先需要定位到待更新的數據,考慮到 AP 系統的數據組織和存儲模型,如何能夠通過設置索引快速定位到需要更新的數據(尤其是在以列存且數據多為壓縮形式的情況下)也是需要解決的一個難題。

8. 不同類型負載間的相互干擾

系統需要能夠保證 AP 負載對 TP 負載無影響或者使得兩種類型負載間的影響最小化
上述討論了一個真正的 HTAP 系統應該具備的幾點核心能力,當然這些只是我們認為的核心能力,其它的相關問題這裡就不在展開,後續我們會陸續給出上述 HTAP 核心能力的詳細解讀。
file

從不同維度對現有 HTAP 產品/解決方案進行分類

現有的 HTAP 產品圖譜分類的主要方法:

  1. 架構方式;
  2. 存儲範式(Cloud/Shared Disk);
  3. 擴展方式(Scale out/Scale up);
  4. 查詢語句標準;
  5. 併發策略(MVCC);
  6. 數據/表的組織方式;
  7. 索引(LSM, ART, B-tree, lock-free Bw-Tree)。

下表從功能/許可證/是否開源等各個維度,對當前 HTAP 市場中的標桿產品進行了綜合分析。如需獲取更多信息,請訪問我們的官網:https://stonedb.io/
file
其它方面:多模能力等屬於非必要,這裡暫不考慮。
file
file
file
這裡我們將 ClickHouse 放進來,主要是考慮其在 AP 處理方面的優異能力,可以作為我們 HTAP 產品在 AP 方面的一個標桿。

file

HTAP所面臨的核心挑戰

綜上,我們可以總結出 HTAP 面臨的挑戰有:

  1. 真正的 HTAP,而非 TP 與 AP 的疊加
  2. 架構的選擇
  3. 數據組織方案選擇,存儲方案選擇
  4. 查詢優化:如何依據負載類型和查詢代價選擇合適的執行引擎
  5. 數據的時效性:如何能夠減少 TP 和 AP 之間的數據移動,高效實時地將 TP 數據更新同步到 AP 數據中
  6. 負載隔離:如何有效地消除或者最小化 TP 和 AP 負載之間的相互干擾
  7. 資源管理:如何能夠高效的管理 TP 和 AP 負載之間的資源使用
  8. 實時分析的能力
  9. 事務語義支持

以上是對HTAP資料庫的部分挑戰梳理,在下一篇文章中,我們將對這些核心問題和挑戰展開更加深度的討論並給出選擇一款 HTAP 產品的建議。
StoneDB 是國內首款基於 MySQL 的一體化實時 HTAP 開源資料庫,內核引擎完全自研。我們將在開源資料庫領域持續耕耘,不斷與各個開源資料庫社區、企業合作共建,共創國產開源資料庫良好生態。

StoneDB 在6月29日已宣佈正式開源。如果您感興趣,可以通過下方鏈接查看 StoneDB 源碼、閱讀文檔,期待您的貢獻!

StoneDB 開源倉庫

https://github.com/stoneatom/stonedb

作者李浩

StoneDB 首席架構師、StoneDB PMC

曾在華為、愛奇藝、北大方正從事資料庫內核核心架構設計。超過10年資料庫內核開發經驗,擅長查詢引擎,執行引擎,大規模並行處理等技術。擁有數十項資料庫發明專利,著有《PostgreSQL查詢引擎源碼技術探析》。

編輯 &校對:李明康、王學姣、高日耀、


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • office 2021 for Mac商業預覽Mac版office 2021 包括Word,Excel,PowerPoint,Outlook,OneDrive,最新版本的office將附帶新的深色模式支持,輔助功能改進,對Word、Excel、PowerPoint、Outlook的性能改進對exce ...
  • Podman部署及應用 什麼是podman Podman是一個開源項目,可在大多數Linux平臺上使用並開源在GitHub上。Podman是一個無守護進程的容器引擎,用於在Linux系統上開發,管理和運行Open Container Initiative(OCI)容器和容器鏡像。Podman提供了一 ...
  • 今天有個小伙伴問我,什麼是謂詞下推,然後我就開啟巴拉巴拉模式,說了好長一段時間,結果發現他還是懵的。 最後我概述給他一句話:所謂謂詞下推,就是將儘可能多的判斷更貼近數據源,以使查詢時能跳過無關的數據。用在SQL優化上來說,就是先過濾再做聚合等操作。 看到這裡的朋友可能就已經明白了什麼是謂詞下推,如果 ...
  • 背景介紹 StoneDB 是一款相容 MySQL 的開源 HTAP 資料庫。StoneDB 的整體架構分為三層,分別是應用層、服務層和存儲引擎層。應用層主要負責客戶端的連接管理和許可權驗證;服務層提供了 SQL 介面、查詢緩存、解析器、優化器、執行器等組件;Tianmu 引擎所在的存儲引擎層是 Sto ...
  • Mysql資料庫 資料庫 資料庫【按照數據結構來組織、存儲和管理數據的倉庫】。是一個長期存儲在電腦內的、有組織的、可共用的、統一管理的大量數據的集合。 數據對於公司來說最寶貴的財富,程式員的工作就是對數據進行管理,包括運算、流轉、存儲、展示等,資料庫最重要的功能就是【存儲數據】,長期保存數據。 M ...
  • 本篇介紹SQL:2016(ISO/IEC 9075:2016)標準中定義的序列生成器(Sequence generator)和相關操作,以及六種主流資料庫中的實現及差異:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite。 ————————... ...
  • #主鍵約束(PRIMARY KEY) ##SQL Server PRIMARY KEY(主鍵)約束簡介 主鍵是唯一標識表中每一行的一列或一組列。您可以使用主鍵約束為表創建主鍵。 如果主鍵僅包含一列,你可以使用PRIMARY KEY約束作為列約束: CREATE TABLE table_name ( ...
  • 一、直播介紹 之前的內容,我們為大家分享了ChunJun數據還原的DDL模塊,以及ChunJun同步Hive事務表,本期我們為大家分享ChunJun數據傳輸模塊介紹。 本次直播我們將從ChunJun數據類型轉換,到數據傳輸過程以及ChunJun的序列化實現為大家進行詳細講解,通過本次分享,希望大家能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...