发明内容
本发明的目的是提供一种数据查询管理方法、装置、计算机设备及可读存储介质,用于解决现有技术存在的随着业务量的增加,而出现的数据查询效率将会越来越低,以及会极大的消耗服务器的算力的问题。
为实现上述目的,本发明提供一种数据查询管理方法,包括:
与保存有业务数据的数据库建立通信连接,获取所述数据库中的业务数据并将其推送至预置的云存储系统中;
接收用户端发送的登陆信息,根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端;
接收用户端发送的查询请求,提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;其中,所述嵌套结构是指两个或两个以上的业务数据之间具有包含与被包含的层级逻辑关系的数据结构;
若是,则根据所述查询字段从所述用户端中获取目标数据;
若否,则根据所述查询字段从所述数据库中获取目标数据。
上述方案中,所述获取所述数据库中的业务数据并将其推送至预置的云存储系统中,包括:
识别所述数据库中具有嵌套结构的业务数据;
将所述具有嵌套结构的业务数据保存至预置的异步消息队列中;
通过所述异步消息队列将所述具有嵌套结构的业务数据推送至所述云存储系统中。
上述方案中,所述获取所述数据库中的业务数据并将其推送至预置的云存储系统中之后,所述方法还包括:
更新所述云存储系统中业务数据,使所述云存储系统与所述数据库之间保持数据同步。
上述方案中,所述更新所述云存储系统中业务数据,包括:
按照预置的时钟周期从所述数据库中获取具有嵌套结构的业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第一异步消息队列,并通过所述第一异步消息队列将所述云存储系统中的业务数据替换为所述更新数据,使所述云存储系统与所述数据库之间保持数据同步;或
当识别出所述数据库中具有嵌套结构的业务数据出现更新时,将所述数据库中的业务数据载入预置的第二异步消息队列,并通过所述第二异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据;或
当监听到所述数据库更新所述具有嵌套结构的业务数据所生成的更新信号时,将所述数据库中的业务数据载入预置的第三异步消息队列,并通过所述第三异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据。
上述方案中,所述根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端之后,所述方法还包括:
更新所述用户端中的业务数据,使所述用户端和所述云存储系统之间保持数据同步。
上述方案中,所述更新所述用户端中的业务数据,包括:
按照预置的时钟周期从所述云存储系统中获取业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第四异步消息队列,并通过所述第四异步消息队列将所述用户端中的业务数据替换为所述更新数据,使所述云存储系统与所述用户端之间保持数据同步;或
当识别出所述云存储系统中的业务数据出现更新时,将所述云存储系统中的业务数据载入预置的第五异步消息队列,并通过所述第五异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据;或
当监听到所述云存储系统更新所述业务数据所生成的更新信号时,将所述云存储系统中的业务数据载入预置的第六异步消息队列,并通过所述第六异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据。
上述方案中,所述判断所述查询字段所查询的业务数据之间是否具有嵌套结构,包括:
识别所述数据库中与所述查询字段一致的元数据,获取所述元数据所在的数据表格,并计算所述数据表格的数量;其中,所述数据表格是用于记载所述业务数据,且通过所述元数据描述所述业务数据属性的数据结构;
若所述表格数量有且只有一个,则判定所述查询字段所查询的业务数据之间不具有嵌套结构;
若所述表格数量为两个及两个以上,则判定所述查询字段所查询的业务数据之间是否具有嵌套结构;
所述判断所述查询字段所查询的业务数据之间是否具有嵌套结构之后,所述方法还包括:
将所述查询字段上传至区块链中。
为实现上述目的,本发明还提供一种数据查询管理装置,包括:
第一推送模块,用于与保存有业务数据的数据库建立通信连接,获取所述数据库中的业务数据并将其推送至预置的云存储系统中;
第二推送模块,用于接收用户端发送的登陆信息,根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端;
查询判断模块,用于接收用户端发送的查询请求,提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;
用户端查询模块,用于根据所述查询字段从所述用户端中获取目标数据;
数据库查询模块,用于根据所述查询字段从所述数据库中获取目标数据。
为实现上述目的,本发明还提供一种计算机设备,其包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述计算机设备的处理器执行所述计算机程序时实现上述数据查询管理方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述可读存储介质上存储有计算机程序,所述可读存储介质存储的所述计算机程序被处理器执行时实现上述数据查询管理方法的步骤。
本发明提供的数据查询管理方法、装置、计算机设备及可读存储介质,通过设置云存储系统隔绝数据库和用户端,以避免用户端通过提取处于底层的数据库中的业务数据导致业务数据缓存速率缓慢,以及避免因大量用户端在短时间内访问数据库,导致数据库被占用时间过长或调用的线程过多,造成数据库在较长的时间内无法被正常调用的情况发生。
通过对用户端发送的登陆信息进行身份识别获取数据权限,识别所述云存储系统中与所述数据权限对应的业务数据,并将所述业务数据推送至用户端,既保证了用户端对业务数据进行复杂查询的全面性,又保证了云存储系统中业务数据的安全性,避免了用户端越权获取业务数据,导致业务数据泄露。
通过在用户端中缓存业务数据,并通过所述查询字段对所述缓存的业务数据进行查询,使得用户端仅需调用其自身的线程,并对其自身保存的业务数据进行查询,即可获得其所需的业务数据,替代了调用服务器的线程并占用所述服务器的算力获取业务数据的方案,因此,极大的节省了运行有数据库的服务器的算力资源。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的数据查询管理方法、装置、计算机设备及可读存储介质,适用于云服务的云存储技术领域,为提供一种基于第一推送模块、第二推送模块、查询判断模块、用户端查询模块、数据库查询模块的数据查询管理方法。本发明通过获取所述数据库中的业务数据并将其推送至预置的云存储系统中;根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端;提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;若是,则根据所述查询字段从所述用户端中获取目标数据;若否,则根据所述查询字段从所述数据库中获取目标数据。
实施例一:
请参阅图1,本实施例的一种数据查询管理方法,包括:
S101:与保存有业务数据的数据库建立通信连接,获取所述数据库中的业务数据并将其推送至预置的云存储系统中;
S103:接收用户端发送的登陆信息,根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端;
S105:接收用户端发送的查询请求,提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;其中,所述嵌套结构是指两个或两个以上的业务数据之间具有包含与被包含的层级逻辑关系的数据结构;
S106:若是,则根据所述查询字段从所述用户端中获取目标数据;
S107:若否,则根据所述查询字段从所述数据库中获取目标数据。
在示例性的实施例中,通过TCP/IP通信技术与数据库之间建立通信连接,以便于从所述数据库中获取业务数据;采用kafka作为所述云存储系统,将数据库中的业务数据推送至kafka用于保存所述业务数据。其中,kafka是实现一种用于处理实时数据提供一个统一、高吞吐、低延迟的分布式发布-订阅消息系统,其提供一种分布式的,可划分的,冗余备份持久性的日志服务。通过设置云存储系统隔绝数据库和用户端,以避免用户端通过提取处于底层的数据库中的业务数据导致业务数据缓存速率缓慢,以及避免因大量用户端在短时间内访问数据库,导致数据库被占用时间过长或调用的线程过多,造成数据库在较长的时间内无法被正常调用的情况发生。
通过对用户端发送的登陆信息进行身份识别,如果用户端具有登陆权限,则从预置的权限库中获取与所述登陆信息对应的数据权限,识别所述云存储系统中与所述数据权限对应的业务数据,并将所述业务数据推送至用户端,既保证了用户端对业务数据进行复杂查询的全面性,又保证了云存储系统中业务数据的安全性,避免了用户端越权获取业务数据,导致业务数据泄露。
通过在用户端中缓存业务数据,并通过所述查询字段对所述缓存的业务数据进行查询,使得用户端仅需调用其自身的线程,并对其自身保存的业务数据进行查询,即可获得其所需的业务数据,替代了调用服务器的线程并占用所述服务器的算力获取业务数据的方案,因此,极大的节省了运行有数据库的服务器的算力资源。又由于用户端中缓存的业务数据是基于所述用户端的数据权限的,因此,在保证数据查询的全面性的同时,还保证了业务数据的安全性。而对于不具有嵌套结构的业务数据的查询,由于其占用的算力和线程较小,可由用户端直接访问数据库用以对业务数据进行查询,在保证查询效率的同时,保证数据查询全面性和准确性。
实施例二:
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
下面,以在运行有数据查询管理方法的服务器中,根据查询字段所查询的业务数据之间是否具有嵌套结构,从用户端中获取目标数据,或从数据库中获取目标数据为例,来对本实施例提供的方法进行具体说明。需要说明的是,本实施例只是示例性的,并不限制本发明实施例所保护的范围。
图2示意性示出了根据本申请实施例二的数据查询管理方法的环境应用示意图。
在示例性的实施例中,数据查询管理方法所在的服务器2通过网络分别连接数据库3和用户端4;所述服务器2可以通过一个或多个网络提供服务,网络可以包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或等等。网络可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络可以包括无线链路,例如蜂窝链路,卫星链路,Wi-Fi链路和/或类似物;所述用户端4可为智能手机、平板电脑、笔记本电脑、台式电脑等计算机设备。
图3是本发明一个实施例提供的一种数据查询管理方法的具体方法流程图,该方法具体包括步骤S201至S207。
S201:与保存有业务数据的数据库建立通信连接,获取所述数据库中的业务数据并将其推送至预置的云存储系统中。
本步骤中,通过TCP/IP通信技术与数据库之间建立通信连接,以便于从所述数据库中获取业务数据;采用kafka作为所述云存储系统,将数据库中的业务数据推送至kafka用于保存所述业务数据。其中,kafka是实现一种用于处理实时数据提供一个统一、高吞吐、低延迟的分布式发布-订阅消息系统,其提供一种分布式的,可划分的,冗余备份持久性的日志服务。
由于业务数据的数据量十分庞大,因此,通过kafka提供的O(1)的磁盘数据结构保证了其缓存的业务数据的持久化,使得即使数以TB的业务数据存储也能够保持长时间的稳定性能。
由于数据库和云存储系统之间交互的业务数据的数据量十分庞大,因此,利用kafka的高吞吐量特性,使得即使是非常普通的硬件Kafka也可以支持每秒数百万的数据量,极大的保证了数据库和云存储系统之间数据交互和数据同步的需求。
由于云存储系统与多个用户端之间容易出现业务数据下载请求高并发的情况,因此,通过kafka支持Hadoop并行数据加载的特性,有力的保证了根据各用户端的下载请求,向所述用户端推送业务数据的数据推送业务的顺利执行,进而保证了推送业务的稳定性。
同时,通过设置云存储系统隔绝数据库和用户端,以避免用户端通过提取处于底层的数据库中的业务数据导致业务数据缓存速率缓慢,以及避免因大量用户端在短时间内访问数据库,导致数据库被占用时间过长或调用的线程过多,造成数据库在较长的时间内无法被正常调用的情况发生。
需要说明的是,TCP/IP通信技术包括TCP和IP,其中,TCP用于从应用程序到网络的数据传输控制,其负责在数据传送之前将它们分割为IP包,然后在它们到达的时候将它们重组。IP负责计算机之间的通信,用于在因特网上发送和接收数据包。
在一个优选的实施例中,所述获取所述数据库中的业务数据并将其推送至预置的云存储系统中,包括:
S11:识别所述数据库中具有嵌套结构的业务数据;
S12:将所述具有嵌套结构的业务数据保存至预置的初始异步消息队列中;
S13:通过所述初始异步消息队列将所述具有嵌套结构的业务数据推送至所述云存储系统中。
于本实施例中,所述嵌套结构是指两个或两个以上的业务数据之间具有包含与被包含的层级逻辑关系的数据结构,在所述数据库中,相互之间形成嵌套结构的业务数据保存在两个及两个以上的数据表格中,于本实施例中,可通过预置的嵌套映射表记载具有嵌套关系的业务数据中,各所述业务数据之间的嵌套关系,故,通过所述嵌套映射表即可识别所述数据库中具有嵌套结构的业务数据。示例性地,在金融机构的借款申请场景中:
借款人向金融机构提出借款申请,则需要提供借款申请信息,其保存在申请信息表中;
借款人具体是向业务员进行借款申请的,因此,业务员信息至少包含一个借款申请信息,业务员信息保存在业务员表中,其与所述申请信息表之间具有嵌套结构关系;
管理者是对至少一个业务员进行管理的,因此,管理者信息至少包含一个业务员信息,其保存在管理者表中,其余所述业务员表之间具有嵌套结构关系。
综上,具有嵌套结构的业务数据为:借款申请信息、业务员信息、管理者信息。
将上述具有嵌套结构的业务数据载入异步消息队列中之后,即可将所述业务数据传输至所述云存储系统,由于异步消息队列会按照固定的逻辑依次将业务数据推送至所述云存储系统,因此避免了因大量业务数据需要推送至云存储系统导致服务器IO压力过大的问题发生,保证了数据推送的平稳性。
S202:更新所述云存储系统中业务数据,使所述云存储系统与所述数据库之间保持数据同步。
为确保云存储系统与数据库之间的数据同步,进而保证数据查询的准确性和全面性,本步骤通过定期、或识别出数据库的业务数据出现更新、或监听到数据库中具有嵌套结构的业务数据出现更新时,更新所述云存储系统中的业务数据的方式,使所述云存储系统与所述数据库之间保持数据同步,进而保证数据查询的准确性和全面性。
示例性地,基于上述举例,所述具有嵌套结构的业务数据出现更新的情况如下所示:
1、新的借款人向金融机构提出新的借款申请信息,相应的业务员接待了该借款人导致其业务员信息中的借款申请信息出现了新增,该业务员的管理者的管理者信息因新增的借款申请信息,导致管理者信息之下业务员信息及其借款申请信息出现新增。
2、借款人向金融机构提出修改借款申请信息,导致相应的业务员信息内容出现更改,进而导致其对应的管理者信息出现更改。
3、当业务员与管理者之间的组织关系出现变更时(如业务员或管理者调离团队,或离职的情况),则业务员信息和管理者信息之间的关联关系也会导致更改,导致借款申请信息、业务员信息和管理者信息出现变更。
在一个优选的实施例中,所述更新所述云存储系统中业务数据,包括:
S21:按照预置的时钟周期从所述数据库中获取具有嵌套结构的业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第一异步消息队列,并通过所述第一异步消息队列将所述云存储系统中的业务数据替换为所述更新数据,使所述云存储系统与所述数据库之间保持数据同步。
本步骤中,通过预置的时钟模块定义所述时钟周期,根据所述时钟周期触发从数据库获取业务数据的传送事务并获得所述更新数据;通过将更新数据载入所述异步消息队列之后,即结束所述传送事务以避免执行所述传送事务导致长时间占用服务器算力;通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至云存储系统,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S22:当识别出所述数据库中具有嵌套结构的业务数据出现更新时,将所述数据库中的业务数据载入预置的第二异步消息队列,并通过所述第二异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据。
本步骤中,提供备份库,用于对所述数据库中的业务数据进行备份;通过compare()函数定期或实时的比对数据库中具有嵌套结构的业务数据,和备份库中的具有嵌套结构的业务数据,当数据库和备份库中的所述业务数据之间出现不同时,则判定所述数据库已出现更新;执行用于将所述数据库中的业务数据推送至所述异步消息队列的传送事务;当所有业务数据载入所述异步消息队列之后,通过所述异步消息队列将所述业务数据推送至所述备份库,用以覆盖所述备份库中的业务数据;结束所述传送事务以释放服务器的执行线程,进而降低服务器算力的占用时间。通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至云存储系统,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S23:当监听到所述数据库更新所述具有嵌套结构的业务数据所生成的更新信号时,将所述数据库中的业务数据载入预置的第三异步消息队列,并通过所述第三异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据。
本步骤中,通过listen()函数监听是否接收到数据库在更新业务数据时所生成的更新信号,若是,则执行用于将所述数据库中的业务数据推送至所述异步消息队列的传送事务;当所有业务数据载入所述异步消息队列之后,结束所述传送事务以释放服务器的执行线程,进而降低服务器算力的占用时间;通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至云存储系统,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S203:接收用户端发送的登陆信息,根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端。
为确保有权获取业务数据的用户端访问所述云存储系统,并保证所述用户端能够获取符合其权限的业务数据,本步骤通过对用户端发送的登陆信息进行身份识别,如果用户端具有登陆权限,则从预置的权限库中获取与所述登陆信息对应的数据权限,识别所述云存储系统中与所述数据权限对应的业务数据,并将所述业务数据推送至用户端,既保证了用户端对业务数据进行复杂查询的全面性,又保证了云存储系统中业务数据的安全性,避免了用户端越权获取业务数据,导致业务数据泄露。
在一个优选的实施例中,所述根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端,包括:
S31:接收用户端发送的登陆信息,从预置的身份库中识别所述是否具有与所述登陆信息一致的身份信息。
本步骤中,所述身份库中保存有用户端的身份信息,所述身份信息是用户端预先注册的唯一性标识信息,如:账号、密码、口令等。
S32:若是,则从预置的权限库中获取与所述登陆信息对应的数据权限。
本步骤中,所述权限库中记载了登陆信息和数据权限之间映射关系,通过所述映射关系获取与所述登陆信息对应的数据权限。
S33:若否,则向所述用户端发送禁止登陆信息。
S34:识别所述云存储系统中与所述数据权限匹配的业务数据,将所述业务数据推送至所述用户端,控制所述用户端缓存其接收到的业务数据。
本步骤中,所述云存储系统中的业务数据具有定义数据权限的权限信息,识别所述云存储系统中与所述数据权限的权限信息,获取与所述权限信息对应的业务数据,将所述业务数据载入预置的异步消息队列,通过所述异步消息队列将所述业务数据推送至所述用户端,控制所述用户端缓存其接收到的业务数据。对于从云存储系统将业务数据发送至用户端的推送事务,采用异步消息队列用于削平高峰期的业务数据的推送事务,以保证所述推送事务的平稳性。
S204:更新所述用户端中的业务数据,使所述用户端和所述云存储系统之间保持数据同步。
为确保云存储系统与用户端之间的数据同步,进而保证数据查询的准确性和全面性,本步骤通过定期、或识别出用户端的业务数据出现更新、或监听到用户端的业务数据出现更新时,更新所述云存储系统中的业务数据的方式,使所述云存储系统与所述用户端之间保持数据同步,进而保证数据查询的准确性和全面性。
在一个优选的实施例中,所述更新所述用户端中的业务数据,包括:
S41:按照预置的时钟周期从所述云存储系统中获取业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第四异步消息队列,并通过所述第四异步消息队列将所述用户端中的业务数据替换为所述更新数据,使所述云存储系统与所述用户端之间保持数据同步。
本步骤中,通过预置的时钟模块定义所述时钟周期,根据所述时钟周期触发从数据库获取业务数据的传送事务并获得所述更新数据;通过将更新数据载入所述异步消息队列之后,即结束所述传送事务以避免执行所述传送事务导致长时间占用服务器算力;通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至用户端,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S42:当识别出所述云存储系统中的业务数据出现更新时,将所述云存储系统中的业务数据载入预置的第五异步消息队列,并通过所述第五异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据。
本步骤中,提供备份数据系统,用于对所述云存储系统中的业务数据进行备份;通过compare()函数定期或实时的比对云存储系统中的业务数据和备份数据系统中的业务数据,当云存储系统和备份数据系统中的业务数据之间出现不同时,则判定所述云存储系统已出现更新;执行用于将所述云存储系统中的业务数据推送至所述异步消息队列的传送事务;当所有业务数据载入所述异步消息队列之后,通过所述异步消息队列将所述业务数据推送至所述备份数据系统,用以覆盖所述备份数据系统中的业务数据;结束所述传送事务以释放服务器的执行线程,进而降低服务器算力的占用时间。通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至用户端,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S43:当监听到所述云存储系统更新所述业务数据所生成的更新信号时,将所述云存储系统中的业务数据载入预置的第六异步消息队列,并通过所述第六异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据。
本步骤中,通过listen()函数监听是否接收到云存储系统在更新业务数据时所生成的更新信号,若是,则执行用于将所述云存储系统中的业务数据推送至所述异步消息队列的传送事务;当所有业务数据载入所述异步消息队列之后,结束所述传送事务以释放服务器的执行线程,进而降低服务器算力的占用时间;通过将短时间内高并发的业务数据录入所述异步消息队列,并通过异步消息队列将业务数据依次推送至云存储系统,从而削平高峰期的业务数据传送事务,保证了数据同步的平稳性。
S205:接收用户端发送的查询请求,提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;其中,所述嵌套结构是指两个或两个以上的业务数据之间具有包含与被包含的层级逻辑关系的数据结构。
本步骤中,所述查询请求为http请求报文,其包括报文头和报文体;所述查询字段记载在所述报文体中,通过预置的字段正则表达式从所述报文体中提取所述查询字段。于本实施例中,在所述数据库中,相互之间形成嵌套结构的业务数据保存在两个及两个以上的数据表格中,于本实施例中,可通过预置的嵌套映射表记载具有嵌套关系的业务数据中,各所述业务数据之间的嵌套关系,故,通过所述嵌套映射表即可识别所述数据库中具有嵌套结构的业务数据。
具体地,所述查询字段所查询的业务数据包括以下情况:
1、查询具有嵌套结构的业务数据,其中,所述具有嵌套结构的业务数据在所述数据库中保存在两个及两个以上的数据表格中。
2、查询不具有嵌套结构的业务数据,其中,所述不具有嵌套结构的业务数据在所述数据库中保存在一个数据表格中。
对于查询具有嵌套结构的业务数据,因涉及多个表,如果采用现有的调用服务器中的线程对数据库中的业务数据进行查询,将会消耗服务器较大的算力。因此,通过在用户端中缓存业务数据,并通过所述查询字段对所述缓存的业务数据进行查询,使得用户端仅需调用其自身的线程,并对其自身保存的业务数据进行查询,即可获得其所需的业务数据,替代了调用服务器的线程并占用所述服务器的算力获取业务数据的方案,因此,极大的节省了运行有数据库的服务器的算力资源。又由于用户端中缓存的业务数据是基于所述用户端的数据权限的,因此,在保证数据查询的全面性的同时,还保证了业务数据的安全性。
对于查询不具有嵌套结构的业务数据,由于其占用的算力和线程较小,可由用户端直接访问数据库用以对业务数据进行查询,在保证查询效率的同时,保证数据查询全面性和准确性。
在一个优选的实施例中,所述判断所述查询字段所查询的业务数据之间是否具有嵌套结构,包括:
S51:识别所述数据库中与所述查询字段一致的元数据,获取所述元数据所在的数据表格,并计算所述数据表格的数量;其中,所述数据表格是用于记载所述业务数据,且通过所述元数据描述所述业务数据属性的数据结构。
本步骤中,在所述数据库中识别与所述查询字段一致的元数据,获取所述元数据所在的数据表格,并将其作为与所述查询字段对应的数据表格。
S52:若所述表格数量有且只有一个,则判定所述查询字段所查询的业务数据之间不具有嵌套结构。
S53:若所述表格数量为两个及两个以上,则判定所述查询字段所查询的业务数据之间是否具有嵌套结构。
优选的,所述判断所述查询字段所查询的业务数据之间是否具有嵌套结构之后,所述方法还包括:
将所述查询字段上传至区块链中。
需要说明的是,基于查询字段得到对应的摘要信息,具体来说,摘要信息由查询字段进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证查询字段是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
S206:若是,则根据所述查询字段从所述用户端中获取目标数据。
本步骤中,将所述查询字段录入预置的查询函数,调用所述用户端的线程运行所述查询函数,用以从所述用户端缓存的业务数据中查询,与所述查询字段匹配的业务数据并将其设为目标数据,由于本步骤通过用户端的算力获取目标数据的方案,替代使用运行有数据库的服务器的算力获取目标数据的方案,不仅提高了查询具有嵌套结构的业务数据的查询效率,还极大的降低了服务器的算力消耗,缓解了服务器的IO压力。
于本实施例中,所述查询函数可为Vlookup函数、HLookup函数、Index函数、Match函数中的任一函数。
S207:若否,则根据所述查询字段从所述数据库中获取目标数据。
本步骤中,将所述查询字段录入预置的查询函数,用以从所述数据库中查询与所述查询字段匹配的业务数据,并将其设为目标数据,由于不具有嵌套结构的业务数据的查询请求的算力消耗较小,因此,直接从数据库中查询目标数据的方式,保证了目标数据识别的全面性和准确性。
于本实施例中,所述查询函数可为Vlookup函数、HLookup函数、Index函数、Match函数中的任一函数。
实施例三:
请参阅图4,本实施例的一种数据查询管理装置1,包括:
第一推送模块11,用于与保存有业务数据的数据库建立通信连接,获取所述数据库中的业务数据并将其推送至预置的云存储系统中;
第二推送模块13,用于接收用户端发送的登陆信息,根据所述登陆信息将所述云存储系统中的业务数据推送至所述用户端;
查询判断模块15,用于接收用户端发送的查询请求,提取所述查询请求的查询字段,并判断所述查询字段所查询的业务数据之间是否具有嵌套结构;
用户端查询模块16,用于根据所述查询字段从所述用户端中获取目标数据;
数据库查询模块17,用于根据所述查询字段从所述数据库中获取目标数据。
可选的,所述数据查询管理装置1还包括:
数据识别单元111,用于识别所述数据库中具有嵌套结构的业务数据;
队列加载单元112,用于将所述具有嵌套结构的业务数据保存至预置的异步消息队列中;
第一推送单元113,用于通过所述异步消息队列将所述具有嵌套结构的业务数据推送至所述云存储系统中。
可选的,所述数据查询管理装置1还包括:
第一更新模块12,用于更新所述云存储系统中业务数据,使所述云存储系统与所述数据库之间保持数据同步。
可选的,所述第一更新模块12还包括:
第一周期更新单元121,用于按照预置的时钟周期从所述数据库中获取具有嵌套结构的业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第一异步消息队列,并通过所述第一异步消息队列将所述云存储系统中的业务数据替换为所述更新数据,使所述云存储系统与所述数据库之间保持数据同步。
第一识别更新单元122,用于当识别出所述数据库中具有嵌套结构的业务数据出现更新时,将所述数据库中的业务数据载入预置的第二异步消息队列,并通过所述第二异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据。
第一监听更新单元123,用于当监听到所述数据库更新所述具有嵌套结构的业务数据所生成的更新信号时,将所述数据库中的业务数据载入预置的第三异步消息队列,并通过所述第三异步消息队列将所述业务数据推送至所述云存储系统,用以更新所述云存储系统中缓存的业务数据。
可选的,所述第二推送模块13还包括:
身份判断单元131,用于接收用户端发送的登陆信息,从预置的身份库中识别所述是否具有与所述登陆信息一致的身份信息。
权限确定单元132,用于从预置的权限库中获取与所述登陆信息对应的数据权限。
禁止登陆单元133,用于向所述用户端发送禁止登陆信息。
第二推送单元134,用于识别所述云存储系统中与所述数据权限匹配的业务数据,将所述业务数据推送至所述用户端,控制所述用户端缓存其接收到的业务数据。
可选的,所述数据查询管理装置1还包括:
第二更新模块14,用于更新所述用户端中的业务数据,使所述用户端和所述云存储系统之间保持数据同步。
可选的,所述第二更新模块14还包括:
第二周期更新单元141,用于按照预置的时钟周期从所述云存储系统中获取业务数据,并将所述业务数据设为更新数据,将所述更新数据载入预置的第四异步消息队列,并通过所述第四异步消息队列将所述用户端中的业务数据替换为所述更新数据,使所述云存储系统与所述用户端之间保持数据同步。
第二识别更新单元142,用于当识别出所述云存储系统中的业务数据出现更新时,将所述云存储系统中的业务数据载入预置的第五异步消息队列,并通过所述第五异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据。
第二监听更新单元143,用于当监听到所述云存储系统更新所述业务数据所生成的更新信号时,将所述云存储系统中的业务数据载入预置的第六异步消息队列,并通过所述第六异步消息队列将所述业务数据推送至所述用户端,用以更新所述用户端中缓存的业务数据。
可选的,所述查询判断模块15还包括:
数量计算单元151,用于识别所述数据库中与所述查询字段一致的元数据,获取所述元数据所在的数据表格,并计算所述数据表格的数量;其中,所述数据表格是用于记载所述业务数据,且通过所述元数据描述所述业务数据属性的数据结构。
非嵌套判定单元152,用于在所述表格数量有且只有一个时,判定所述查询字段所查询的业务数据之间不具有嵌套结构。
嵌套判定单元153,用于在所述表格数量为两个及两个以上时,判定所述查询字段所查询的业务数据之间是否具有嵌套结构。
本技术方案应用于云服务的云存储领域,通过获取所述数据库中的业务数据并将其推送至预置的云存储系统中,并根据用户端发送的登陆信息将所述云存储系统中的业务数据推送至所述用户端,实现通过消息队列将业务数据推送至云存储系统中,再通过消息队列将云存储系统中的业务数据推送至用户端。
实施例四:
为实现上述目的,本发明还提供一种计算机设备5,实施例三的数据查询管理装置的组成部分可分散于不同的计算机设备中,计算机设备5可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个应用服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图5所示。需要指出的是,图5仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例三的数据查询管理装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行数据查询管理装置,以实现实施例一和实施例二的数据查询管理方法。
实施例五:
为实现上述目的,本发明还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器52执行时实现相应功能。本实施例的计算机可读存储介质用于存储实现所述数据查询管理方法的计算机程序,被处理器52执行时实现实施例一和实施例二的数据查询管理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。