主頁 > 資料庫 > StoneDB 首席架構師李浩:如何選擇一款 HTAP 產品?

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

2022-12-07 12:05:43 資料庫

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/

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/539387.html

標籤:MySQL

上一篇:1.5.4 HDFS 客戶端操作-hadoop-最全最完整的保姆級的java大資料學習資料

下一篇:糟糕,資料庫例外不可用怎么辦?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more