StoneDB 首席架構師李浩:如何選擇一款 HTAP 產品?

来源:https://www.cnblogs.com/stonedb/archive/2022/12/06/16954578.html
-Advertisement-
Play Games

作者:李浩 責編:宇亭 當我們選擇一款 HTAP 資料庫時,總是先被其相關文檔里所描述的優異性能所吸引。卓越的性能是我們選擇一款產品的出發點,因為我們希望該款產品能夠解決我們業務中的痛點。而大家使用 HTAP 產品的出發點就是希望該款資料庫能夠解決我們在事務處理過程中的實時分析痛點。不過,性能優勢只 ...


file

file

作者:李浩

責編:宇亭

當我們選擇一款 HTAP 資料庫時,總是先被其相關文檔里所描述的優異性能所吸引。卓越的性能是我們選擇一款產品的出發點,因為我們希望該款產品能夠解決我們業務中的痛點。而大家使用 HTAP 產品的出發點就是希望該款資料庫能夠解決我們在事務處理過程中的實時分析痛點。不過,性能優勢只能算作我們選擇一款產品的考量因素之一,實際上,公司層級去選擇一款HTAP產品時,還需要額外考量一些其他的因素,本篇文章,StoneDB首席架構師李浩給大家分享一下選擇 HTAP 產品的六大關鍵考量因素。

在 TP 產品非常成熟的今天,各類 TP 類型資料庫早已在各行各業中支撐著業務系統的高速發展。隨著業務系統越來越複雜,所產生的數據量也在飛速增長。同時,對於這些數據的實時分析需求也日益迫切。然而,當前的解決方案卻無法滿足實時分析的需求。例如:如果直接在TP資料庫上進行分析,雖然可以滿足實時性要求,但其分析的性能基本無法滿足要求,並且在進行分析時會占用大量的計算資源和 IO 資源,從而影響到 TP 性能。因此,傳統的做法是將分析任務放在業務低峰時候(通常是半夜進行,因此大家經常會看見 T+1的說明情況)。

HTAP 的出現則解決了這個實時數據分析的痛點。HTAP,即Hybrid Transaction/Analytical Processing,一套系統可以同時解決 TP 需求和 AP需要。如果你的業務對於 TP 業務所產生的數據需要進行實時的 AP 分析,那麼 HTAP 將會是你很好的選擇。

Gartner 預計在 2024 年左右,HTAP 市場將會走向成熟。從最早 2014 年概念的提出到最近這幾年,國內外對於 HTAP 已經從概念走向具體的產品落地。早期大家炒炒概念還可以接受,但顯而易見,現在的市場越來越明確地走向產品質量和方案落地的競爭。

無論國內外的 SnowFlake(Unistore)、Google(AlloyDB)、Oracle(HeatWave)還是國內的 TiDB、OceanBase、StoneDB 等都推出了其各自的 HTAP 產品並且在積極的落地到生產系統。那麼面對越來越多的 HTAP 產品,我們該如何選擇一款適合自己業務的 HTAP 資料庫產品呢?我們選擇一款 HTAP 資料庫又需要從那些方面進行考察呢?本篇文章中,StoneDB將給出一些自己的思考,需要說明的是,本篇作為產品選擇篇,我們不從技術架構和具體的實現上進行討論,而是主要從業務需求端的角度來作分析。對於硬核的技術實現角度,我們將在《什麼是真正的 HTAP?實踐篇》的下一章進行討論。

file

業務場景

首先,我們從業務場景的角度來討論如何選擇一款HTAP資料庫,主要有以下四個維度:

1.1、業務類型

業務所在的領域決定了產品底層技術棧的選擇。這個很好理解,比如電商這個業務場景所需要的技術棧和產品特點與傳統製造、CRM 等所關註的側重點就完全不一樣——電商關註高併發、低延時、數據一致性和秒殺場景等等,而傳統製造商則對海量多樣化數據的處理和如何有效挖掘數據價值這些方面更加關註。

在不同的業務類型下,選擇一款 HTAP 產品需要重點考察的是——這個業務類型需要哪一部分能力為主:TP 能力為主亦或是 AP 能力為主。

