基于配置的底层通用查询方法和系统与流程

文档序号:32896298发布日期:2023-01-13 00:28阅读:21来源:国知局
基于配置的底层通用查询方法和系统与流程

1.本发明涉及数据查询技术领域,具体地,涉及一种基于配置的底层通用查询方法和系统。


背景技术:

2.系统开发过程中,通常会涉及到不少自定义的sql(数据库结构化查询语句),每次新增一条sql,都需要去添加操作这条sql的代码,导致大量类似的工作;另外所有sql都放在代码工程中,让sql审查成为困难事项,大量不合规sql在没有得到dba的评审就上线到生产使用,让数据库压力倍增,大量慢sql也在上线后才能发现,倘若系统活跃用户较多,数据库将很快被拖垮。
3.专利文献cn110019350a(申请号:cn201710631092.7)公开了基于配置信息的数据查询方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:基于统一的服务框架接收应用系统的查询请求;查询请求包括:查询参数,以及唯一性地指向应用系统对应的目标数据库的指标标识id;依据指标id获取配置信息;配置信息包括:查询语句模板;依据查询参数和查询语句模板动态生成可执行查询语句;根据可执行查询语句获取查询结果。


技术实现要素:

4.针对现有技术中的缺陷,本发明的目的是提供一种基于配置的底层通用查询方法和系统。
5.根据本发明提供的基于配置的底层通用查询方法,包括:
6.步骤1:构建sql池,构建要素包括sql存储介质、对sql增删查改的管理页面、执行sql的管理页面,所述sql池用于集中存放查询使用的sql语句;
7.步骤2:开发通用查询方式,查询使用参数包括sql的id及sql占位符对应的参数;
8.步骤3:将步骤2的查询方式进行封装,格式为jar;
9.步骤4:对sql池进行治理,包括自动化审查和智能预警。
10.优选的,所述步骤1包括:
11.步骤1.1:每条存储的sql配有唯一标识id;
12.步骤1.2:每条sql语句的参数用问号占位符代替,可加入标签字符,用来支持动态拼接sql;
13.步骤1.3:开发管理页面用来操作sql的存储、修改及删除;
14.步骤1.4:开发管理页面用来执行sql,在页面设置参数及配置数据库地址。
15.优选的,所述步骤2包括:
16.步骤2.1:配置数据库链接池,从数据库链接池中获取对应链接;
17.步骤2.2:根据传入的id,从sql池中获取指定id的sql;
18.步骤2.3:根据id将sql缓存,同时设置时效;
19.步骤2.4:根据参数解析sql语句中用来支持动态拼接的标签;
20.步骤2.5:采用preparedstatement预编译sql语句;
21.步骤2.6:将查询方式中传入的sql参数传到preparedstatement对象;
22.步骤2.7:调用executequery方法执行sql,获取返回的数据;
23.步骤2.8:将执行时间和执行频次缓存,每隔一小时上报执行时间和频率数据到sql治理系统;
24.步骤2.9:对所有sql进行表级或者字段级的数据权限管理。
25.优选的,所述步骤4包括:
26.步骤4.1:开发sql管理平台,从sql池中获取数据;
27.步骤4.2:进行自动化审查,定期对所有sql获取执行计划信息,分析索引是否正确利用,并将结果保存;
28.步骤4.3:进行智能预警,当扫描到sql有执行失败或者未正确使用索引时发出邮件预警,当某个sql执行频率过高或者执行时间过长到超过阈值时,同样邮件警告。
29.优选的,每一批sql到上线生产前,组织相关人员对sql进行审查,当发现sql语句存在错误或需要优化时,通过修改sql池指定的sql,达到不用发版即生效的目的;当发现修改sql后发现异常或收到邮件预警时,可快速回退到之前版本。
30.根据本发明提供的基于配置的底层通用查询系统,包括:
31.模块m1:构建sql池,构建要素包括sql存储介质、对sql增删查改的管理页面、执行sql的管理页面,所述sql池用于集中存放查询使用的sql语句;
32.模块m2:开发通用查询方式,查询使用参数包括sql的id及sql占位符对应的参数;
33.模块m3:将模块m2的查询方式进行封装,格式为jar;
34.模块m4:对sql池进行治理,包括自动化审查和智能预警。
35.优选的,所述模块m1包括:
36.模块m1.1:每条存储的sql配有唯一标识id;
37.模块m1.2:每条sql语句的参数用问号占位符代替,可加入标签字符,用来支持动态拼接sql;
38.模块m1.3:开发管理页面用来操作sql的存储、修改及删除;
39.模块m1.4:开发管理页面用来执行sql,在页面设置参数及配置数据库地址。
40.优选的,所述模块m2包括:
41.模块m2.1:配置数据库链接池,从数据库链接池中获取对应链接;
42.模块m2.2:根据传入的id,从sql池中获取指定id的sql;
43.模块m2.3:根据id将sql缓存,同时设置时效;
44.模块m2.4:根据参数解析sql语句中用来支持动态拼接的标签;
45.模块m2.5:采用preparedstatement预编译sql语句;
46.模块m2.6:将查询方式中传入的sql参数传到preparedstatement对象;
47.模块m2.7:调用executequery方法执行sql,获取返回的数据;
48.模块m2.8:将执行时间和执行频次缓存,每隔一小时上报执行时间和频率数据到sql治理系统;
49.模块m2.9:对所有sql进行表级或者字段级的数据权限管理。
50.优选的,所述模块m4包括:
51.模块m4.1:开发sql管理平台,从sql池中获取数据;
52.模块m4.2:进行自动化审查,定期对所有sql获取执行计划信息,分析索引是否正确利用,并将结果保存;
53.模块m4.3:进行智能预警,当扫描到sql有执行失败或者未正确使用索引时发出邮件预警,当某个sql执行频率过高或者执行时间过长到超过阈值时,同样邮件警告。
54.优选的,每一批sql到上线生产前,组织相关人员对sql进行审查,当发现sql语句存在错误或需要优化时,通过修改sql池指定的sql,达到不用发版即生效的目的;当发现修改sql后发现异常或收到邮件预警时,可快速回退到之前版本。
55.与现有技术相比,本发明具有如下的有益效果:
56.(1)本发明简化开发,提升工作效率,对sql进行集中管理,让自动化治理及数据库管理员dba的介入成为可能,使上线的sql得到有效管控;
57.(2)本发明数据库操作中的dao层代码,降低了开发成本,提升了系统维护效率。
附图说明
58.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
59.图1为系统结构图;
60.图2为sql治理功能结构图;
61.图3为sql池系统结构图。
具体实施方式
62.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
63.实施例:
64.如图1,本发明提供了一种基于配置的底层通用查询技术,包括:
65.将查询的sql语句统一集中放到某个地方比如数据库或者配置中心(取名sql池)。
66.通过采用底层封装一个统一的查询方法,从sql池中获取指定的sql,传入参数后执行sql,获取到数据的手段,从而解决了重复编写查询代码及sql语句没法集中管理的问题,让智能审查或者人工审查sql成为可能。
67.具体步骤如下(以java语言开发为例):
68.步骤1:构建sql语句池:构建要素包括sql存储介质、对sql增删查改的管理页面、执行sql的管理页面,参考图3,步骤如下:
69.步骤1.1,每条存储的sql需要有唯一标识id;
70.步骤1.2,每条sql语句的参数用问号占位符代替,可加入标签字符,用来支持动态拼接sql。示例:
71.select name,age from user
72.where name=?
73.《if age!=null》and age=?《/if》
74.步骤1.3,开发一个管理页面来操作sql的存储、修改及删除;
75.步骤1.4,开发一个管理页面,用来执行sql,页面可以设置参数及配置数据库地址。
76.步骤2:开发一个通用的查询方法:参数有sql的id及sql占位符对应的参数;
77.步骤2.1,配置一个数据库链接池,从数据库链接池中获取对应链接;
78.步骤2.2,查询方法根据传入的id,从sql池中获取指定id的sql;
79.步骤2.3,根据id,将sql缓存,防止每次相同的sql都需要从sql池中获取,缓存需要设置时效;
80.步骤2.4,根据参数,解析sql语句中用来支持动态拼接的标签;
81.步骤2.5,采用preparedstatement预编译sql语句;
82.步骤2.6,将查询方法中传入的sql参数传到preparedstatement对象;
83.步骤2.7,调用executequery方法执行sql,获取返回的数据;
84.步骤2.8,将执行时间和执行频次缓存,每隔一小时上报执行时间和频率等数据到sql治理系统。
85.步骤2.9:扩展性:由于所有sql都在此处收口,可用来做表级或者字段级的数据权限管理。
86.步骤3:将步骤2的方法封装成一个jar,方便其他系统引用。
87.步骤4:sql池治理:包含功能见图2;
88.步骤4.1,开发一个sql管理平台,数据来自sql池;
89.步骤4.2,自动化审查:定期对所有sql获取执行计划信息,分析索引是否正确利用,并将结果保存。
90.步骤4.3,智能预警:当扫描到sql有执行失败或者未正确使用索引时发出邮件预警,当某个sql执行频率过高或者执行时间过长到超过阈值时,同样可以邮件警告。
91.步骤4.4,由于sql集中管理,每一批sql到上线生产前,dba都可以组织相关人员对sql进行审查。
92.步骤4.5,当发现sql语句存在错误或需要优化时,可通过修改sql池指定的sql,达到不用发版即生效的目的。
93.步骤4.6,做好sql的版本管理,当发现修改sql后发现异常或收到邮件预警,可快速回退到之前版本。
94.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1