細數(shù)一下,大數(shù)據(jù)架構目前比較熱的詞包括:
* 數(shù)據(jù)湖、湖倉一體
* 批流合一、實時計算
* 存算分離、存儲虛擬化
* 交易和分析融合,OLAP、HTAP、HSAP
等等,基本上還是圍繞大數(shù)據(jù)平臺的存儲和計算的兩大主題。
動機方面,依然可以概括為多快好?。?/p>
* 多:
** 支持更大的數(shù)據(jù)量
** 支持更大的訪問量,如AP的并發(fā)訪問問題
* 快:
** 配置變更更快,使用集成度更好的工具
** 數(shù)據(jù)接入速度更快,在源端(數(shù)據(jù)庫等)、接入工具端(cdc)、存儲端(增量寫入)有更好的支持
** 數(shù)據(jù)處理快,直接消費接入端數(shù)據(jù),增量處理(依賴于存儲格式)和實時處理(直接消費接入流)
** 訪問速度快,索引、壓縮、預計算等方法,緩存、向量化等手段,適合場景的加速化設計(lsm、時序庫)等
* 好
** 對業(yè)務人員友好,提供更好的服務,更低的使用門檻(自動建模、業(yè)務術語),與業(yè)務過程更好地融合(增強分析)
** 對開發(fā)人員友好,框架、算子、算法更友好,不同層的開發(fā)分離關注點(業(yè)務層SQL、平臺層各種語言)
** 對運維人員友好,部署統(tǒng)一化、云化,監(jiān)控、告警、自動優(yōu)化
* 省
** 計算資源,存算分離,計算可以靈活調(diào)度、擴縮容、與其他系統(tǒng)共享資源池
** 存儲資源,冷熱分離(auto tiering),存儲虛擬化(caching,RAM、disk等多種存儲提供統(tǒng)一訪問,自動優(yōu)化)
架構技術上,從存儲和計算分開來看
~ 存儲無非數(shù)據(jù)讀寫,目前的重點是增量寫,也就是數(shù)據(jù)湖的相關技術,基于版本的文件系統(tǒng),借鑒的還是數(shù)據(jù)庫的概念,hudi也號稱自己是serverless的數(shù)據(jù)庫
~存儲虛擬化,即user space fs,在linux平臺還是很早就有的fuse,Windows是ifs(installable),對cache、ssd、hd、archive基層的存儲進行合成和按需調(diào)度,支持重復訪問等場景
~計算,可以分為微觀優(yōu)化和宏觀優(yōu)化
~~ 微觀方面借助向量化等更好的工程手段壓榨硬件潛力
~~ 宏觀方便借助執(zhí)行計劃、多引擎、文件系統(tǒng)深度融合(s3-select)等,追求與場景的適配
存儲結合方面,計算模式的歷程包括
# map-reduce利用分布式、批量和局部性,偏向于靜態(tài)的處理能力
# micro-batch這個局部優(yōu)化環(huán)節(jié),平衡計算能力與中間存儲代價,并初步支持非靜態(tài)的近線數(shù)據(jù),以及數(shù)據(jù)多次計算場景(ml)
# 到增量式的存儲和計算協(xié)調(diào)設計,structed streaming和flink都有這樣的設計,數(shù)據(jù)湖也是這個思路
# TP和AP的結合設計,同時支持點查詢(行式)和統(tǒng)計查詢(列式),這里有hologres和tidb,同一年發(fā)的paper,理念也是類似
# mpp分布式數(shù)據(jù)庫的繼續(xù)探索,包括greenplum、ADB、redshift,在支持更多場景的同時,都在做更深層的優(yōu)化。與傳統(tǒng)數(shù)據(jù)庫的同宗同源可能是它們的最大優(yōu)勢
# 一體化設計,做大數(shù)據(jù)是否真的需要這么多的組件,小公司做大數(shù)據(jù),以及資源受限情況下的大數(shù)據(jù)應該怎么做,snowflake一騎絕塵,人人都想成為snowflake,但大多數(shù)還處于思想對齊的階段。