一种绑定式的SQL血缘解析数据流可视化交互方法
文献发布时间:2023-06-19 09:54:18
技术领域
本发明涉及互联网大数据技术在血缘解析技术领域中的运用,具体为一种绑定式的SQL血缘解析数据流可视化交互方法。
背景技术
在这个大数据时代下,数据是我们需要保护的重点对象,SQL是直接操作数据的一个最为快捷的语言,通常流行基于SQL语言模拟出任务的概念,而当业务复杂时,离线集群就会运行大量的任务去支持复杂的业务和数据的分析,随之,各个任务会形成复杂的依赖关系和数据流,
因此SQL解析技术印入眼帘,SQL解析是一项非常复杂的技术,一般数据库厂商会一定程度上对此支持,也有一些公司专门提供SQL解析的API。除此之外,一个复杂的SQL解析结果的交互设计也是目前的痛点,仅通过SQL脚本或者图形化一个维度不能够直观清晰地向用户或者开发者呈现出具体依赖关系,因此为了能够直观的展示SQL依赖关系,SQL解析结果的交互设计尤为重要。
一般情况下,SQL解析的结果会通过图形化的界面去展示,相比SQL给用户的体验会更直观,而当任务数量剧增,依赖关系和数据流尤为复杂时,开发者仅仅依靠图形化界面这一个维度也不能对其以来关系一目了然。所以,如何设计一种直观、简洁可应对复杂SQL解析结果的交互便成为了要解决的问题。
发明内容
本发明要解决的技术问题克服现有的缺陷,提供一种绑定式的SQL血缘解析数据流可视化交互方法,可提升上述问题的交互体验。
为了解决上述技术问题,本发明提供了如下的技术方案:一种绑定式的SQL血缘解析数据流可视化交互方法,包括如下步骤:
步骤1、使用架构模式,在Browser端确定开发者在编辑器中编写的SQL脚本;
步骤2、通过网络传输将SQL脚本发送至Server端,Server端经过SQL解析;
步骤3、经过转换计算分析和AST处理后得到图形化界面所需要的JSON代码片段返回至Browser端;
步骤4、Browser端根据JSON数据绘制可视化图形;
步骤5、之后Browser端等待接受用户的操作指令;
步骤6、接受到操作指令后,Browser端会对缓存指令中的SQL脚本以及图形化JSON数据,转化出当前指令中的SQL的AST与图形化JSON比较;
步骤7、之后使用JavaScript法将这两个维度数据绑定分析,得出其所有相关的指令数据及所有依赖关系,web界面高亮对比呈现指令数据流以及依赖关系;
步骤8、若指令变更,则指令数据以及依赖关系跟随变更。
作为优选,所述架构模式可以为BS模式。
作为优选,所述SQL支持MYSQL、HIVE、IMPALA、ORACLE和POSTGRESQL。
作为优选,经过转换计算分析和AST处理后得到图形化界面所需要的JSON代码片段具体包括如下步骤:步骤3.1、当服务端接收到web端SQL指令发出数据,服务端进入SQL解析步骤;
步骤3.2、服务端判断SQL类型,不同SQL进入使用不同解析方式;
步骤3.3、分析web端SQL的词法结构及逻辑片段,然后对SQL的基本单元进行不同拆分,通过语法分析器将得到的SQL基本单元进行拼装,形成具有数据结构的数据体。
步骤3.4、将SQL基本单元分析得到的Token流,按照组装逻辑语法规则深度递归,至上而下一次解析生成AST结构;
步骤3.5、后序遍历AST树结构,解析每个AST节点,生成JSON数据;
步骤3.6、通过调用解析器直接生成SQL对应的AST结构。
作为优选,所述步骤3.3拼装的方式可以是遍历、递归。
作为优选,所述步骤3.6中的解析器可以为Parser、Hive、Presto、vertica、teradata或pg解析器。
作为优选,所述步骤6中Browser端会对缓存指令中的SQL脚本以及图形化JSON数据具体需要包括如下步骤:步骤6.1、首先,web端会根据SQL解析出AST树结构,解析过程与上步骤一致。
步骤6.2、web端根据步骤3返回的JSON数据做图形绘制。
作为优选,所述步骤7中所述的使用JavaScript法将这两个维度数据绑定分析具体包括如下步骤:步骤7.1、将这个维度数据缓存;
步骤7.2、在步骤6解析得到AST结构,通过结构中name字段与SQL AST映射;
步骤7.3、依次遍历AST所有节点,找出步骤7.2中的所有映射,后续绑定式将给予此映射实现。
作为优选,所述步骤7中web界面高亮对比呈现指令数据流以及依赖关系具体包括如下步骤:步骤7.4、在步骤7执行完成之后,服务端AST结构与Web AST结构绑定成功;
步骤7.5、web端等待接收用户指令,假设用户发出选中指令;
步骤7.6、程序将会通过JavaScript算法获取当前指令数据;
步骤7.7、指令数据与步骤7.4中绑定数据中相互匹配,得到当前指令依赖关系结构;
步骤7.8、通过code将SQL区域与指令数据相关SQL字段高亮,将图形化界面区域与指令数据依赖以及图形高亮,最终达到两个维度数据绑定式交互。
本发明有益效果:本发明的绑定式的SQL血缘解析数据流可视化交互方法绑定式交互即将SQL、图形化两个维度关联形成视图。其中视图可分为SQL脚本区域,SQL血缘解析图区域,通过AST将SQL脚本与血缘关系图进行关联与绑定,基于此技术在SQL区域或者血缘图web界面上执行操作指令绑定式突出呈现出与此相关的SQL脚本以及依赖关系。
附图说明
图1为本发明实施例提供的本发明所依赖的SQL解析方法的流程图;
图2为本发明实施例提供的可行性方案流程图;
图3为本发明实施例提供的交互设计效果展示图。
具体实施方式
以下对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
在具体实施时,假设我们使用BS模式,Browser端需要确定开发者在编辑器编写的SQL脚本,通过网络传输将SQL脚本发送至Server端,Server端经过SQL解析(一系列转换计算分析AST等处理)得到图形化界面所需要的JSON代码片段返回至Browser端。Browser端根据JSON数据绘制可视化图形。这样基本SQL解析结果以及图形绘制的过程就基本完成。之后Browser端等待接受用户的操作指令。在接受到可靠指令之后,Browser端会缓存指令中的SQL脚本以及图形化JSON数据,转化出当前指令中的SQL的AST与图形化JSON比较,之后将这两个维度数据绑定分析出其所有相关的指令数据以及所有依赖关系,高亮对比显示。若指令变更,则指令数据以及依赖关系跟随变更。
其中,架构模式不限于BS模式。
其中,CodeIDE不限种类。
其中,SQL支持MYSQL、HIVE、IMPALA、ORACLE、POSTGRESQL等流行的数据库SQL。
其中,网络传输方式支持RESTFULAPI、websocket等方式。
其中,Browser端需要缓存开发者SQL脚本以及Server端返回的JSON。对比AST结构给出分析结果。
其中,操作指令可以是目前常规的系统指令,比如点击、hover等等。
其中,高亮对比包含但并不限于依赖关系链路图、SQL脚本等。
为了使本发明的上述目的、特征以及实施更加细节和透明,下面将会结合附图对本发明的实施方式做进一步的详细说明。
结合图1和图2,将会对以下实现关键点做详细阐述。
S3,服务端根据SQL脚本解析出AST,并生成具有依赖关系的JSON数据。本步骤细分以下实施步骤:
(1)当服务端接收到web端SQL指令发出数据,服务端进入SQL解析步骤。
(2)服务端判断SQL类型,不同SQL进入使用不同解析方式,但大体解析实现基本一致。
(3)分析web端SQL的词法结构及逻辑片段,然后对SQL的基本单元(以Hive基本单元为例,其大致分为TokWord、TokString、TokSymbol、TokVariable)进行不同拆分,通过语法分析器(词法解析及语法解析)将得到的SQL基本单元进行拼装,其中拼装的方式可以是遍历、递归等,形成有一定数据结构的数据体。
其中Token结构如下:
data Token=TokWord!Bool!Text
|TokString!ByteString
|TokNumber!Text
|TokSymbol!Text
|TokVariable!Text VariableName
|TokError!String
deriving(Show,Eq)
其中Text是命名空间,Token是param名称,也可以是另外一个TokVariable。
(4)将SQL基本单元分析得到的Token流,按照组装逻辑语法规则深度递归,至上而下一次解析生成AST结构。
(5)后序遍历AST树结构,解析每个AST节点,生成JSON数据。
(6)当然市面上存在一些优秀的Parser解析器,通过调用Parser(Hive、Presto、vertica、teradata、pg)解析器直接生成SQL对应的AST结构。Parser解析器对应图2中的analyzingtool。
S5,客户端解析SQL脚本AST以及根据JSON绘制图形化界面。本步骤细分以下实施步骤:
首先需要区分上述步骤"AST"词语,本步骤AST为web解析出的AST结构,解析实现与上步骤一致,但解析出的结构有区分,为更好地了解,这里以示例SQL对AST解析结果做基本介绍。例子:SELECTfooFROMmytable
//SQL解析出的AST结构:
结构基本由type、variant、name字段拼装而成,其中type表示当前节点类型;variant为字段表示的含义;name为当前节点名称,也是后续本发明的重要数据之一。
(1)本步骤,首先,web端会根据SQL解析出AST树结构,解析过程与上步骤一致,AST具体示例结构如上,以供下步骤绑定式交互提供基础条件。
(2)web端根据S4步骤返回的JSON数据做图形绘制;图形绘制的过程不在本发明点之内,这里不做详细介绍。当然,开发者可以自行选择稳定流行的图形库绘制。
S7,使用JavaScript算法将SQLAST与JSON两个维度数据绑定。本步骤细分以下实施步骤:
(1)将这个维度数据缓存,以防网络问题、用户刷新导致数据丢失。
(2)数据绑定的方式有许多,这里我们举一例说明。假设我们继续使用上述的SQL语句,在S5步骤我们解析得到AST结构,通过结构中name字段与SQLAST映射。
(3)依次遍历AST所有节点,找出(2)中的所有映射。后续绑定式将给予此映射实现。
S8,web界面高亮对比呈现指令数据流以及依赖关系。本步骤细分以下实施步骤:
步骤为本发明的最后实现步骤,也是本发明的最重要的发明点。
(1)在S7步骤执行完成之后,服务端AST结构已经与WebAST结构绑定成功。这意味着绑定式交互的基石已经打造完成。
(2)S6web端等待接收用户指令,假设用户发出选中指令。
(3)程序将会通过JavaScript算法获取当前指令数据。
(4)指令数据与(1)中绑定数据中相互匹配,得到当前指令依赖关系结构。
(5)通过code将SQL区域与指令数据相关SQL字段高亮,将图形化界面区域与指令数据依赖以及图形高亮,最终达到两个维度数据绑定式交互设计效果。
图1为本发明绑定式交互设计SQL解析流程图
参靠图1,本发明提供的绑定式交互设计SQL解析流程包括:
S1,确定待解析的SQL脚本,其中,SQL支持MYSQL、HIVE、IMPALA、ORACLE、POSTGRESQL等流行的数据库SQL。
S2,通过网络传输将SQL脚本发送服务端,其中,网络传输方式支持RESTFULAPI、websocket等方式。
S3,服务端根据SQL脚本解析出AST,并生成具有依赖关系的JSON数据。
S4,JSON数据传输至客户端。
S5,客户端解析SQL脚本AST以及根据JSON绘制图形化界面。
S6,根据执行操作指令触发Web界面执行预设操作,其中,操作指令可以是目前常规的系统指令,比如点击、hover等等。
S7,使用JavaScript算法将SQLAST与JSON两个维度数据绑定。具体地,使用JavaScript算法寻找将当前指令数据以及其相关的业务数据,将数据储存用以交互设计。
S8,web界面高亮对比呈现指令数据流以及依赖关系。具体地,根据S7的数据将其以高亮的形式分别在SQL脚本和图形化界面中突出展示。
图2为本发明实施例提供的可行性方案流程图
参靠图2,本发明实施例提供的可行性方案流程包括:客户端确定SQL脚本,将其传输至服务端,服务端将SQL解析成AST,并利用分析工具分析最终生成JSON数据。
其中ASTJSON格式根据不同解析方式会有细微差别。客户端根据web操作指令的数据,利用JavaScript算法将SQL脚本与图形化绑定,寻找其数据流以及依赖关系。最终高亮对比呈现。
图3为本发明实施例提供的交互设计效果示例图,其中instruction为web系统操作指令,Highlight为高亮对比。图形化与SQL链路关系高亮对比效果可依此自定义。
以上为本发明较佳的实施方式,本发明所属领域的技术人员还能够对上述实施方式进行变更和修改,因此,本发明并不局限于上述的具体实施方式,凡是本领域技术人员在本发明的基础上所作的任何显而易见的改进、替换或变型均属于本发明的保护范围。
- 一种绑定式的SQL血缘解析数据流可视化交互方法
- 一种支持多方言SQL血缘解析的语义分析方法