對於電商系統需要更加註重其在 TP 方面的關鍵能力,例如:事務、數據一致性等等;而對於CRM系統,經銷存等等對TP能力則不會那麼嚴苛,其可能更加看重AP的能力,在 TP 能力滿足其基本業務需求的情況下,哪款產品的 AP 能力更強,業務側可能會更傾向於選擇該款產品。

而現有 HTAP 產品從技術實現路線上,基本可以分為這麼兩類路線,其決定產品的基因:即側重於 TP 還是 AP?

路線1:以成熟的TP系統為基礎,在其上進行AP能力的擴展。現有大部分 HTAP 資料庫產品均採用該種策略。為什麼採用該種策略?其原因是顯而易見的,TP 系統發展到現在其相較於 AP 系統,更加成熟。例如:國內外的 OB,StoneDB,TiDB,Oracle MySQL Heatwave 和 Google AlloyDB 等;
路線2:在 AP 系統的基礎上擴展其處理 TP 的能力。例如:Snowflake 等。這種路線,比較困難,但是成熟的科技公司會有更多的資源去做這個事兒,難度大,但是做出來了,也會是一大利器。

1.2、端到端的解決方案能力:

對於業務開發相關人員,一個新產品或者解決方案的引入,自然希望不會給其帶來額外的工作負擔,並且最好能夠與其原有的技術棧相相容,這樣對於原有業務系統的改動要求最少。但也不完全就是為了讓乾的活兒更輕鬆一些,因為,對於一個線上運行的系統,其對於穩定性的要求非常高,而新組件的引入往往會讓整個業務的不穩定因素增大。因此,如果不能夠保持原有的技術棧,則需要提供端到端的解決方案。例如:原系統採用的 ClickHouse 或者 ElasticSearch,如果需要替換為 OB 或者StoneDB,那麼需要考慮原系統 ClickHouse 或者 ElasticSearch 上下游相關模塊介面相容性,數據同步到 CK 或者 ES 的方式等等,這些解決方案都要提供出來。

1.3、數據實時性要求:

數據實時性的高低同樣也會影響到產品的選擇。當前現有的 HTAP 資料庫在 TP和 AP 之間的數據同步策略實現機制不盡相同。例如:有些雲廠商通過 MySQL+Binlog+ClickHouse 的組合方式提供 HTAP 服務,從用戶的角度看似乎該服務具備了HTAP的能力,但實際上完全不是那麼回事兒——因為通過 Binlog 這種方式會有很多弊端,這裡可以參考我們之前的兩篇文章;又如有廠商通過 TP+Redo+Raft+AP 這樣的組合構成 HTAP 產品,其相較於前一種在數據的實時性上有了較大的提升,但也只是提供數據的最終一致性,同樣數據的實時性還是得不到保證;有的廠商則採用了基於 LSM-tree 實現的行列混存,這種可以基本保證對於數據實時性的要求;而像 MySQL Heatwave 和 StoneDB 則提供了基於記憶體計算的強實時性的方案。

HTAP 資料庫在產品具體實現的時候,其選擇的存儲方案會直接到影響架構的選擇:是一體化的架構?還是 TP 系統疊加 AP 系統的方案?架構的選擇則會直接決定數據同步策略和數據實時性的高低。

1.4、技術能力:

產品背後其公司所代表的技術實力也是業務方選擇一款產品的考量因素,例如:我們在下文第六點中給出的觀點。

file

性能

考量完業務場景相關的因素後,接下來需要考量的一個重要因素就是性能。不同於TP系的 Benchmark TPC-C 或者 AP 系統的 Benchmark TPC-H,對於HTAP 的性能測評一般不再使用這兩個傳統的方式來進行衡量。

當前大家更多地使用 TPC-H 來對其 AP 的能力進行評估,該種方法可以對其系統有一定的評價作用,但也存在著一定的弊端,那就是 TPC-H 無法全面地衡量一款 HTAP——因為 HTAP 資料庫的系統中會同時存在兩類負載:TP負載和AP負載。兩類負載需要同時使用系統的CPU資源、IO 資源和網路資源等等。對資源的競爭會導致兩類負載的相互干擾。因此,為了更好的衡量 HTAP 資料庫,無論是學術界還是工業界,都逐漸提出了一些適用於HTAP資料庫的 Benchmark 系統,具體可以參考我們之前的文章:《如何給一個 HTAP 資料庫做基準測試?》

