《陳明雨-云原生數據倉庫 Apache Doris 特性解讀與未來規劃(GOTC深圳會場)(50頁).pdf》由會員分享,可在線閱讀,更多相關《陳明雨-云原生數據倉庫 Apache Doris 特性解讀與未來規劃(GOTC深圳會場)(50頁).pdf(50頁珍藏版)》請在三個皮匠報告上搜索。
1、云原生數據倉庫Apache Doris 特性解讀與未來規劃陳明雨Apache Doris PPMC百度認識 Doris01為什么要選擇 Doris02Doris 的進行時和未來式03認識Doris012008Doris12009Doris22012Doris 32012MySQL+Doris3OLAP Engine20132013Palo12015Palo22017PaloOpenSource2018Apache DorisDoris在在數數據據流流中中的的定定位位為什么選擇Doris02當我們選擇一款分析型數據庫時,我們在選擇什么?1足夠簡單2足夠高效3功能豐富4開源開放1足夠簡單 架構圖都
2、沒看懂,怎么運維系統?副本壞了要手動修復?擴容集群要1人周?我不管,我只會寫SQL!每次升級都要給用戶發通告?。MySQL Tools(MySQL Networking)FE(Leader,JAVA)FE(Follower,JAVA)FE(Follower,JAVA)FE(Observer,JAVA)BE(C+)BE(C+)BE(C+)BE(C+)整整體體架架構構簡簡單單,產產品品易易用用 高度兼容MySQL協議 主從架構,不依賴任何其他組件 FE負責解析/生成/調度查詢計劃 BE負責執行查詢計劃、數據存儲 任何節點都可線性擴展Tablet 1Tablet 3Tablet 1Tablet 2T
3、ablet 2Tablet 3Tablet 2Tablet 3Store 1Store 2Store 3BEBEBEMasterFEFEMySQL ClientTablet 1Tablet 2Tablet 3TableTablet 1Tablet 1Tablet 3Tablet 1Tablet 2Tablet 2Tablet 3Tablet 1Tablet 1Tablet 3Store 1Store 2Store 3Store 4BEBEBEBETablet 2Tablet 2多多副副本本存存儲儲,自自動動數數據據遷遷移移、副副本本均均衡衡標標準準SQL支支持持 單表聚合、排序、過濾 多表關聯
4、、子查詢、窗口函數灰灰度度升升級級 分布式系統升級,并沒有那么可怕 向前兼容,滾動升級 查詢自動重試,減少業務感知FE(Leader,JAVA)FE(Follower,JAVA)FE(Follower,JAVA)FE(Observer,JAVA)BE(C+)BE(C+)BE(C+)BE(C+)2足夠高效存儲引擎查詢引擎優化器存存儲儲引引擎擎 多種編碼方式 自適應編碼 按需讀取012IDNameCostJohnShawnMarry1005050012IDNameJohnShawnMarryCost1005050BitShuffleDictionaryRLESegment 1Segment 2Se
5、gment 3HeaderData RegionIndex RegionFooterColumn 1Column2Column3Page 1Page 1Page 1存存儲儲結結構構前前綴綴稀稀疏疏索索引引:基基于于排排序序列列查查詢詢的的快快速速過過濾濾 Min Max 索引 Bloom Filter 倒排索引?存存儲儲引引擎擎索索引引結結構構 前綴稀疏索引 Min Max索索引引:Segment和和Page級級別別快快速速過過濾濾 Bloom Filter 倒排索引存存儲儲引引擎擎索索引引結結構構DataPageSegmentMin/MaxHasNullHasNotNullMin/MaxHa
6、sNullHasNotNullDataPageMin/MaxHasNullHasNotNullDataPageMin/MaxHasNullHasNotNull 前綴稀疏索引 Min Max 索引 Bloom Filter:Page級級別別的的快快速速過過濾濾 倒排索引存存儲儲引引擎擎索索引引結結構構DataPageDataPageDataPageBloomFilter1BloomFilter2BloomFilter3 前綴稀疏索引 Min Max 索引 Bloom Filter倒倒排排索索引引:基基于于Bitmap快快速速精精確確查查找找存存儲儲引引擎擎索索引引結結構構 先過濾、再取數 減少
7、IOA01234567B01234567C01234567SELECT A,B,C from tbl where A=2 and C=3?A?存存儲儲引引擎擎延延遲遲物物化化 真正的 MPP 火山模型查查詢詢引引擎擎Physical PlanFragment 2Fragment 1Logic PlanSortAggrJoinScan 1Scan 2SortAggrJoinScan 1Scan 2Exchange并并發發執執行行模模型型 節點間并行查查詢詢引引擎擎BE 1Fragment 2-1Fragment 1-1SortAggrJoinScan 1Scan 2ExchangeBE 2Fra
8、gment 2-2Fragment 1-2SortAggrJoinScan 1Scan 2ExchangeBE 3Fragment 2-3Fragment 1-2SortAggrJoinScan 1Scan 2Exchange并并發發執執行行模模型型 節點內并行查查詢詢引引擎擎并并發發執執行行模模型型BE 1Fragment 2-1-1Fragment 1-1-1SortAggrJoinScan 1Scan 2ExchangeFragment 1-1-2SortAggrJoinScan 1ExchangeFragment 1-1-3SortAggrJoinScan 1ExchangeFragm
9、ent 2-1-2Scan 2Fragment 2-1-3Scan 2 第一層先聚合,減少數據傳輸 自動感知聚合程度,減少阻塞時間查查詢詢引引擎擎自自適適應應的的兩兩階階段段聚聚合合Local AggrLocal AggrLocal AggrScanFinal AggrFinal AggrFinal AggrShuffle?ScanScan 減少Probe側計算量查查詢詢引引擎擎Runtime FilterTable BTable AJoinRuntime FilterON A.col1=B.col2col1100110205300Runtime Filter for col1IN100,11
10、0,205,300BloomFilter01011101MinMax100,300 自動穿透 Runtime Filter 合并查查詢詢引引擎擎Runtime FilterJoinScan1ExchgAggScan2BuildTableProbeTableJoin1BuildTableProbeTableJoin2BuildTableProbeTableJoin3RuntimeFilterMerger123MergedMergedMergedMerged?JoinJoinJoin查查詢詢引引擎擎Runtime Filter常常量量折折疊疊 子查詢改寫 提取公共表達式 智能預過濾 謂詞下推查查詢
11、詢優優化化器器基基于于規規則則的的優優化化器器(RBO)WHERE event_date?WHERE event_date?常量折疊子子查查詢詢改改寫寫 提取公共表達式 智能預過濾 謂詞下推查查詢詢優優化化器器基基于于規規則則的的優優化化器器(RBO)SELECT*FROM tbl1WHEREcol1 IN(SELECT col2 FROM tbl2)aSELECT tbl1.*FROM tbl1 JOIN tbl2 on tbl1.col1=tbl2.col2;常量折疊 子查詢改寫提提取取公公共共表表達達式式 智能預過濾 謂詞下推查查詢詢優優化化器器基基于于規規則則的的優優化化器器(RBO)
12、SELECT*FROM tbl1WHERE?1 AND b=2)OR?1 AND b=3)OR?1 AND b=4)SELECT*FROM tbl1WHERE?常量折疊 子查詢改寫 提取公共表達式智智能能預預過過濾濾 謂詞下推查查詢詢優優化化器器基基于于規規則則的的優優化化器器(RBO)SELECT*FROM tbl1WHERE?SELECT*FROM tbl1WHERE?常量折疊 子查詢改寫 提取公共表達式 智能預過濾謂謂詞詞下下推推查查詢詢優優化化器器基基于于規規則則的的優優化化器器(RBO)SCANSCANJOINFILTERSCANSCANFILTERJOINFILTERSCANSCA
13、NJOINFILTERFILTER?Join Reorder Colocation Join Bucket Join查查詢詢優優化化器器基基于于代代價價的的優優化化器器(CBO)Scan1Scan2Join1Scan3Join21000 rows100 rows2000 rows10 rowsScan1Scan3Join1Scan2Join21000 rows10 rows100 rows100 rowsReorder Join Reorder Colocation Join Bucket Join查查詢詢優優化化器器基基于于代代價價的的優優化化器器(CBO)Bucket1Bucket1Buc
14、ket2Bucket2Bucket3Bucket3LocalJoinLocalJoinLocalJoinScan1Scan2Scan1Scan2Scan1Scan2ShuffleScanAScanAScanBScanBScanCScanCJoinJoinJoinColocation Tables Join Reorder Colocation Join Bucket Join查查詢詢優優化化器器基基于于代代價價的的優優化化器器(CBO)Scan1Scan2Scan1Scan2Scan1Scan2ShuffleScanAScanAScanBScanBScanCScanCJoinJoinJoinS
15、can1Scan2Scan1Scan2Scan1Scan2Scan1ScanAScan1ScanBScan1ScanCJoinJoinJoinBucket Shuffle3功能豐富 高并發?Adhoc?精確去重?用戶畫像?漏斗分析?預聚合Cube?數據更新?分分區區、分分桶桶裁裁剪剪 SQL/Partition/Page Cache高高并并發發查查詢詢TablePartition1 2021-06-26Bucket1Hash(id)=100Partition1 2021-06-27Partition1 2021-06-27Partition1 2021-06-28Bucket2Hash(id)
16、=200Bucket3Hash(id)=200WHERE date=“2021-06-26”AND id=33;?分區、分桶裁剪 SQL/Partition/Page Cache高高并并發發查查詢詢Hash(SQL1)Result SetHash(SQL2)Result SetHash(SQL3)Result SetSQL CacheHash(SQL1 part)2021-06-262021-06-272021-06-27Result SetResult SetResult SetSELECT a FROM tbl where id=1 AND date=“2021-06-26”Partiti
17、on CacheLRU Page CacheData PageData PageData PageData PageIndex PageIndex PageIndex PageIndex PageAdhoc和和庫庫內內ETL 復雜SQL支持 窗口函數、Grouping Set 等高級語法 UDF、UDAFBitmap數數據據類類型型高高基基數數精精確確去去重重 用戶畫像 漏斗分析DataDataDataDataDataHashTableCount Distinct?Hash?DataDataDataDataData0 1 1 0 1 0 1 1 0?Bitmap?Bitmap數數據據類類型型
18、高基數精確去重用用戶戶畫畫像像 漏斗分析0 1 1 0 1 0 1 1 0?1 0 0 1 0 1 0 0 1?0 1 1 1 0 0 0 0 0?1 0 0 0 0 1 1 0 0?0 0 0 0 0 0 1 0 0?Bitmap數數據據類類型型 高基數精確去重 用戶畫像漏漏斗斗分分析析SELECTintersect_count(user_id,page,login)as login_uv,intersect_count(user_id,page,browse)as browse_uv,intersect_count(user_id,page,login,browse)as retentio
19、nFROM web_logWHERE page in(login,browse);物物化化視視圖圖明明細細+聚聚合合統統一一模模型型數數據據一一致致查查詢詢自自動動路路由由ID日期城市消費12021-06-26北京10022021-06-27北京20032021-06-27上海300日期SUM(消費)2021-06-261002021-06-27500(200+300)城市MAX(消費)北京200上海300日期COUNT_DISTINCT(ID)2021-06-2612021-06-272數數據據更更新新基基于于主主鍵鍵的的更更新新部部分分列列更更新新 Update語語句句支支持持同同步步業業
20、務務數數據據庫庫變變更更:Marked Delete+Sequence Column4開源開放 場景獲取 Bug修復 用戶反饋 互助互利用戶使用需求反饋功能迭代Doris 的進行時和未來式03Doris進進行行時時性性能能!還還是是性性能能!向量化引擎 Cache 親和度、虛函數調用、分支預測、SIMD指令集 內存管理 內存對齊、內存控制、線程間競爭、HugePageDoris進進行行時時更更低低的的成成本本 深存儲和冷熱數據分級2021-062021-052021-042021-032021-02Object StorageBEBEBECache LayerPartition?Doris進進行行時時更更好好的的隔隔離離 資源劃分 一個集群,兩個場景TableBETagABETagABETagBReplica1Replica2Replica3OfflineWorkloadOnlineWorkloadDoris未未來來式式湖湖倉倉一一體體和和云云原原生生 Iceberg、Flink、Pulsar 存算分離:更好的彈性