基于持久层框架的数据查询方法及装置制造方法及图纸

技术编号:20916225 阅读:19 留言:0更新日期:2019-04-20 09:38
本发明专利技术提供了一种基于持久层框架的数据查询方法及装置,其中,该方法包括:接收用户在持久层框架的应用中发起的查询请求;根据查询请求,确定待查询数据是否命中缓存数据;在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。上述技术方案提高了系统的处理性能。

Data Query Method and Device Based on Persistent Layer Framework

The invention provides a data query method and device based on the persistent layer framework, which includes: receiving query requests initiated by users in the application of the persistent layer framework; determining whether the data to be queried hits the cached data according to the query requests; returning the cached data to be queried as the query result when the data to be queried hits the cached data; and returning the cached data as the query result when the data to be quer When the data does not hit the cached data, the database query operation is carried out, and the data obtained from the database is returned as the query result. The above technical scheme improves the processing performance of the system.

【技术实现步骤摘要】
基于持久层框架的数据查询方法及装置
本专利技术涉及数据处理
,特别涉及一种基于持久层框架的数据查询方法及装置。
技术介绍
在一个需要使用数据库的高并发应用场景,为减少数据库操作,往往会对一些不经常变化的数据表的查询采用缓存处理方式。对于使用持久层框架例如ibatis框架的app应用,一般会采用ibatis提供的缓存机制,但ibatis的缓存机制是在映射层实现的(可参考ibatis源码CachingStatement的实现),同样会占用数据库连接,只是减少了数据库执行操作。在数据库连接资源紧张的情况下,即使命中了缓存数据,也会因为获取连接慢而影响系统的处理性能。
技术实现思路
本专利技术实施例提供了一种基于持久层框架的数据查询方法,用以提高系统的处理性能,该方法包括:接收用户在持久层框架的应用中发起的查询请求;根据所述查询请求,确定待查询数据是否命中缓存数据;在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。本专利技术实施例还提供了一种基于持久层框架的数据查询装置,用以提高系统的处理性能,该装置包括:接收单元,用于接收用户在持久层框架的应用中发起的查询请求;确定单元,用于根据所述查询请求,确定待查询数据是否命中缓存数据;查询返回单元,用于在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述基于持久层框架的数据查询方法。本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行基于持久层框架的数据查询方法的计算机程序。与现有技术中获取查询数据时,在Statement层实现缓存处理的方案相比较,本专利技术实施例提供的技术方案,通过接收用户在持久层框架的应用中发起的查询请求;根据所述查询请求,确定待查询数据是否命中缓存数据;在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回,实现了在数据库操作外层优先检查缓存数据,如果命中缓存则不再进行数据库操作,也就不存在获取连接等后续数据库操作,从而提高了系统的处理性能。本专利技术实施例提供的方案适用于持久层框架应用,例如:ibatis、MyBatis等。同时,也适用于不使用数据库框架而自行实现数据库操作的应用。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,并不构成对本专利技术的限定。在附图中:图1是本专利技术实施例中基于持久层框架的数据查询方法的流程示意图;图2是本专利技术实施例中基于持久层框架的数据查询方法的原理示意图图3是本专利技术实施例中时间缓存法的流程示意图;图4是本专利技术实施例中最大缓存条数法的流程示意图;图5是本专利技术实施例中基于持久层框架的数据查询装置的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本专利技术做进一步详细说明。在此,本专利技术的示意性实施方式及其说明用于解释本专利技术,但并不作为对本专利技术的限定。在介绍本专利技术实施例之前,首先对本专利技术实施例涉及的技术名称进行介绍。1、IBATIS:IBATS一词来源于“internet”和“abatis”的组合,是由ClintonBegin在2002年发起的开放源代码项目。于2010年6月16日被谷歌托管,更名为为MyBatis,它是一个基于SQL映射支持JAVA和.NET的持久层框架。所以本专利技术也适用于MyBatis,同时本专利技术实现原理也同样适用于不使用数据库框架而自行实现数据库操作的应用。2、命中缓存:缓存数据是存储在应用内存当中的,如果要查询的数据已经存储在内存当中,则称为“命中缓存”,否则就是“没有命中缓存”。3、数据库连接池:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个,因此它能够显著地提高数据库操作的性能。绝大部分成熟的中间件都支持配置数据库连接池,如jboss、weblogic、websphere、tomcat等。专利技术人发现:由于IBATIS缓存机制的实现,是先获取数据库连接,然后检查是否命中缓存数据,如果命中缓存数据则释放连接返回缓存数据中存储的结果集。因为无论查询结果是否命中缓存数据,它都会有获取数据库连接、释放数据库连接的操作,所以会造成连接资源的争抢,为解决资源紧张问题就需要配置更高的连接数,因此会使数据库连接资源成本提高。如果连接资源紧张,即使用不到该连接资源也会产生等待资源释放的时间消耗,也会造成处理时间慢的现象。IBATIS缓存机制处理就是一种提高数据库性能的方案,本专利技术的初衷也是基于IBATIS的缓存机制实现提出的一种优化方案。无论是使用IBATIS框架还是使用其他方式进行数据库操作,一般都遵循于以下基本步骤:1.通过数据源DataSource获取数据库连接Connection;2.通过数据库连接Connection创建或使用Statement;3.通过Statement实现数据库CRUD操作(CRUD:creat-增加、read-读取、update-更新、delete-删除);4.返回执行结果Result对象;5.释放或关闭连接Connection。IBATIS的数据处理也基本遵循上述步骤,但由于其缓存机制的处理是在Statement层实现的,所以无论查询结果是否会命中缓存数据,IBATIS的查询处理都会执行获取连接的操作。在系统进行高并发处理时,数据库连接也是紧张资源,在获取数据库连接时,如果当前无可用连接,则在指定时间内进行等待,直到获取可用连接或获取连接超时。所以有时会存在一种现象:对于一组查询,配置了ibatis缓存处理,并且查询结果能够命中缓存数据,但是执行时间却很长(理论命中缓存数据的话,执行时间应在1毫秒以内),通过跟踪分析,发现其实时间就是消耗在了获取数据库连接上。数据库连接是一种关键的、有限的、昂贵的资源,这一点在高并发的应用程序中体现的尤为突出。对数据库连接的管理能显著影响整个系统的伸缩性和健壮性,影响到系统的性能指标。最优秀的数据库优化其实是不使用数据库,而是在最大程度上不使用数据库,从而最大程度上提高系统的处理性能。因此,考虑到上述技术问题,专利技术人提出了一种基于持久层框架的数据查询方案,该方案从最大程度上规避数据库操作,从而就不会造成资源争抢现象,节省了资源成本,因此也不会因为等待资源而产生时间上的消耗。该基于持久层框架的数据查询方案主要包括的步骤:1.根据查询语句sqlId、查询条件判断是否命中缓存数据,如果命中缓存数据则直接使用命中的缓存数据作为查询结果返回。2.如果没有命中缓存数据,则进行普通的数据库查询,从数据库中获取数据。3.如果从数据库中查询的结果不为空,则判断该查询是否进行了缓存配置,如果配置了缓存处理则将数据放到缓存当中。4.返回查询结果(有可能是缓存获取,也有可能是数据库获取)。通过以上流程本文档来自技高网...