這裡也簡單提一下,除了具體的性能指標,例如:TPS、QPS、吞吐量等等,資源隔離性也是我們的重要考量。而資源隔離通常有兩種方式:
(1)通過系統手段(軟體)隔離。例如,通過 Cgroup 的方式進行資源的管理;
(2)通過物理手段進行隔離。例如,依據不同的負載類型 Route 到不同引擎上,將 AP 查詢路由到列存引擎節點上,這樣可將 TP 負載和 AP 負載運行於不同的節點上,從而做到真正的物理隔離。

file

運維

運維的難度也需要我們認真考量。資料庫的運維不同於其它基礎系統,其對於 DBA 的綜合素質有比較高的要求。在系統長時間運行的過程中會遇到各種資料庫的使用、功能、性能等等問題。解決這些問題除了需要資料庫、操作系統和業務等多方面的知識,同樣也需要相關運維工具的支持。運維手段和運維工具可以高效的支持 DBA 的運維工作。複雜的系統形態,會導致 DBA 的運維工作量增大,最直接的影響就是難以快速定位問題,增加瞭解決問題的耗時。

file

生態

生態是選擇一款 HTAP 資料庫的一個重要因素。當前有兩類生態:PostgreSQL 和 MySQL。選擇哪一種生態,會直接影響到後續圍繞資料庫所構成的整個技術棧。同時,業務也會從其自身的特點選擇相應的技術路線。例如:如果業務系統是基於 JSON 和 GIS 能力的話,那麼多數的業務開發者可能更傾向於選擇 PostgreSQL 生態;如果是電商業務則更多的會選擇 MySQL 生態。

具體來講,生態中的周邊工具、中間件和解決方案的完整性和豐富性非常重要。除工具、方案外,社區參與的人數(不管是對開源的 HTAP 資料庫,還是對於商業或雲上的 HTAP 服務,都需要考量該使用該服務的人群數量),更多的社區參與人數往往意味著社區比較活躍,那麼,我們使用者遇到的一些問題就可以得到快速的響應。

生態的繁榮也從另外一個側面反映出該技術路線獲得了相當多的上下游廠商的支持。

file
成本是一個無法繞過的話題,一般企業/組織內的管理者對於成本的關註度往往是多於其他項的。如果想要使用一款 HTAP,需要考量的成本主要包括以下幾個方面:硬體成本、替換(遷移)成本、運維成本等:

5.1、硬體成本:

其中最主要包括:計算成本和存儲成本。在 StoneDB 實際的產品 POC 過程中,遇到很多客戶實際的業務數據量在 100GB-1TB 內。如果採用一些現有的其他國產 HTAP 產品,由於這些產品對最小集群有要求,從而使得這些小廠商在使用 HTAP 服務時,必須付出比較高的集群硬體成本,這個是他們不願意接受的。特別地,當需要替換現有MySQL資料庫的時候,目前的一些國產 HTAP 資料庫,基本都存在 MySQL 語法相容性的問題,這導致遷移到新的業務系統上需要進行大量的修改,從而造成整體成本的飆升。如果廠商比較在乎這一部分的成本的話,StoneDB 就是很好的選擇了。

5.2、替換成本:

需要能夠提供對於原系統的平滑遷移能力。對於業務侵入改動最小,業務無需做修改即可平滑遷移到新的資料庫平臺。

5.3、運維成本:

在第三點中我們討論運維問題,這裡就不再詳細討論了。運維成本將會是系統穩定後,最主要的支出成本。

file

LTS 支持性

對於LTS(Long Term Support,長期支持版)支持性,這裡又可以從兩個方面來討論。
(1)商業 HTAP 資料庫
(2)開源 HTAP 資料庫
無論對於商業資料庫還是開源資料庫都面臨某個版本的生命周期問題。

商業資料庫相對來說,其售後服務有保障,但同時商業資料庫又面臨閉源和售後服務需要支付昂貴的服務費用等問題。而開源資料庫,其 LTS 的支持除了需要社區支持以外,也需要由其背後的公司來進行保證。我們也很容易發現,一個成功的開源資料庫項目背後,通常都有一個成功的商業公司支撐。

因此,無論是選擇哪類 HTAP 資料庫,都需要註意所選擇的產品的 LTS 支持性的問題。

