您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[哪吒科技]:SelectDB实时数仓在智慧港口中的应用实践 - 发现报告

SelectDB实时数仓在智慧港口中的应用实践

信息技术2025-01-14邓宇超哪吒科技胡***
AI智能总结
查看更多
SelectDB实时数仓在智慧港口中的应用实践

邓宇超哪吒科技数据平台负责人 邓宇超 哪吒科技-数据平台负责人曾就职于趣头条、观安信息丰富的大数据开发及架构经验 目录 哪吒科技数仓发展历程01 实时数仓技术选型与架构02 实时数仓在智慧港口的实战应用03 收益与展望04 01哪吒科技数仓发展历程 1.1哪吒科技业务介绍-市场能力 1.2哪吒科技业务介绍-产品&服务 1.3哪吒科技数仓发展历程 第二阶段 业务场景:港口运营数据枢纽数仓能力:单业务单场景数据整合与决策赋能挑战:数据融合性、实时性 业务场景:智慧港口全生命周期与全解决方案(SMART系列)数仓能力:SelectDB统一实时数仓挑战:复杂场景、查询效率 业务场景:数据驱动码头作业数仓能力:混合架构下数据整合与分析赋能挑战:开发效率、维护成本、实时性 1.6哪吒数仓应用场景面临的挑战 02实时数仓技术选型与架构 2.1哪吒实时数仓选型因素 2.2哪吒科技实时数仓架构 2.4SelectDB在实时场景中的应用 实时数仓建模: 1.ODS:通过FlinkCDC实时采集数据源的数据,落地到SelectDB实时数仓,为后续数据分析提供原始数据。2.DWD:基于清洗后的明细数据,做数据归一化处理,方便上游业务。3.DWS:基于聚合模型,对指标预聚合,供业务使用。 业务应用: 通过数据服务平台,提供查询API接口,赋能给上层业务使用。 2.5SelectDB在日志收集分析中的运用-架构及效果 2.6SelectDB案例-日志检索分析-建表示例 CREATETABLEXXX_LOGS(tsDATETIME,pathTEXT,messageTEXT,hostnameVARCHAR(30),ipARRAY<VARCHAR(20)>,INDEXidx_path(path)USINGINVERTED,INDEXidx_host(hostname)USINGINVERTED,INDEXidx_msg(message)USINGINVERTEDPROPERTIES("parser"="unicode"))ENGINE=OLAPDUPLICATEKEY(ts)PARTITIONBYRANGE(ts)()DISTRIBUTEDBYRANDOMBUCKETSAUTOPROPERTIES("compression"="zstd","compaction_policy"="time_series","dynamic_partition.enable"="true","dynamic_partition.create_history_partition"="true","dynamic_partition.time_unit"="DAY","dynamic_partition.start"="-7","dynamic_partition.end"="3","dynamic_partition.prefix"="p"); 2.6SelectDB案例-日志检索分析-load示例 注意点: (1)Doris建表语句 CREATEROUTINELOADdatabase.test_jobONXXX_LOGSCOLUMNS(ts,path,message,hostname,ip)PROPERTIES("desired_concurrent_number"="1","format"="json","strict_mode"="false","jsonpaths"="[\"$.@timestamp\",\"$.log.file.path\",\"$.message\",\"$.host.hostname\",\"$.host.ip\"]")FROMKAFKA("kafka_broker_list"="ip:9092","kafka_topic"="flink_logs","property.group.id"="t1_g","property.kafka_default_offsets"="OFFSET_BEGINNING"); •当使用DATETIME类型的时间字段作为主键Key时,查询最新n条日志的速度会得到显著提升。•使用基于时间字段的RANGE分区,并开启动态Partiiton,以便按天自动管理分区,提升数据查询和管理的灵活性。•在分桶策略上,可以使⽤RANDOM进行随机分桶,分桶数量大致设置为集群磁盘总数的3倍。•对于经常需要查询的字段,建议构建索引以提高查询效率;而对于需要进行全文检索的字段,应指定合适的分词器参数parser,确保检索的准确性和效率。•采用ZSTD压缩,可以获得更好的压缩效果,节省存储空间。•对需要全文检索的字段,将分词器(parser)参数赋值为unicode,如有支持短语查询的需求,将support_phrase参数赋值为true;如不需要,则设置为false,以降低存储空间。(2)导入语句•需要针对filebeat采集的json格式数据,做正确解 析,此处与Doris建表字段类型要一致。 2.7SelectDB案例-日志检索分析-实现效果 实时数仓在智慧港口的实战运用 3.1SelectDB指标计算实践 业务场景(场地内的件散货货物作业动态数据) 智慧码头运营管理需多维度统计场地货物作业。对钢材类,筛选作业量超500吨数据,剖析其大规模作业态势及资源影响;对全场货物,统计进货1天内作业总量,把握流转与繁忙程度,助力计划调整;针对钢材进货1天内作业量大于500吨状况,据此制定专属策略,提升特定货物与时段的管理及资源利用效能,实现高效运营决策。 3.2SelectDB指标计算实践-示例代码(表结构) --场地货动态表 CREATETABLE`TMP_ACTIVITIES`( `g_id`varchar(32)NOTNULLCOMMENT'动态id',`g_w_id`stringNOTNULLCOMMENT'场地货id',`g_gtwg`DECIMAL(13,3)NOTNULLDEFAULT"0"COMMENT'重量',`g_opdate`datetimeNOTNULLCOMMENT'作业日期',`t_id`stringNULLCOMMENT'租户id',...)ENGINE=OLAPUNIQUEKEY(`g_id`)COMMENT'场地货动态'DISTRIBUTEDBYHASH(`g_id`)BUCKETSAUTOPROPERTIES("enable_unique_key_merge_on_write"="true","store_row_column"="true",...); --场地货表 CREATETABLE`TMP_GOODS`(`w_id`varchar(32)NOTNULLCOMMENT'id',`w_gname`stringNOTNULLCOMMENT'货名',`w_in_date`datetimeNULLCOMMENT'进货日期',`t_id`stringNULLCOMMENT'租户id',...)ENGINE=OLAPUNIQUEKEY(`w_id`)COMMENT'场地货'DISTRIBUTEDBYHASH(`w_id`)BUCKETSAUTOPROPERTIES("enable_unique_key_merge_on_write"="true","store_row_column"="true",...); 3.3SelectDB指标计算实践-示例代码(指标计算) --统计场地货货类为钢材且作业量大于500吨的情况 selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwherew_gname='钢材'groupbyw_idhavingsum(g_gtwg)>5; --统计场地货从进货开始1天内的作业量 selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwhereg_opdatebetweenw_in_dateanddate_add(w_in_date,interval1day)groupbyw_id; --统计场地货货类为钢材且从进货开始1天内作业量大于500吨的情况 selectw_id,sum(g_gtwg)fromTMP_ACTIVITIESgoajoinTMP_GOODSwygongoa.g_w_id=wyg.w_idandwyg.t_id=goa.t_idwherew_gname='钢材'andg_opdatebetweenw_in_dateanddate_add(w_in_date,interval1day)groupbyw_idhavingsum(g_gtwg)>5; 3.5SelectDB物化视图实践-示例代码 场景: 码头多用户同时对单表(数据量十亿级)进行维度聚合查询。通过不同维度组合和聚合方式,对比查询性能。 --有同步物化视图:命中了agg条件过滤裁剪后的物化视图 select year(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt),count(orc_id)fromTEST_MVW..xxx_records_rtgroupbyyear(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt); --无同步物化视图: select year(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt),count(orc_id)fromTEST_MVW..xxx_records_rt_tmp1groupbyyear(orc_lstupddt),month(orc_lstupddt),day(orc_lstupddt); 3.6SelectDB物化视图实践-结果分析 查询平均响应时间差异对比: 引入同步物化视图后,单表维度聚合查询性能得到了显著提升: 1.查询响应时间减少:在不同并发场景下,查询平均响应时间平均提升约10倍,查询响应时间显著减少。 3.CPU使用率降低:引入物化视图后,CPU使用率降低约1.53倍。 4.内存使用率变化较小:内存使用率的变化相对较小,平均差异倍数为1.16,说明内存并不是该查询场景下的主要瓶颈。整体来看,引入同步物化视图在单表维度聚合查询中有效地提升了查询效率、吞吐量,并显著减少了CPU的使用率,对于聚合查询场景具有良好的优化效果。 04收益与展望 4.2收益-业务效果 显著的性能提升 智慧港口数据大脑 1.核心报表数据实时性从1-2天延迟骤减至5s内。2.80%即席分析可在2s内返回结果,95%的即席分析可在5s内返回结果。 1.降低平台运维成本2.SelectDB极致的存储压缩比,存储成本降低70%3.降低人员开发成本 提供7*24小时技术支持服务、重点BUG天级快速修复及重大应急保障现场及时响应,有力支撑业务稳定运行,确保业务面对技术问题和突发状况时能持续高效开展。 4.3展望 1.SelectDB存算分离实践:弹性资源配置,降低存储成本 2.SelectDB增强多表物化视图业务运用:提升查询性能 3.集群管理工具运用:提升运维效率 ThanksforWatching!