searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

异构数据源数据加工计算:DSL函数表达式

2023-10-30 01:55:28
27
0

前言

日志服务中异构数据源需要做庞大复杂且重复的数据加工服务,为了多种数据源的加工统计计算的问题;定义统一的DSL函数表达式,减少用户需要学习复杂的异构数据源语法,减少业内多种多样场景的异构数据源接入加工计算的成本;达到简化系统架构,减少学习和系统成本的目标;

一些术语

DSL(domain-specific language,领域特定语言):是专门针对特定应用领域的计算机语言,和可以用在多种领域的通用语言(GPL)恰好相反。一般分为两类,第一中为内部DSL,内嵌到现有的编程语言(java,c,python)上,比如Lucene,PromQL等。另一种为外部DSL,拥有自己一套完整的词法分析,语法分析,编译,代码生成等一整套完整的体系的独立语言,比如JSON,正则,XML,markdown等。

AST(Abstract Syntax Tree,抽象语法树):是源代码语法结构的一种抽象表示。 它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。

Antlr4(ANother Tool for Language Recognition):一个非常强大的词法和语法解析器代码生成器,Antlr4提供了较简单强大的语法文件调试功能,AST树的遍历方法,还有多语言支持。

需求场景

1、在大数据日志场景下,为了适合不同的业务场景会将数据存到不同的异构数据中,有SQL和非SQL,有结构化和非结构化数据,有冷热数据等。而在分析统计场景中需要将这些异构数据源中的数据进行联合计算。因此不得不做冗余,庞大,高成本的数据集成工作,然后再做JOIN联合统计,现提供一种思路做数据集成的情况下能实现异构数据源的加工和计算,大大简化系统降低成本;

2、传统加工计算方法上,用户做异构数据的联合统计分析需要熟悉多种数据源的加工计算交互语言,现需要提供统一的DSL函数表达式,大大减少学习成本和提高交互效率;

3、传统数据加工计算通过数据集成将数据全部同步到一个数据源中,然后在完成数据集成的数据源中做加工计算,现需要提供一种思路将核心的异构源加工计算分发到相应的异构数据源中,然后将每个异构数据源返回的结果在执行引擎中在做一次表达式计算,分而治之,简化计算思路和流程;

技术思路

加工计算流程

一些说明:

第一步,函数表达式文本输入执行引擎;

第二步,执行引擎中的加工摄取函数表达式转换器接收到函数表达式文本后,转换器的XXVisitor通过遍历Antlr4生成的AST语法树将表达式语法转换成不同数据源的加工计算脚本;

第三步,在汇聚计算器中同样使用Antlr4解析计算表达式保存到计算缓存队列中;

第四步,数据源数据摄取适配器将第二步转换后加工摄取脚本通过异构数据源连接池发送到对应的数据源中加工计算;

第五步,各种数据源完成加工计算后返回到汇聚计算的表达式计算器中,渲染第三步中的计算缓存变量和表达式执行计算;

第六步,执行引擎返回计算结果;

 

核心表达式转换器思路

一些说明:

每个异构数据源均有自己的转换器XX_Converter,核心逻辑使用Antlr4将相应的表达式转换成目标数据源的加工计算脚本;

函数表达式文本输入XX_Converter后会通过Antlr4生成的词法和语法生成器生成AST,通过XX_Visitor将AST树转换成对应数据源计算脚本;

执行引擎例子

一些说明:

执行输入表达式,解析转换表达式,分发加工计算,表达式计算返回结果过程;

 

总结

1、统一函数表达式语法,减少多种异构数据源加工计算语言的学习;

2、减少大量异构数据源冗余,高成本,庞大的数据集成模块;

3、将异构数据源之间的复杂计算分成清晰的两层计算;

0条评论
0 / 1000
wanghg11
13文章数
2粉丝数
wanghg11
13 文章 | 2 粉丝
原创

异构数据源数据加工计算:DSL函数表达式

2023-10-30 01:55:28
27
0

前言

日志服务中异构数据源需要做庞大复杂且重复的数据加工服务,为了多种数据源的加工统计计算的问题;定义统一的DSL函数表达式,减少用户需要学习复杂的异构数据源语法,减少业内多种多样场景的异构数据源接入加工计算的成本;达到简化系统架构,减少学习和系统成本的目标;

一些术语

DSL(domain-specific language,领域特定语言):是专门针对特定应用领域的计算机语言,和可以用在多种领域的通用语言(GPL)恰好相反。一般分为两类,第一中为内部DSL,内嵌到现有的编程语言(java,c,python)上,比如Lucene,PromQL等。另一种为外部DSL,拥有自己一套完整的词法分析,语法分析,编译,代码生成等一整套完整的体系的独立语言,比如JSON,正则,XML,markdown等。

AST(Abstract Syntax Tree,抽象语法树):是源代码语法结构的一种抽象表示。 它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。

Antlr4(ANother Tool for Language Recognition):一个非常强大的词法和语法解析器代码生成器,Antlr4提供了较简单强大的语法文件调试功能,AST树的遍历方法,还有多语言支持。

需求场景

1、在大数据日志场景下,为了适合不同的业务场景会将数据存到不同的异构数据中,有SQL和非SQL,有结构化和非结构化数据,有冷热数据等。而在分析统计场景中需要将这些异构数据源中的数据进行联合计算。因此不得不做冗余,庞大,高成本的数据集成工作,然后再做JOIN联合统计,现提供一种思路做数据集成的情况下能实现异构数据源的加工和计算,大大简化系统降低成本;

2、传统加工计算方法上,用户做异构数据的联合统计分析需要熟悉多种数据源的加工计算交互语言,现需要提供统一的DSL函数表达式,大大减少学习成本和提高交互效率;

3、传统数据加工计算通过数据集成将数据全部同步到一个数据源中,然后在完成数据集成的数据源中做加工计算,现需要提供一种思路将核心的异构源加工计算分发到相应的异构数据源中,然后将每个异构数据源返回的结果在执行引擎中在做一次表达式计算,分而治之,简化计算思路和流程;

技术思路

加工计算流程

一些说明:

第一步,函数表达式文本输入执行引擎;

第二步,执行引擎中的加工摄取函数表达式转换器接收到函数表达式文本后,转换器的XXVisitor通过遍历Antlr4生成的AST语法树将表达式语法转换成不同数据源的加工计算脚本;

第三步,在汇聚计算器中同样使用Antlr4解析计算表达式保存到计算缓存队列中;

第四步,数据源数据摄取适配器将第二步转换后加工摄取脚本通过异构数据源连接池发送到对应的数据源中加工计算;

第五步,各种数据源完成加工计算后返回到汇聚计算的表达式计算器中,渲染第三步中的计算缓存变量和表达式执行计算;

第六步,执行引擎返回计算结果;

 

核心表达式转换器思路

一些说明:

每个异构数据源均有自己的转换器XX_Converter,核心逻辑使用Antlr4将相应的表达式转换成目标数据源的加工计算脚本;

函数表达式文本输入XX_Converter后会通过Antlr4生成的词法和语法生成器生成AST,通过XX_Visitor将AST树转换成对应数据源计算脚本;

执行引擎例子

一些说明:

执行输入表达式,解析转换表达式,分发加工计算,表达式计算返回结果过程;

 

总结

1、统一函数表达式语法,减少多种异构数据源加工计算语言的学习;

2、减少大量异构数据源冗余,高成本,庞大的数据集成模块;

3、将异构数据源之间的复杂计算分成清晰的两层计算;

文章来自个人专栏
日志服务
11 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0