基于SQL引擎的全链路压测数据分流系统及方法

文档序号:31791071发布日期:2022-10-14 15:15阅读:来源:国知局

技术特征:
1.基于sql引擎的全链路压测数据分流系统,其特征在于:包括解析器、配置管理器、路由器和执行器;解析器用于对接入流量的sql语句进行解析,将sql语句转化为抽象语法树;配置管理器用于设置配置文件,还用于解析配置文件得到配置信息,并将配置信息在内存中缓存起来供路由器使用;路由器用于根据配置信息和解析后的抽象语法树,得到路由结果,所述路由结果的内容包括将sql语句路由到底层对应的数据库中;执行器用于获取路由器的路由结果,并通过数据库连接技术jdbc调用对应的数据库的接口,将sql语句发送至对应的数据库中,供对应的数据库执行,所述对应的数据库为生产库或影子库;执行器还用于将执行的结果进行封装,并以标准jdbc数据库协议的方式返回给请求方。2.如权利要求1所述的基于sql引擎的全链路压测数据分流系统,其特征在于:所述配置文件的内容包括生产库的属性、影子库的属性、影子表的属性及使用的影子算法;所述影子算法为基于列的影子路由算法或基于hint的影子路由算法。3.如权利要求2所述的基于sql引擎的全链路压测数据分流系统,其特征在于:当影子算法为基于列的影子路由算法时,所述配置文件的内容还包括路由规则,所述路由规则用于进行影子库匹配;路由器对sql语句路由时,针对基于列的影子路由算法,路由器首先判断解析语法树ast中涉及的表集合t
ast
与配置文件中的影子表的集合t
config
是否有交集,如果没有交集,则直接将此sql语句路由到生产库中,否则,遍历t
ast
∩t
config
中的每一张表t,若sql语句中t的影子字段值符合任一路由规则,则将此sql语句路由到影子库中,并提前结束迭代过程。4.如权利要求3所述的基于sql引擎的全链路压测数据分流系统,其特征在于:当影子算法为基于hint的影子路由算法时,所述配置文件的内容还包括hint影子标记f
config
;路由器对sql语句路由时,针对基于hint的影子路由算法,路由器逐一验证f
ast
中每一个键值对标记是否与f
config
相同,若相同则路由到影子库中;若所有标记都与f
config
不相同,则路由到生产库中;其中,f
ast
为抽象语法树ast的所有键值对标记集合。5.如权利要求4所述的基于sql引擎的全链路压测数据分流系统,其特征在于:解析器还用于当影子算法为基于hint的影子算法时,对配置文件中的hint影子标记f
config
进行解析,并生成一个单独的注解节点挂载到抽象语法树上。6.如权利要求1所述的基于sql引擎的全链路压测数据分流系统,其特征在于:解析器内预置有多种不同数据库方言;所述多种不同数据库方言包括mysql、postgresql、oracle、sql server、mariadb和opengauss的方言。7.基于sql引擎的全链路压测数据分流方法,其特征在于,使用权利要求1-6任一项所述的基于sql引擎的全链路压测数据分流系统,包括以下步骤:s1、根据需求设置配置文件并存储在磁盘中;s2、通过解析器将接入流量的sql语句进行解析,将sql语句转化为抽象语法树;s3、通过配置管理器解析配置文件得到配置信息,并将配置信息在内存中缓存起来供路由器使用;s4、根据配置信息和解析后的抽象语法树,通过路由器将sql语句路由到底层对应的数
据库中;s5、通过执行器接收路由器的路由结果,并通过数据库连接技术jdbc调用对应数据库的接口,将sql语句发送至生产库或者影子库中,供底层数据库执行;s6、底层数据库执行结束后,通过执行器对执行结果进行封装,并以标准jdbc数据库协议的方式返回给请求方。8.如权利要求7所述的基于sql引擎的全链路压测数据分流方法,其特征在于:s1中,所述配置文件的内容包括生产库的属性、影子库的属性、影子表的属性及使用的影子算法;其中,所述影子算法为基于列的影子路由算法或基于hint的影子路由算法。9.如权利要求8所述的基于sql引擎的全链路压测数据分流方法,其特征在于:s4中,通过路由器将sql语句路由到底层对应的数据库中时,若配置信息中的影子算法为基于列的影子路由算法,则路由器首先判断解析语法树ast中涉及的表集合t
ast
与配置文件中的影子表的集合t
config
是否有交集,如果没有交集,则直接将此sql语句路由到生产库中,否则,遍历t
ast
∩t
config
中的每一张表t,若sql语句中t的影子字段值符合任一路由规则,则将此sql语句路由到影子库中,并提前结束迭代过程。10.如权利要求9所述的基于sql引擎的全链路压测数据分流方法,其特征在于:s4中,通过路由器将sql语句路由到底层对应的数据库中时,若配置信息中的影子算法为基于hint的影子路由算法,则路由器逐一验证f
ast
中每一个键值对标记是否与f
config
相同,若相同则路由到影子库中;若所有标记都与f
config
不相同,则路由到生产库中;其中,f
ast
为抽象语法树ast的所有键值对标记集合;f
config
为配置文件中的hint影子标记。

技术总结
本发明涉及全链路压测技术领域,具体涉及基于SQL引擎的全链路压测数据分流系统及方法,该系统包括解析器、配置管理器、路由器和执行器;解析器用于对接入流量的SQL语句进行解析,将SQL语句转化为抽象语法树;配置管理器用于设置配置文件,还用于解析配置文件得到配置信息,并将配置信息在内存中缓存起来供路由器使用;路由器用于根据配置信息和解析后的抽象语法树,得到路由结果,所述路由结果的内容包括将SQL语句路由到底层对应的数据库中。本申请在扩大适用范围的同时,还有效的提升了全链路压测的性能和效率。路压测的性能和效率。路压测的性能和效率。


技术研发人员:李瑞远 姜俊 刘钧文 王棚 陈超 张东霞 李文慧
受保护的技术使用者:重庆大学
技术研发日:2022.06.22
技术公布日:2022/10/13
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1