近來(lái)接觸到DorisDB鸵闪,做了些調(diào)研,記錄下來(lái)暑诸。過(guò)程描述不一定準(zhǔn)備蚌讼,如有描述偏差,請(qǐng)指正个榕。
1?介紹部分
1篡石、DorisDB是什么
DorisDB重新定義了MPP分布式架構(gòu),集群可擴(kuò)展至數(shù)百節(jié)點(diǎn)西采,支持PB級(jí)數(shù)據(jù)規(guī)模凰萨,是當(dāng)前唯一可以在大數(shù)據(jù)規(guī)模下進(jìn)行在線(xiàn)彈性擴(kuò)展的企業(yè)級(jí)分析型數(shù)據(jù)庫(kù)。DorisDB還打造了全新的向量化執(zhí)行引擎械馆,單節(jié)點(diǎn)每秒可處理多達(dá)100億行數(shù)據(jù)胖眷,查詢(xún)速度比其他產(chǎn)品快10—100倍!
(官網(wǎng):https://www.dorisdb.com/zh-CN/product)
(1)新一代極速M(fèi)PP數(shù)據(jù)庫(kù)
(2)高性能分布式關(guān)系型列式數(shù)據(jù)庫(kù)
(4)高并發(fā)低延時(shí)查詢(xún)霹崎,支持PB級(jí)珊搀,可有效地支持在線(xiàn)實(shí)時(shí)數(shù)據(jù)分析
2、產(chǎn)品特性
(1)極速SQL查詢(xún) 全新的向量化執(zhí)行引擎尾菇,亞秒級(jí)查詢(xún)延時(shí)境析,單節(jié)點(diǎn)每秒可處理多達(dá)100億行數(shù)據(jù)。強(qiáng)大的MPP執(zhí)行框架派诬,支持星型模型和雪花模型劳淆,極致的Join性能。綜合查詢(xún)速度比其他產(chǎn)品快10-100倍
(2)實(shí)時(shí)數(shù)據(jù)分析 新型列式存儲(chǔ)引擎默赂,支持大規(guī)模數(shù)據(jù)實(shí)時(shí)寫(xiě)入沛鸵,秒級(jí)實(shí)時(shí)性保證。支持業(yè)務(wù)指標(biāo)實(shí)時(shí)聚合缆八,加速實(shí)時(shí)多維數(shù)據(jù)分析曲掰。新型讀寫(xiě)并發(fā)管理模式朝刊,可同時(shí)高效處理數(shù)據(jù)讀取和寫(xiě)入
(3)高并發(fā)查詢(xún) 靈活的資源分配策略,每秒可支持高達(dá)1萬(wàn)以上的并發(fā)查詢(xún)蜈缤。可高效支持?jǐn)?shù)千用戶(hù)同時(shí)進(jìn)行數(shù)據(jù)分析冯挎。
(4)輕松管理大數(shù)據(jù)
支持在大數(shù)據(jù)規(guī)模下進(jìn)行在線(xiàn)彈性擴(kuò)展底哥,擴(kuò)容不影響線(xiàn)上業(yè)務(wù)。集群可擴(kuò)展至數(shù)百節(jié)點(diǎn)房官,PB量級(jí)數(shù)據(jù)趾徽。集群運(yùn)行高度自治化,故障自恢復(fù)翰守,運(yùn)維成本低
(5)全面兼容MySQL協(xié)議
????????支持標(biāo)準(zhǔn)SQL
????????可使用MySQL客戶(hù)端和常用BI工具對(duì)接DorisDB來(lái)進(jìn)行數(shù)據(jù)分析孵奶,支持多種數(shù)據(jù)模型(明細(xì)表, 聚合表)蜡峰, 多種導(dǎo)入方式(批量了袁,流), 可整合和接入多種現(xiàn)有系統(tǒng)(Spark湿颅, Flink载绿, Hive, ElasticSearch) 提供Colocation Join, 分析函數(shù), 布隆過(guò)濾, 物化視圖, bitmap索引等特性, 增加分片數(shù)據(jù)自動(dòng)rebalance; 多表關(guān)聯(lián)性能較好;
(6)管理部署簡(jiǎn)單 部署簡(jiǎn)單油航,不需要依賴(lài)任何其他系統(tǒng)(不依賴(lài)HDFS)
????????采用分布式架構(gòu)崭庸,對(duì)table進(jìn)行水平劃分并以多副本存儲(chǔ):存儲(chǔ)容量和計(jì)算能力可近似線(xiàn)性水平擴(kuò)展 在線(xiàn)彈性擴(kuò)展,集群規(guī)囊昵簦可以靈活伸縮怕享,支持?jǐn)?shù)百節(jié)點(diǎn)集群,數(shù)據(jù)規(guī)模到達(dá)10PB(那如果大于10PB的場(chǎng)景呢)
????????支持多副本镰踏,具有彈性容錯(cuò)能力
????????DorisDB表模式熱變更函筋,可通過(guò)一條簡(jiǎn)單SQL命令動(dòng)態(tài)地修改表的定義,處于模式變更中的表也可也正常導(dǎo)入和查詢(xún)數(shù)據(jù)奠伪∽つ牛——能熱變更是因?yàn)樗橇惺綌?shù)據(jù)庫(kù)?所以動(dòng)態(tài)改表也成為可能芳来?
????????DorisDB是一個(gè)自治的系統(tǒng)含末。節(jié)點(diǎn)的上下線(xiàn),集群擴(kuò)縮容都可通過(guò)一條簡(jiǎn)單的SQL命令來(lái)完成; 在此操作期間即舌, DorisDB后臺(tái)自動(dòng)完成數(shù)據(jù)rebalance; ?用戶(hù)的查詢(xún)和數(shù)據(jù)導(dǎo)入操作可同時(shí)正常運(yùn)行佣盒。
(7)高可用,高性能顽聂,分布式肥惭,關(guān)系型列式數(shù)據(jù)庫(kù) 元數(shù)據(jù)和數(shù)據(jù)管理采用熱備保證高可用盯仪,能夠自愈服務(wù)來(lái)保證數(shù)據(jù)安全可靠。
????????支持高并發(fā)低延時(shí)查詢(xún)蜜葱,支持PB級(jí)以上的超大數(shù)據(jù)集全景,可有效地支持在線(xiàn)實(shí)時(shí)數(shù)據(jù)分析
????????列式存儲(chǔ)引擎,通過(guò)編碼和壓縮技術(shù)牵囤,降低讀寫(xiě)
(8)向量化執(zhí)行引擎
????????消除程序循環(huán)的優(yōu)化
(9)使用方便
????????提供快捷查詢(xún)UI
????????支持流批導(dǎo)入——DorisDB支持實(shí)時(shí)和批量?jī)煞N數(shù)據(jù)導(dǎo)入方式爸黄, 支持的數(shù)據(jù)源有Kafka, HDFS揭鳞, 本地文件炕贵,支持的數(shù)據(jù)格式有ORC, Parquet和CSV等野崇, DorisDB可以實(shí)時(shí)消費(fèi)Kafka數(shù)據(jù)來(lái)完成數(shù)據(jù)導(dǎo)入称开,保證數(shù)據(jù)不丟不重(exactly once)。DorisDB也可以從本地或者遠(yuǎn)程(HDFS)批量導(dǎo)入數(shù)據(jù)乓梨。
(10)數(shù)據(jù)分區(qū) DorisDB支持兩級(jí)分區(qū)和動(dòng)態(tài)分區(qū)鳖轰。首先, 第一級(jí)分區(qū)對(duì)數(shù)據(jù)做Range劃分扶镀, ?用戶(hù)可以把分區(qū)作為管理目標(biāo)脆霎, 動(dòng)態(tài)增刪分區(qū)。 ?其次狈惫, 為了解決分區(qū)內(nèi)的數(shù)據(jù)傾斜問(wèn)題睛蛛, ?對(duì)分區(qū)做第二級(jí)分桶, 對(duì)分區(qū)內(nèi)的數(shù)據(jù)做Hash劃分胧谈。 這種分區(qū)分桶的設(shè)計(jì)方法忆肾, 可以靈活管理用戶(hù)數(shù)據(jù), ?比如可以設(shè)置分區(qū)的存儲(chǔ)介質(zhì)菱肖,副本數(shù)客冈,分區(qū)的生存周期和分桶數(shù)量等等。 用戶(hù)可以利用分區(qū)分桶的機(jī)制實(shí)現(xiàn)冷熱數(shù)據(jù)分離等功能稳强。
(11)Index加速查詢(xún)
????????DorisDB在存儲(chǔ)引擎中支持使用Bitmap场仲,Bloom Filter等索引方式。大部分場(chǎng)景中退疫,DorisDB會(huì)在內(nèi)部充分利用各種數(shù)據(jù)結(jié)構(gòu)優(yōu)化查詢(xún)渠缕,用戶(hù)無(wú)須主動(dòng)創(chuàng)建索引加速。用戶(hù)也可以根據(jù)具體的業(yè)務(wù)場(chǎng)景使用不同的索引技術(shù)來(lái)進(jìn)行優(yōu)化褒繁,例如在中高基數(shù)的字符串字段上創(chuàng)建Bitmap索引來(lái)提升equal/in 查詢(xún)的效率等亦鳞。
(12)近似去重、精確去重功能
????????DorisDB內(nèi)置HyperLogLog類(lèi)型以及Bitmap類(lèi)型。用戶(hù)可以通過(guò)這兩個(gè)類(lèi)型完成數(shù)據(jù)快速的近似去重燕差,或者精確去重遭笋。
3、架構(gòu)
3.1整體架構(gòu)
3.2 整體架構(gòu)- MPP架構(gòu)
3.2 整體架構(gòu)- MPP架構(gòu)-2
4徒探、適用場(chǎng)景分析
4.1 DorisDB場(chǎng)景適用特點(diǎn):
? ??支持靈活地分析
????????數(shù)據(jù)查詢(xún)的速度要快
????????數(shù)據(jù)報(bào)表的建設(shè)速度要快
????????基于預(yù)計(jì)算的數(shù)據(jù)分析模式已經(jīng)不能滿(mǎn)足多樣化的數(shù)據(jù)分析場(chǎng)景
? ? 支持實(shí)時(shí)地分析
????支持多業(yè)務(wù)人員同時(shí)分析
????支持統(tǒng)一的數(shù)據(jù)分析體系
(即:用一套統(tǒng)一的體系來(lái)滿(mǎn)足企業(yè)多種數(shù)據(jù)分析場(chǎng)景的需求瓦呼,讓更多的企業(yè)成員能夠同時(shí)更快、更靈活测暗、更實(shí)時(shí)地分析數(shù)據(jù)央串。)
4.2 參考的適用場(chǎng)景
? ??1、對(duì)數(shù)據(jù)分析偷溺、統(tǒng)計(jì)
????????數(shù)據(jù)分析大體上可以分為兩大類(lèi)場(chǎng)景:一種偏向于報(bào)表類(lèi)的,另一種偏向于多維分析的钱贯。
????2挫掏、報(bào)表
????????報(bào)表類(lèi)數(shù)據(jù)分析,數(shù)據(jù)分析以及查詢(xún)的模式相對(duì)比較固定秩命,而且后臺(tái)SQL的模式往往都是確定的尉共。針對(duì)此類(lèi)應(yīng)用場(chǎng)景,選擇使用 MySQL 存結(jié)果數(shù)據(jù)弃锐,用戶(hù)可從界面選擇執(zhí)行批處理以及發(fā)送郵件袄友。在 Doris 平臺(tái)中,報(bào)表類(lèi)查詢(xún)時(shí)延一般在秒級(jí)以下霹菊。
????3剧蚣、多維分析
????????這里提到的多維分析,同樣要求數(shù)據(jù)是結(jié)構(gòu)化的旋廷,適用于查詢(xún)相對(duì)靈活的場(chǎng)景鸠按,例如數(shù)據(jù)分析條件以及聚合維度等方面不是很確定,一般將此類(lèi)數(shù)據(jù)分析定義為多維分析饶碘。相對(duì)于報(bào)表類(lèi)分析目尖,多維分析的查詢(xún)時(shí)延會(huì)稍慢,大約在會(huì)在10s的級(jí)別扎运。
4.3?不適用的場(chǎng)景
????????Doris主要解決 PB 級(jí)別的數(shù)據(jù)量(如果高于 PB 級(jí)別瑟曲,不推薦使用 Doris 解決,可以考慮用 Hive 等工具)豪治,解決結(jié)構(gòu)化數(shù)據(jù)洞拨,查詢(xún)時(shí)間一般在秒級(jí)或毫秒級(jí)。
????????目前的話(huà)负拟,Doris不適合做大規(guī)模的批處理扣甲,當(dāng)前版本由于是全內(nèi)存計(jì)算,所以面對(duì)大規(guī)模數(shù)據(jù)的復(fù)雜ETL容易內(nèi)存不足
2 部分總結(jié)
1.DorisDB為什么快
????1、系統(tǒng)架構(gòu)
????????a)MPP架構(gòu)
????????b)分布式調(diào)度 + 查詢(xún)規(guī)劃
????????c)充分利用多機(jī)多核
????2琉挖、表設(shè)計(jì)
????????a)分區(qū)启泣,分桶設(shè)計(jì)
????????b)排序鍵設(shè)計(jì)
????????c)精確的類(lèi)型選擇
????3、存儲(chǔ)引擎
????????a)列式存儲(chǔ)
????????b)前綴索引+zoneMap(示辈?)
????????c)延遲物化
????????d)Bitmap索引寥茫,BloomFilter索引
????????e)pushdown + 向量化過(guò)濾
????????f)字符串低基數(shù)優(yōu)化
????4、計(jì)算引擎
????????a)向量化引擎
????????????i.向量化函數(shù)
????????????ii.向量化節(jié)點(diǎn)
????????????iii.向量化導(dǎo)入
????????b)SIMD指令
????????c)內(nèi)存模型
????????d)兩層聚合優(yōu)化
????????e)join & join Filter
2.?DorisDB除了很快矾麻,還有什么優(yōu)勢(shì)纱耻?
1.使?簡(jiǎn)單
????a)Mysql協(xié)議兼容
????????i.標(biāo)準(zhǔn)SQL,兼容各類(lèi)主流BI险耀,遷移成本極低
????????ii.函數(shù)?持豐富弄喘,包括各類(lèi)時(shí)間、字符串甩牺、GIS蘑志、聚合函數(shù)以及窗?函數(shù)
????b)靈活的數(shù)據(jù)模型
????????i.?效?持星型/雪花模型,避免打平成?寬表贬派,更加靈活的適應(yīng)實(shí)時(shí)更新和維度變化
????????ii.Duplicate/Unique/Aggregate三種模式適配各類(lèi)場(chǎng)景
????c)開(kāi)箱即?的?戶(hù)體驗(yàn)
????????i.?適應(yīng)應(yīng)對(duì)各種case急但,?須額外的復(fù)雜優(yōu)化?段
????????ii.各種Load?段可以降低ETL?作量,通過(guò)配置快速導(dǎo)?數(shù)據(jù)
2.運(yùn)維?便
????a)高可用
????????i.FE采取類(lèi)Paxos?致性算法搞乏,?單點(diǎn)瓶頸
????????ii.BE多副本可以獨(dú)?調(diào)節(jié)波桩,數(shù)據(jù)按?身特性靈活拆分
????b)高度自治
????????i.?外部依賴(lài),避免繁雜的中間件維護(hù)
????????ii.副本?修復(fù)请敦,數(shù)據(jù)?均衡镐躲,?鍵擴(kuò)容,縮容
????c)可視化管理工具
????????i.全局配置侍筛,?鍵部署匀油,滾動(dòng)升級(jí)
????????ii.完備的監(jiān)控告警集成保障系統(tǒng)穩(wěn)定可觀(guān)測(cè)
????????iii.靈活的擴(kuò)容縮容?便集群容量規(guī)劃
3.生態(tài)完善
4.穩(wěn)定可靠
????a)高可架構(gòu)
????????i.沒(méi)有單點(diǎn),F(xiàn)E高可用勾笆,BE多副本(待研究敌蚜,F(xiàn)E,BE要怎樣集群部署)
5.統(tǒng)一分析平臺(tái)
名詞解釋?zhuān)?/p>
1、bitmap索引
????如果用戶(hù)查詢(xún)的列的基數(shù)非常的小窝爪, 即只有的幾個(gè)固定值弛车,如性別、婚姻狀況蒲每、行政區(qū)等等纷跛。
????要為這些基數(shù)值比較小的列建索引,就需要建立位圖索引邀杏∑兜欤基數(shù)值大的就不適合bitmap索引了
2唬血、Bloomfilter
3、近似去重唤崭,精確去重
????近似去重拷恨,去重有1%的偏差,精確去重谢肾,就是連1%的偏差都不允許
4腕侄、MPP
????MPP (Massively Parallel Processing),即大規(guī)模并行處理芦疏。簡(jiǎn)單來(lái)說(shuō)冕杠,MPP是將任務(wù)并行的分散到多個(gè)服務(wù)器和節(jié)點(diǎn)上,在每個(gè)節(jié)點(diǎn)上計(jì)算完成后酸茴,將各自部分的結(jié)果匯總在一起得到最終的結(jié)果(與Hadoop相似分预,分治思想)。
????MPP架構(gòu)特征:
????????任務(wù)并行執(zhí)行
????????數(shù)據(jù)分布式存儲(chǔ)(本地化)
????????分布式計(jì)算
????????私有資源
????????橫向擴(kuò)展
????????Shared Nothing架構(gòu)
5薪捍、元數(shù)據(jù)
????元數(shù)據(jù)是用來(lái)描述數(shù)據(jù)的數(shù)據(jù)笼痹,比如 "年齡"、"身高"(這些數(shù)據(jù)是描述一個(gè)人的數(shù)據(jù)飘诗,這些數(shù)據(jù)就是元數(shù)據(jù)与倡,最小粒度的數(shù)據(jù))
6界逛、SSB: Star schema benchmark學(xué)術(shù)界和工業(yè)界廣泛使用的一個(gè)星型模型測(cè)試集
????SSB基準(zhǔn)測(cè)試包括:
????????1個(gè)事實(shí)表:lineorder
????????4個(gè)維度表:customer昆稿,part,dwdate息拜,supplier
????????13條標(biāo)準(zhǔn)SQL查詢(xún)測(cè)試語(yǔ)句:統(tǒng)計(jì)查詢(xún)溉潭、多表關(guān)聯(lián)、sum少欺、復(fù)雜條件喳瓣、group by、order by等組合方式赞别。
7畏陕、星型模型和雪花模型
? ? 參考:https://blog.csdn.net/nisjlvhudy/article/details/7889422
????兩者的區(qū)別主要是對(duì)于數(shù)據(jù)的冗余程度不一樣,和它的表設(shè)計(jì)方案不一樣仿滔。數(shù)據(jù)表分為“事實(shí)表”和“維度表”兩種惠毁。
????星型模型:如果維度表和事實(shí)表的關(guān)聯(lián)都僅限一層,那么它就是星型模型崎页,但可能存在較多的數(shù)據(jù)冗余鞠绰,星型架構(gòu)是一種非正規(guī)化的結(jié)構(gòu),多維數(shù)據(jù)集的每一個(gè)維度都直接與事實(shí)表相連接飒焦,不存在漸變維度蜈膨,所以數(shù)據(jù)有一定的冗余
????雪花模型:一個(gè)或多個(gè)維度表不與事實(shí)表直接關(guān)聯(lián),而是通過(guò)其它維度表間接關(guān)聯(lián),這種模型就是雪花模型翁巍。減少數(shù)據(jù)冗余驴一。但此方式在統(tǒng)計(jì)查詢(xún)過(guò)程中,關(guān)聯(lián)的表變多曙咽,性能上會(huì)比星型模型差蛔趴。該模型在數(shù)據(jù)規(guī)范更合理。