一种支持多种数据源的数据查询方法及系统与流程

专利2024-11-22  63



1.本发明涉及网络舆情爬虫开发技术领域,尤其一种支持多种数据源的数据查询方法及系统。


背景技术:

2.bi系统中大量的数据接口都是对数据的查询,每一个业务指标编写一个对应的数据api,对于后台开发的工作量巨大,而且一旦发生变更,经历的开发周期较长,维护成本较高。
3.后端是使用java技术基于spring boot框架开发的微服务,使用dynamic-datasource技术实现服务与多个数据库进行连接,自定义sql的语义解析,支持sql条件的动态传参和必填项校验,保证sql的正确性。前端使用vue框架,实现可视化操作页面,通过可配置的方式,实现动态的sql发开数据接口。接口提供了数据缓存功能,可以通过页面配置是否结果需要缓存,对于bi系统,许多业务数据指标都是过去的数据,并不是实时的。
4.bi系统中大量的历史指标数据,可能都使用了缓存功能,随着时间的推移,数据需要不断的进行更新,为了保证系统获取的数据时效性,在数据更新之后需要进行缓存的清理工作,现有的开源框架xxl-job实现了定时的任务调度功能。对于bi系统这中需要大量获取数据指标的来说,目前的前后端分离开发方法存在后台的数据接口开发采用常规的开发方式,工作量巨大,大部分都是数据查询,没有事务处理等问题。


技术实现要素:

