您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[DataFunSummit2023:OLAP引擎架构峰会]:数据湖超车道:StarRocks 如何借助物化视图加速数据分析 - 发现报告

数据湖超车道:StarRocks 如何借助物化视图加速数据分析

AI智能总结
查看更多
数据湖超车道:StarRocks 如何借助物化视图加速数据分析

王欢明- StarRocks -⼯程师 DataFunSummit#2023 ⽬录CONTENT 03MV for LakeHouse 01StarRocks数据湖分析 04总结展望 02StarRocks物化视图 01 StarRocks数据湖分析 DataFunSummit#2023 StarRocks LakeHouse Data lake Data warehouse LakeHouse 开放⽣态(Open)灵活统⼀(Single source of truth)可扩展性(Scalability)⾼性价⽐(Cost efficiency) 数据质量(Data quality)查询性能(Performance)实时分析(Realtime)数据治理(Governance) 云原⽣弹性扩展湖仓融合⼀体化 StarRocks LakeHouse - Catalog ⽀持Hive/Iceberg/Hudi/DeltaLake,直接分析湖上数据跨数据源(Catalog)联邦分析内外表数据访问统⼀管理 CREATEEXTERNAL CATALOG<catalog_name>PROPERTIES("type"=“iceberg”,MetastoreParams,StorageCredentialParams,MetadataUpdateParams) SQL Dialect ⽀持Trino SQL的关键字、语法、函数转义等Trino SQL转换为StarRocks AST,并⽣成执⾏计划set sql_dialect = “trino”启⽤ StarRocks LakeHouse -极速查询性能 极速数据湖分析挑战 •不同⽂件格式、不同存储系统IO特征不同•数据组织,⽂件⼩、Row group设置不合理•IO延迟⾼,⽆法利⽤Page cache加速 StarRocks LakeHouse -极速查询性能 极速数据湖分析挑战 •不同⽂件格式、不同存储系统IO特征不同•数据组织,⽂件⼩、Row group设置不合理•IO延迟⾼,⽆法利⽤Page cache加速 关键技术 •Local Block Cache:Disk + Memory•IO合并,减少IO次数;Column读取合并-> Rowgroup合并->整个⼩⽂件合并读取•延迟物化,根据带查询条件的部分列过滤结果,读取其他需要访问的列,减少IO总量 Iceberg、TPC-H测试集、4x`16c128g`计算节点 StarRocks直接查询数据湖⽐Trino快3~5倍 StarRocks LakeHouse -统⼀开放 Unified catalogCBOVector engineQuery cache Realtime updatePartition/Bucketing/SortColocateStatistics IndexBitmap/HLL Type 统⼀开放的Lakehouse架构,分层解耦设计StarRocks内表相⽐数据湖提供更好的数据访问优化、提供实时数据更新的能⼒ 02 StarRocks物化视图 DataFunSummit#2023 StarRocks Materialized View 功能特性 CREATE MATERIALIZED VIEW mv1 Materialized:预计算Partition:按时间分区,缩⼩刷新粒度Refresh:定时刷新/⼿动刷新/⾃动刷新Resource Group:弹性调度,隔离⼯作负载Query: Aggregation/Join/UnionRewrite:优化器⾃动查询改写 PARTITION BY dtREFRESH EVERY (INTERVAL 1 HOUR)PROPERTIES( “resource_group” = “rg1”)AS SELECT c_city, count(*)FROM lineorder t1JOIN customer t2ON t1.lo_custkey = t2.c_custkeyGROUP BY c_city 应⽤场景 实时增量聚合:sum/distinct/hll/bitmap数仓分层建模:Declarative Modeling透明查询加速数据湖加速 MV -数仓建模 应⽤场景 ODS -> DWD -> DWS -> ADS价值:⾃动刷新,优化ETL Pipeline 关键技术 多数据源⽀持分区关系维护刷新任务调度资源隔离 MV -数仓建模 •分区关联:⽀持内表、外表(Hive)⾃动刷新 •事实表刷新:基表分区更新触发对应MV分区更新 •维度表刷新:维度表刷新触发整个MV刷新 MV -弹性资源隔离 难点 MV刷新,如何与查询负载隔离不同时效性的MV,如何统⼀调度 解决⽅案 隔离技术:资源组软性隔离;Warehouse硬性隔离资源组default query:默认查询资源组,⾼优先级调度default mv:默认MV资源组,低优先级调度CPU按时间⽚调度,Memory Tracker + Disk Spill,IO线程池隔离 MV -透明查询加速 应⽤场景 痛点:BI报表不易修改SQL,不易调优⽅案:声明物化视图,优化器⾃动改写 关键技术 SPJG改写聚合上卷/表达式改写Join改写 MV -透明查询加速 改写示例1:聚合上卷改写 示例1:SELECT lo_orderdate, count(*)FROM lineorder_flatGROUP BY lo_orderdate CREATE MATERIALIZED VIEW mv1AS 示例2:SELECT c_city, count(*)FROM lineorder_flatGROUP BY c_city SELECT lo_orderdate, c_city, count(*)FROM lineorder_flatGROUP BY lo_orderdate, c_city 示例3:SELECT c_city, count(distinct c_region)FROM lineorder_flatGROUP BY c_city MV -透明查询加速 改写示例2:宽表Join改写 CREATE MATERIALIZED VIEW mv1AS 示例1:SELECT xxxxFROM lineorder t1LEFT JOIN customer t2ON t1.lo_custkey = t2.c_custkeyGROUP BY c_city SELECT lo_orderdate, c_city, count(*)FROM lineorder t1LEFT JOIN customer t2ON t1.lo_custkey = t2.c_custkeyLEFT JOIN supplier t3ON t1.lo_suppkey = t3.s_suppkey MV案例-实时精准去重 挑战 实时看板,精确count distinct⼏⼗个看板,维护⼤量Flink Job100并发查询、每天两亿新增数据 ⽅案 DWD基于bitmap增量聚合MVADS基于MV做分钟级刷新,⾯向报表透明加速 效果 替换Flink + Druid,⼤幅降低资源成本、维护成本1分钟数据新鲜度,模糊去重=>精准去重Latency 3秒=> 30毫秒,100并发查询 MV for LakeHouse DataFunSummit#2023 MV for LakeHouse 物化视图构建 ⽀持复杂查询嵌套物化视图外表构建物化视图 物化视图刷新 物化视图构建分区级别细粒度刷新控制分区关联关系⾃动推导外表⾃动刷新 查询⾃动改写 聚合改写Join改写外表查询改写 MV for LakeHouse 应⽤案例:分层建模 ODS PK:实时数据 外表:明细历史数据 DWD 外表物化视图:清洗和预聚合 DWS 物化视图构建物化视图:分钟级刷新,宽表加⼯ 逻辑视图:实时宽表 ADS 逻辑视图:近实时业务报表 业务价值:省去ETL任务;统⼀开放存储 MV for LakeHouse 应⽤案例:实时数据湖⽅案 物化视图构建Lake实时聚合Iceberg存储明细数据StarRocks实时增量聚合Lake实时更新StarRocks PK表做实时更新按TTL降冷到Iceberg存储MV:宽表Join + Aggregation业务价值:开放数据:SSOT⼊湖,其他引擎可查实时加⼯:分摊资源使⽤,优化资源利⽤率实时查询:StarRocks查询引擎+原⽣存储 04总结展望 EndStarRocks爢⼓㣐劥蠒 GitHub:https://github.com/StarRocks/starrocks 论坛:https://forum.mirrorship.cn/ 感谢观看