《5-洪建辉-AntDB融合型数据库:实时流数据处理引擎揭秘.pdf》由会员分享,可在线阅读,更多相关《5-洪建辉-AntDB融合型数据库:实时流数据处理引擎揭秘.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、AntDB融合型数据库:实时流数据处理引擎揭秘洪建辉亚信安慧&AntDB-T 产品线负责人1 AntDB 流式数据库简介About AntDB streaming database 2 基于PG引擎的流处理进程模型AntDB stream processing process model 3 支持流表关联操作的执行计划生成Execution plan of flow table association operation4 流式窗口统计执行机制Streaming window statistics execution mechanismCONTENT01 AntDB流式数据库简介AntDB融合
2、数据库发展历程AntDB数据库,助力5G商用基础全域 全自主建设高可用、高性能第一代分布式AntDB 5.x原生代分布式架构(高度兼容Oracle特性)AntDB 3.x拥抱PostgreSQL生态拥抱MySQL生态AntDB 4.x自研内存数据库AntDB 7.X“超融合”架构流式实时数仓AntDB 6.x多模原生分布式数据库第二代第一代20222021420122008首先应用于运营商核心计费系统核心业务全线覆盖,包括CRM/计费等“全国首个”核心账务系统上线交通行业省级数据中心项目落地移动/联通/电信的多个省份应用落地助力广电全面进军5G,稳健放号满足海量数据分析秒
3、级业务响应的需求连续两年入选Gartner中国数据库管理系统市场指南报告入选Forrester中国数据管理生态系统导航报告荣获信通院2022大数据【星河】案例标杆优秀双料大奖电信行业数据库产品能力测评通过中国信通院数据应用创新实验室电信行业工作组“副组长单位”最早一批投入国产数据库研发的企业工信部技术创新单项奖金融电子化金融业突出贡献奖通过“可信数据库”性能专项评测AntDB 8.X“超融合”数据库多模态 多引擎 向量引擎2023AntDB融合数据库特性久多快稳应用时间久500+项目的选择ns级响应 us级响应15年产品稳定可靠10亿用户服务人数多执行性能快1000+运行节点数PB级数据规模A
4、ntDB数据库特点5AntDB 数据库超融合能力为用户建立连接,融合6大数据应用需求能力AntDB-T 交易型能力AntDB-TS 时序型能力AntDB-V 向量引擎能力AntDB-S 流处理能力AntDB-A 分析能力AntDB-M 内存计算能力可作为整体框架提供全部能力,也可以拆分为独立模块RDBMSKafkaBatchApache StormSpark StreamingFlinkEDWLakehouseHadoopAppSQL报表挖掘AI数据大屏实时告警数据湖业务场景传统流式处理业务场景RDBMSStreaming DataAntDB流式实时数仓ProcessingSQLAntDB 流
5、处理颠覆50年未变的数据库内核AntDB 流式实时数仓超融合DBDBAPPAPPPUSHPULLAPPDATA SHARINGAntDB-S一体流式处理引擎全流程SQL处理实时物化视图一站式性能提升易用性高AntDB 流式实时数仓是如何工作的?在AntDB数据库运行,提升3倍针对核心系统性能需求数据流转更实时处理引擎更简易处理模型更对应AntDB 流数据库特性优势(一)技术堆栈简化实时效率高传统业务逻辑设计AntDB业务设计流程分流处理消息汇总100%SQL定义Java/Scala实时推送自动触发AntDB 流数据库特性优势(二)流数据库核心功能和逻辑模块监控运维业务场景数据大屏实时告警实时报
6、表实时分析ad-hoc查询接口驱动层ODBCC APIJDBC数据字典元数据全局统计信息函数内置函数自定义函数优化器执行计划代价计算SQL解析流处理语法PG语法SQL语句DDLDMLDCLDQL执行引擎PUSH模式查询流式窗口分析存储引擎流对象外部数据源扩展插件实时性能监控自动优化分析自动化运维空间趋势预测实时拓扑结构多维度关联分析自定义监控告警SQL处理流式关联查询异步屏障快照流处理并发模型流对象约束流对象索引KafkaMySQLPostgreSQLOracleHDFSHBaseES接入服务文件.外部数据源流数据库功能架构拆解流式数据库是把流处理引擎的能力合并到数据库内核,与数据库SQL引擎
7、、存储引擎融合在一起,完全以数据库的习惯使用流处理引擎,并且可以和数据库的功能混合使用。接口驱动层面为了方便数据库用户快速切入流数据库,我们针对jdbc、odbc、libpq等接口驱动增加了实时数据推送功能并且完全兼容现有的接口。用户可以像使用传统数据库一样调用jdbc、odbc、libpq接口执行SQL语句使用流数据库。SQL查询引擎层面增加了流处理特有的语法,对优化器以及元数据部分都针对流式处理做了相应修改。执行引擎层面增加了PUSH模式大大的提高了流处理的实时性;流式窗口分析算子支持滚动窗口、滑动窗口、会话窗口;流式关联查询支持双流join以及流表join;异步屏障快照保证了流处理数据的
8、精确唯一性;为流处理特殊设计的并发模型保证了流处理的性能。存储引擎层面增加了流对象存储用于实时存储流数据;为保证流数据的完整性、一致性和正确性在流对象存储上增加了流约束;为了提高双流join的性能增加了流索引,增加外部数据源扩展插件用于读写多种外部数据源,以支持现有流式处理系统的生态,从而无缝替代现有的流式处理系统Flink等。02 基于PG引擎的流处理进程模型流式数据处理示例1、创建流对象3、推送数据2、插入数据benchmark=#CREATE STREAM instructor1(intime char not null default hlcnextval()ext,salary fl
9、oat);CREATE STREAMbenchmark=#CREATE STREAM super_instructor as SELECT*FROM instructor WHEREsalary=80000 EMIT CHANGES;benchmark=#insert into instructor values(1001,john,dept1,57000);INSERT 0 1benchmark=#insert into instructor values(1001,tom,dept1,17000);INSERT 0 1benchmark=#insert into instructor va
10、lues(1003,jack,IT,27000);INSERT 0 1benchmark=#select count(id),sum(salary),dept_name from instructor group by dept_name emit changescount|sum|dept_name-+-+-2|34000|IT1|87000|IT12|74000|dept1流处理进程模型Smaster 负责流处理子进程的启停Scomm 负责数据库结点内以及结点之间的通信调度Query进程处理push query查询,执行seqscan返回结果给backendDaemon执行backend对
11、流的直接insert/update/delete等操作(设计目标是实现daemon进程池,当前仅支持绑定某个stream)Sink处理级联时上游下发的数据写入或更新操作流进程交互流程场景描述:1.创建Stream向scomm发送请求2.发起Push query3.写入数据*Query负责接收backend的查询请求返回数据*Daemon负责接收来自backend的数据写入*Sink负责实现级联03 支持流表关联操作的执行计划生成流表JOIN连接流表join指的是一个流和一张或多张表join,流表join的结果也是流。SELECT *|expression AS output_name ,.FR
12、OM stream_name|table_name AS alias JOIN stream_name|table_name AS alias ON join_condition|USING(join_column,.)WHERE condition EMIT CHANGES 由于流是push模式获取增量数据,表是pull模式获取历史数据,执行器执行过程是先获取执行计划左子树再获取右子树,要实现流表join的效果是从流中获取一条tuple就在表中查找符合条件的tuple返回连接结果给上游节点实时推送给客户端,所以需要优化器生成计划树是保证流在执行计划树的最左叶子结点并且流表join的节点类型是
13、NestLoop。流表join执行计划mydb=#explain select*from sa join ta on sa.id=ta.id join tb on sa.id=tb.id emit changes;QUERY PLAN -Nested Loop (cost=0.00.128.63 rows=6 width=52)Join Filter:(sa.id=tb.id)-Nested Loop (cost=0.00.90.06 rows=1 width=16)Join Filter:(sa.id=ta.id)-Seq Scan on sa(cost=0.00.1.01 rows=1 w
14、idth=8)-Seq Scan on ta (cost=0.00.89.02 rows=2 width=8)-Seq Scan on tb (cost=0.00.22.70 rows=1270 width=36)(7 rows)改造优化器,在构造两个base对象所有可能的连接路径时,遇到流和表,保证流对象在左边,并且创建NestLoopJoin路径。物理优化阶段构造两个base对象之间连接关系的代码结构。04 流式窗口统计执行机制流数据窗口介绍窗口操作是流式系统进行数据流处理的核心,通过窗口操作,可以将一个无限的数据流拆分成很多个有限大小的“桶”,然后在这些桶上执行计算。流式数据库提供了四种
15、类型的窗口定义:滚动窗口、滑动窗口、会话窗口和全局窗口滚动窗口(Tumbling Window)滑动窗口(Hopping Window)会话窗口(Session Window)全局窗口全局窗口(Global Window)只有一个窗口且窗口无限大,也就是无窗口定义,因为没有窗口结束时间所以不能等窗口结束后输出统计结果,一有数据立即计算输出结果。流式窗口处理介绍SELECT expression AS output_name ,.,WindowBegin()AS output_name,WindowEnd()AS output_name FROM stream_name WHERE condit
16、ion GROUP BY grouping_element TUMBLE(event_time_field,)|HOP(event_time_field,)WATERMARK|DELAY ALLOWEDLATENESS EMIT CHANGES|EMIT CHANGES are interval quantity unit流式窗口统计语法:流式窗口统计架构图:语 法 解 析 过 程 把 emitchanges 带 给 执 行 计 划PlannedStmt,把窗口类型、窗口长度、滑动步长、水位线、allowedLateness标志带给执行计划的Agg算子。流式执行器交互过程数据库的执行器针对JO
17、IN算子是先获取左子节点的计算结果然后获取右子节点的计算结果进行关联,不断迭代如果遇到流,则获取对应的消息队列记录和右子树获取的表记录进行关联,如果消息队列为空则等待。执行器优化过程流式执行伪代码:Transvalue=initcondforeach input_tuple dotransvalue=transfunc(transvalue,input_value)result=finalfunc(transvalue)allowedLateness用于指定迟到数据的时间,不指定默认表示24小时,迟到的数据根据时间发生时间计算到对应的窗口中。Projection操作通过表达式计算实现,表达式在
18、执行WindowBegin和WindowEnd函数时返回每一窗口的开始时间和结束时间。如果当前处理的时间超过窗口结束时间加水位线输出处理计算结果,由于emit changes是流式计算,结果用推送方式推给客户端,之后继续运行执行计划的下一轮循环。执行阶段,ExecAgg函数根据窗口类型、窗口长度、滑动步长进行分组统计,每来一条元组根据时间分配到对应的窗口组内进行计算。由于执行器是火山模型,所以必须把统计函数做成增量计算保证性能最优,首先初始化聚集计算的初始值,将其记录在中间结果中。然后,针对每一条输入元组使用迭代聚集函数进行迭代计算得到最新的中间结果。最后,如果有必要的话,使用结束函数进行处理。提供高标准版本SQL、完整分布式和高可用组件,在SQL解析、执行等进行优化以提高性能,在稳定性、兼容性方面基本相同;下载地址:http:/ n t D B 数 据 库THANK YOU联系信息WWW.ANTDB.NET微信/公众号二维码