5.本发明的目的在于克服现有技术的不足,提供了一个通用的获取数据库数据接口,用户自定义查询sql语句,执行对数据库的数据检索操作。同时系统支持连接多种数据库,通过页面可视化的方式,配置数据源、缓存周期、数据量限制功能,在线编写sql的查询脚本等。动态执行sql来实现对数据库内容的查询,支持数据结果的定时缓存,清理等功能。
6.本发明的目的是通过以下技术方案来实现的:一种支持多种数据源的数据查询方法,包括:步骤一:通过可视化操作,将数据接口的接口配置信息存储到数据库;步骤二:业务系统以传递参数的形式通过固定的数据接口向后台提交查询请求;步骤三:后台接受查询请求后,先校验数据接口的正确性,若校验失败直接返回错误信息,校验成功则进入步骤四;步骤四:根据接口配置信息解析查询请求,获取待查询数据的缓存需求,并根据传递参数和缓存需求在redis或数据库中查询数据;将查询获得的数据返回给调用者;步骤五:根据接口配置信息创建定时任务自动清除缓存数据,或提供清理缓存的api接口,手动批量清理缓存数据。
7.所述步骤四具体包括:根据接口配置信息解析查询请求,分析出数据接口查询的待查询数据是否需要缓存,若待查询数据需要缓存且配置了缓存则通过接口输入的参数信
息作为唯一值到redis中查找数据,查询命中缓存则返回给调用者,未命中则根据参数信息在数据库中查询数据并返回给调用者;若待查询数据不需要缓存则直接根据参数信息在数据库中查询数据并返回给调用者。
8.所述根据参数信息在数据库中查询数据过程具体包括:先结合调用数据接口的输入的参数数据,解析配置的sql语句,转换为标准的sql语句;然后按照数据接口配置的数据库信息获取数据库的连接,并执行sql语句进行数据查询;查询到数据库中的待查询数据后,如果待查询数据配置了缓存时长,则待查询数据的数据副本存储到redis中,并返回待查询数据给调用者;其中,缓存数据副本的关键字key的组成为:模块+页面+平台+数据库名+调用数据接口传入的参数数据。
9.所述步骤一具体包括:前端使用vue框架进行可视化操作,对数据接口的接口配置信息进行接口名称唯一性验证,并将验证成功后的接口配置信息存储到数据库中。
10.所述接口配置信息包括接口名称、接口描述、sql查询语句、字段信息、参数信息、缓存时长、数据库名称、模块、页面、平台和停用标识。
11.一种支持多种数据源的数据查询系统,包括接口配置模块、数据查询模块和缓存清理模块;其中,接口配置模块使用vue框架进行可视化操作,对数据接口的接口配置信息进行接口名称唯一性验证,并将验证成功后的接口配置信息存储到数据库中;接口配置信息包括接口名称、接口描述、sql查询语句、字段信息、参数信息、缓存时长、数据库名称、模块、页面、平台和停用标识;数据查询模块用于接受调用者提交的查询请求并校验数据接口的正确性,然后根据接口配置信息解析查询请求,分析出数据接口查询的待查询数据是否需要缓存,若待查询数据需要缓存且配置了缓存则通过接口输入的参数信息作为唯一值到redis中查找数据,查询命中缓存则返回给调用者,未命中则根据参数信息在数据库中查询数据并返回给调用者;若待查询数据不需要缓存则直接根据参数信息在数据库中查询数据并返回给调用者;其中,根据参数信息在数据库中查询数据过程具体为:先结合调用数据接口的输入的参数数据,解析配置的sql语句,转换为标准的sql语句;然后按照数据接口配置的数据库信息获取数据库的连接,并执行sql语句进行数据查询;查询到数据库中的待查询数据后,如果待查询数据配置了缓存时长,则待查询数据的数据副本存储到redis中,并返回待查询数据给调用者;缓存清理模块用于根据接口配置信息创建定时任务自动清除缓存数据,或提供清理缓存的api接口,手动批量清理缓存数据。
12.本发明的有益效果:1.统一数据接口定义:对外提供固定api接口,不需要根据业务需求,定义大量的数据接口,通过传参的形式指定业务接口需要实现的逻辑;2.多数据源动态执行sql脚本:系统集成了对多种数据库连接的支持,数据源可以动态切换,无需根据项目重新定制化开发;动态解析执行sql语句,无需编写数据结构等相关代码逻辑;3. 数据缓存:根据调用接口传入的参数作为缓存数据的标识,通过数据标识进行数据的预热和清理功能,提升查询速度,防止读取脏数据;4.节约成本:以图形化的开发方式,开发人员只会编写sql即可,降低了学习成本,
对外接口固定,降低了前后端人员的沟通成本;5.快速开发:系统启动开箱即用,不用考虑系统架构的搭建,一切皆配置,通过可视化配置的方式进行开发,编写sql完成即生效,无需重新部署,有效的缩短开发周期。
附图说明
13.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
14.图1是本发明的方法流程图;图2是本发明的接口配置信息结构图。
具体实施方式
15.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当人认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
17.bi系统中大量的数据接口都是对数据的查询,每一个业务指标编写一个对应的数据api,对于后台开发的工作量巨大,而且一旦发生变更,经历的开发周期较长,维护成本较高。
18.目前的前后端分离开发方法,对于bi系统这中需要大量获取数据指标的来说,后台的数据接口开发采用常规的开发方式,工作量巨大,大部分都是数据查询,没有事务处理能问题,如果采用固定的数据接口,动态的配置查询数据接口,可以提升开发效率,开发人员无需编写大量的代码,只需要编写获取业务指标数据的sql即可,降低了工作量和开发难度,对于开发人员的技术水平要求也可以降低,充分利用资源,可视化的开发模式,使得不熟悉后端代码,只会sql的人员也能轻松上手参与系统的研发工作,可以充分提升人员的利用率,缩短开发周期,降低成本,提升效率。
19.本发明提供了一个通用的获取数据库数据接口,用户自定义查询sql语句,执行对数据库的数据检索操作。同时系统支持连接多种数据库,通过页面可视化的方式,配置数据源、缓存周期、数据量限制功能,在线编写sql的查询脚本等。动态执行sql来实现对数据库内容的查询,支持数据结果的定时缓存,清理等功能。对外开放的数据接口只有一个,省去了业务系统调用时,配置繁多的数据库接口带来的工作量,后期即使有变更,在线修改接口配置即可,前端无需进行改动,整个系统无需重新部署,对于前端开发者来说比较友好,运维起来也方便快捷。
20.本发明涉及技术术语如下:
bi系统:商业智能( business itelligence ,简称: bi) , 又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理( olap )工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、olap和数据挖掘等技术的综合运用。
21.sql:sql语言,是结构化查询语言(structured query language)的简称。sql语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
22.dynamic-datasource:dynamic-datasource 是一款极其简单的基于 spring-boot 的多数据源组件,可以方便快速的让你的系统支持多数据源。
23.xxl-job:xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
24.redis:remote dictionary server(redis) 是一个由 salvatore sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。redis 是一个开源的使用 ansi c 语言编写、遵守 bsd 协议、支持网络、可基于内存、分布式、可选持久性的键值对(key-value)存储数据库,并提供多种语言的 api。redis 通常被称为数据结构服务器,因为值(value)可以是字符串(string)、哈希(hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
25.api:api就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 api 而使操作系统去执行应用程序的命令。
26.vue:vue.js(vue)是一套用于构建用户界面的开源渐进式 javascript 框架。与其它大型框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,vue 也完全能够为复杂的单页应用提供驱动。
27.spring boot:spring boot 是由 pivotal 团队提供的全新框架,其设计目的是用来简化新 spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
28.如图1所示,本发明具体流程如下:1、通过可视化操作,将数据接口的配置信息存入到数据库中,数据存储时要进行名称的唯一性验证。接口名称是通过调用接口的唯一凭证。数据结构如图2所示:其中,字段信息,是描述执行sql查询返回的数据的元数据信息,用于页面展现数据时可以使用人们理解的文字描述,支持多语言配置,不同语言用逗号隔开,多个字段用分号进行分隔;参数信息,是sql中定义的变量的文字描述与数据类型,配置格式与字段信息一致,也是用于页面展示;模块、页面、平台等是用来描述接口的分类,用于手动批量清理缓存
2、业务系统通过固定的数据接口,通过传参的方式,作为数据查询的过滤条件,实现同一个接口可以查询不同业务逻辑指标数据。
29.例如,定义的sql脚本是查询车企全年的销售发票数据。可以通过传递参数的形式,查询某个季度、某个月的发票量,或者某个品牌、区域、车系等不同维度的发票数据。通过配置信息中的参数信息配置,实现动态传参,查询不同维度的指标数据。
30.3、后台校验接口的正确性,失败直接返回错误信息,成功则进入下一步。
31.接口调用者通过传递接口的名称和动态参数实现数据的查询,接口名称是唯一的。首先要根据接口的名称到数据库中查询接口配置(未停用的)是否存在没有则返回校验失败信息。然后验证参数,接口的参数配置中会有是否必须的标识,如果需要必须传入的参数没有在传入参数中找到数据值,则返回校验失败信息。
32.4、根据配置信息知道接口查询的数据是否需要缓存,如果配置了缓存则通过接口输入的参数等信息作为唯一值到redis中查找数据,查询命中缓存则返回,未命中则查询数据库。
33.5、结合调用接口的入参数据,解析配置的sql语句,最终转换为标准的sql语句。
34.6、按照接口配置的数据库信息获取到数据库的连接,执行sql语句。
35.7、查询到数据库中的数据后,如果数据配置了缓存时长,则存一份数据副本到redis中,然后返回数据给调用者。缓存数据的key的组成:模块+页面+平台+数据库名+调用接口传入的数据。
36.8、自动清除缓存:如果接口中配置了数据缓存的时间,则按此接口的信息创建一个定时任务,按照预定的时间进行清除。
37.9、手动批量清理缓存:提供了清理缓存的api接口,可以通过指定模块、页面、平台、数据库名作为redis数据的检索,进行批量清理。
38.本发明的关键技术点在于:1.统一数据接口定义:对外提供固定api接口,不需要根据业务需求,定义大量的数据接口,通过传参的形式指定业务接口需要实现的逻辑;2.多数据源动态执行sql脚本:系统集成了对多种数据库连接的支持,数据源可以动态切换,无需根据项目重新定制化开发;动态解析执行sql语句,无需编写数据结构等相关代码逻辑;3. 数据缓存:根据调用接口传入的参数作为缓存数据的标识,通过数据标识进行数据的预热和清理功能,提升查询速度,防止读取脏数据;4.节约成本:以图形化的开发方式,开发人员只会编写sql即可,降低了学习成本,对外接口固定,降低了前后端人员的沟通成本;5.快速开发:系统启动开箱即用,不用考虑系统架构的搭建,一切皆配置,通过可视化配置的方式进行开发,编写sql完成即生效,无需重新部署,有效的缩短开发周期。
39.以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

技术特征:
1.一种支持多种数据源的数据查询方法,其特征在于,包括:步骤一:通过可视化操作,将数据接口的接口配置信息存储到数据库;步骤二:业务系统以传递参数的形式通过固定的数据接口向后台提交查询请求;步骤三:后台接受查询请求后,先校验数据接口的正确性,若校验失败直接返回错误信息,校验成功则进入步骤四;步骤四:根据接口配置信息解析查询请求,获取待查询数据的缓存需求,并根据传递参数和缓存需求在redis或数据库中查询数据;将查询获得的数据返回给调用者;步骤五:根据接口配置信息创建定时任务自动清除缓存数据,或提供清理缓存的api接口,手动批量清理缓存数据。2.根据权利要求1所述的一种支持多种数据源的数据查询方法,其特征在于,所述步骤四具体包括:根据接口配置信息解析查询请求,分析出数据接口查询的待查询数据是否需要缓存,若待查询数据需要缓存且配置了缓存则通过接口输入的参数信息作为唯一值到redis中查找数据,查询命中缓存则返回给调用者,未命中则根据参数信息在数据库中查询数据并返回给调用者;若待查询数据不需要缓存则直接根据参数信息在数据库中查询数据并返回给调用者。3.根据权利要求2所述的一种支持多种数据源的数据查询方法,其特征在于,所述根据参数信息在数据库中查询数据过程具体包括:先结合调用数据接口的输入的参数数据,解析配置的sql语句,转换为标准的sql语句;然后按照数据接口配置的数据库信息获取数据库的连接,并执行sql语句进行数据查询;查询到数据库中的待查询数据后,如果待查询数据配置了缓存时长,则待查询数据的数据副本存储到redis中,并返回待查询数据给调用者;其中,缓存数据副本的关键字key的组成为:模块+页面+平台+数据库名+调用数据接口传入的参数数据。4.根据权利要求1所述的一种支持多种数据源的数据查询方法,其特征在于,所述步骤一具体包括:前端使用vue框架进行可视化操作,对数据接口的接口配置信息进行接口名称唯一性验证,并将验证成功后的接口配置信息存储到数据库中。5.根据权利要求1所述的一种支持多种数据源的数据查询方法,其特征在于,所述接口配置信息包括接口名称、接口描述、sql查询语句、字段信息、参数信息、缓存时长、数据库名称、模块、页面、平台和停用标识。6.一种采用上述权利要求1~5任意一项所述的一种支持多种数据源的数据查询方法实现的支持多种数据源的数据查询系统,其特征在于,包括接口配置模块、数据查询模块和缓存清理模块;其中,接口配置模块使用vue框架进行可视化操作,对数据接口的接口配置信息进行接口名称唯一性验证,并将验证成功后的接口配置信息存储到数据库中;接口配置信息包括接口名称、接口描述、sql查询语句、字段信息、参数信息、缓存时长、数据库名称、模块、页面、平台和停用标识;数据查询模块用于接受调用者提交的查询请求并校验数据接口的正确性,然后根据接口配置信息解析查询请求,分析出数据接口查询的待查询数据是否需要缓存,若待查询数据需要缓存且配置了缓存则通过接口输入的参数信息作为唯一值到redis中查找数据,查询命中缓存则返回给调用者,未命中则根据参数信息在数据库中查询数据并返回给调用者;若待查询数据不需要缓存则直接根据参数信息在数据库中查询数据并返回给调用者;
其中,根据参数信息在数据库中查询数据过程具体为:先结合调用数据接口的输入的参数数据,解析配置的sql语句,转换为标准的sql语句;然后按照数据接口配置的数据库信息获取数据库的连接,并执行sql语句进行数据查询;查询到数据库中的待查询数据后,如果待查询数据配置了缓存时长,则待查询数据的数据副本存储到redis中,并返回待查询数据给调用者;缓存清理模块用于根据接口配置信息创建定时任务自动清除缓存数据,或提供清理缓存的api接口,手动批量清理缓存数据。

技术总结
本发明公开了一种支持多种数据源的数据查询方法及系统,其方法包括:步骤一:通过可视化操作,将数据接口的接口配置信息存储到数据库;步骤二:业务系统通过固定的数据接口向后台提交查询请求;步骤三:后台接受查询请求后,校验数据接口的正确性,若校验失败直接返回错误信息,校验成功则进入步骤四;步骤四:根据接口配置信息解析查询请求,获取待查询数据的缓存需求,根据传递参数和缓存需求在Redis或数据库中查询数据;将查询获得的数据返回给调用者;步骤五:根据接口配置信息创建定时任务自动清除缓存数据,或提供清理缓存的API接口,手动批量清理缓存数据。本发明采用固定的数据接口,动态的配置查询数据接口,提升开发效率。提升开发效率。提升开发效率。


技术研发人员:王健
受保护的技术使用者:启明信息技术股份有限公司
技术研发日:2022.06.30
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-10476.html

最新回复(0)