好了,以上就是我們總結的選擇一款 HTAP 資料庫需要考量的六大因素,也即:業務場景、性能、運維、生態、成本和 LTS 支持性,希望對於這六點的分析能給大家在做 HTAP 產品選型時提供幫助。

StoneDB 的 2.0 架構完全對標 Oracle MySQL MDS(HeatWave),目前,我們的架構設計方案的RFC文檔也完全公佈在了 Github 上:

https://github.com/stoneatom/stonedb/issues/436

如果您想瞭解更多,也可以關註我們的 Github 倉庫:

https://github.com/stoneatom/stonedb

本周五(12月9號)下午,StoneDB 開源社區PMC、StoneDB 首席架構師李浩老師也將參與由 ITPUB 社區舉辦的開源小秀場線上 Meetup 活動,歡迎大家前往官網 http://os.itpub.net/ 關註:

file

StoneDB 2.0 雲原生分散式實時 HTAP 架構詳細設計以 RFC 形式持續進行,歡迎大家關註我們最新進展,更歡迎給我們開源協作的模式和方法提出改進意見,一起通過開源的方式共建 StoneDB ~

https://github.com/stoneatom/stonedb/issues/436

  • StoneDB 代碼已完全在 Github 開源:

https://github.com/stoneatom/stonedb

  • StoneDB 官網:

https://stonedb.io/


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

-Advertisement-
Play Games
更多相關文章
  • 有來實驗室結合正式的商城訂單支付業務場景將 Seata 分散式事務可視化,通過現象去看本質(原理和源碼),告別被動式輸入的短期記憶學習。 ...
  • C# 簡介 C#是微軟公司發佈的一種由C和C++衍生出來的面向對象的編程語言,它不僅去掉了 C++ 和 Java 語言中的一些複雜特性,還提供了可視化工具,能夠高效地編寫程式。 C#是由C和C++衍生出來的一種安全的、穩定的、簡單的、優雅的面向對象編程語言。它在繼承C和C++強大功能的同時去掉了一些 ...
  • 防禦式編程的重點就是需要防禦一些程式未曾預料的錯誤,這是一種提高軟體質量的輔助性方法,斷言assert就用於防禦式編程,編寫代碼時,我們總是會做出一些假設,斷言就是用於在代碼中捕捉這些假設。使用斷言是為了驗證預期的結果——當程式執行到斷言的位置時,對應的斷言應該為真;若斷言不為真時,程式會終止執行, ...
  • 十七、插入數據 本章將介紹如何利用sql的INSERT語句將數據插入表中 數據插入 插入分為以下幾種方式:插入完整的行、插入行的一部分、插入多行、插入某些查詢結果 插入完整的行 INSERT INTO Customers VALUES(NULL, 'Pep E. LaPew', '100 Main ...
  • 1.5 HDFS分散式文件系統 1.5.1 HDFS 簡介 HDFS(全稱:Hadoop Distribute File System,Hadoop 分散式文件系統)是 Hadoop 核心組成,是分散式存儲服務。 分散式文件系統橫跨多台電腦,在大數據時代有著廣泛的應用前景,它們為存儲和處理超大規模 ...
  • sysbench是一個開源的、基於LuaJIT(LuaJIT 是 Lua 的即時編譯器,可將代碼直接翻譯成機器碼,性能比原生 lua 要高) 的、可自定義腳本的多線程基準測試工具,也是目前用得最多的 MySQL 性能壓測工具。 基於 sysbench,我們可以對比 MySQL 在不同版本、不同硬體配 ...
  • 緩存管理器CacheManager 一、背景 ​ 代碼併發量因建行活動頁上升,大量請求打到Mongo導致資料庫cpu100%從而服務不可用,目前解決方案,使用編程式緩存,即對緩存的操作與業務代碼耦合。目前基本上可以解決併發問題。此次提出CacheManager主要是優化代碼。使用聲明式,即註解的方式 ...
  • 摘要:糟糕,資料庫異常不可用怎麼辦?挺著急的,線上等。 本文分享自華為雲社區《糟糕,資料庫異常不可用怎麼辦?》,作者:GaussDB 資料庫。 隨著數字化轉型的加速,數據量爆髮式增長,用戶對資料庫運維能力要求更高,實現對資料庫的高效智能管理,尤其是業務異常時,資料庫運維平臺能自動定位故障並修複,或者 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...