【技术保护点】
1.一种基于持久层框架的数据查询方法,其特征在于,包括:接收用户在持久层框架的应用中发起的查询请求;根据所述查询请求,确定待查询数据是否命中缓存数据;在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。

【技术特征摘要】
1.一种基于持久层框架的数据查询方法,其特征在于,包括:接收用户在持久层框架的应用中发起的查询请求;根据所述查询请求,确定待查询数据是否命中缓存数据;在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。2.如权利要求1所述的基于持久层框架的数据查询方法,其特征在于,根据所述查询请求,确定待查询数据是否命中缓存数据,包括:获取所述查询请求的SQL语句ID;根据所述查询请求的SQL语句ID,将查询条件生成待查询缓存键值Key;根据所述待查询缓存键值Key,以及预先存储的缓存键值Key与缓存对象的关系,确定待查询缓存键值Key对应的缓存对象;在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回,包括:在所述待查询缓存键值Key为空时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。3.如权利要求1所述的基于持久层框架的数据查询方法,其特征在于,在待查询数据命中缓存数据时,使用命中的缓存数据作为查询结果返回,包括:在待查询数据命中缓存数据时,确定命中的缓存数据的有效性;若确定无效时,清除命中的缓存数据,返回缓存数据为不可用的查询信息;若确定有效时,使用命中的缓存数据作为查询结果返回;所述基于持久层框架的数据查询方法还包括:在接收到缓存数据为不可用的查询信息时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回。4.如权利要求1所述的基于持久层框架的数据查询方法,其特征在于,在待查询数据没有命中缓存数据时,进行数据库查询操作,将从数据库中获取的数据作为查询结果返回,包括:若从数据库中查询的结果不为空时,确定所述查询请求是否进行了缓存配置;若确定进行了缓存配置,将从数据库中获取的数据作为查询结果返回,并将所述获取的数据加载到持久层框架应用的缓存中。5.如权利要求4所述的基于持久层框架的数据查询方法,其特征在于,若确定进行了缓存配置,将从数据库中获取的数据作为查询结果返回,并将所述获取的数据加载到持久层框架应用的缓存中,包括:若确定进行了缓存配置,检查当前缓存数据是否达到预先配置的最大条数;若当前缓存数据大于或等于预先配置的最大条数时,将缓存中预设日期之前或小于预设使用次数的历史缓存数据删除;将当前缓存数据加载到持久层框架应用的缓存中。6.一种基于持久层框架的数据查询装置,其特征在于,包括:接收单...

【专利技术属性】
技术研发人员:苗海柱
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1