CN116069816A - 在sql模式下高效使用数据缓存的方法、装置及应用 - Google Patents
在sql模式下高效使用数据缓存的方法、装置及应用 Download PDFInfo
- Publication number
- CN116069816A CN116069816A CN202310136559.6A CN202310136559A CN116069816A CN 116069816 A CN116069816 A CN 116069816A CN 202310136559 A CN202310136559 A CN 202310136559A CN 116069816 A CN116069816 A CN 116069816A
- Authority
- CN
- China
- Prior art keywords
- level
- unique key
- query
- cache
- sql
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本方案提出了一种在SQL模式下高效使用数据缓存的方法、装置及应用,包括以下步骤:获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;获取缓存多层级复合唯一键,使用所述查询多层级复合唯一键对多个缓存多层级复合唯一键进行比较判断,将所述缓存多层级唯一键对应的缓存内容作为查询结果并输出。本方案可以排除名称等干扰因素准确高效的获取对应的缓存数据并输出。
Description
技术领域
本申请涉及大数据挖掘领域,特别涉及一种在SQL模式下高效使用数据缓存的方法、装置及应用。
背景技术
在大数据挖掘中有一种常用的通过模型进行分析的形式,主要是将数据分析的业务逻辑通过建模的形式固化在模型中,通过暴露一些条件参数来满足针对不同条件下相同业务场景的分析,在使用时经常需要通过SQL语句频繁地访问数据库中存储的大量数据,并通过数据库计算引擎对数据进行负载的读取、统计、计算等一系列操作后,返回最终符合条件的所有数据到客户端。在大数据环境下,数据的更新周期一般为一天,这就直接导致了数据库的数据总量会非常庞大,而数据挖掘分析占用的数据库资源也非常高,且大数据的挖掘和分析又需要经过多次不同条件的组合查询等逐步地调整分析方向和缩小数据范围,最终得到符合业务需求的结果,这就会导致数据挖掘分析需要对数据库的频繁调用,对数据库的计算资源和能力有很高的要求。
在现有技术中通常是通过SQL语句生成一个唯一键,并将对应唯一键的查询结果写入缓存中,当有其他用户使用相同的SQL语句进行调用时,通过在缓存中查找唯一键,如果存在唯一键就直接从缓存中读取对应的查询结果,而不需要去重新调用数据库的计算资源进行数据计算,大大减少了数据库的访问次数,增加了查询效率;当查询的唯一键不存在时再利用SQL语句去调用数据库的计算资源来查询数据,但是如果SQL语句大小写、别名、查询条件等稍微存在不同,生成的SQL语句就不同,则对应的缓存唯一键也就不同,这就会使得相同查询含义的SQL语句可能会对应不同的唯一键,进而导致SQL语句无法根据唯一键在缓存中进行命中,这就意味着相同查询含义的SQL语句依据是需要去访问数据库进行查询计算,这个弊端在大量用户对数据库进行计算分析的场景下尤其明显,目前这种唯一键的方式既不能满足快速数据分析挖掘的需要,又耗费了大量的数据库计算资源,综上所述,亟需一种当大量用户对数据库进行挖掘时可以通过SQL语句准确命中缓存的方法,从而节省大量数据库查询时间和数据库资源。
发明内容
本申请方案提供一种在SQL模式下高效使用数据缓存的方法、装置及应用,可以排除大小写不同和空格等干扰字符来对SQL语句构建查询多层级复合唯一键,从而实现对SQL语句高效合理的判断以获取对应的缓存数据。
第一方面,本申请提供一种在SQL模式下高效使用数据缓存的方法,包括:
获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键;以第一层级的所述查询多层级复合唯一键同所述缓存多层级复合唯一键进行比对,剔除表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留表名称完全相同且分组名称完全相同且字段名称为被包含关系且条件内容为包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
第二方面,本申请提供一种在SQL模式下高效使用数据缓存的装置,包括:
获取模块:获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
比对模块:将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键;以第一层级的所述查询多层级复合唯一键同所述缓存多层级复合唯一键进行比对,剔除表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留表名称完全相同且分组名称完全相同且字段名称为被包含关系且条件内容为包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
第三方面,本申请提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行一种在SQL模式下高效使用数据缓存的方法。
第四方面,本申请提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括一种在SQL模式下高效使用数据缓存的方法。
相较现有技术,本技术方案具有以下特点和有益效果:
本方案通过对SQL查询语句进行统一的语法树解析,将SQL查询语句解析成可以用来分析的对象数据,再根据SQL查询语句的结构依据独创的方法对每一SQL查询语句构建查询多层级复合唯一键,并且对所有的缓存数据以相同的构建方式构建缓存多层级复合唯一键,本方案在构建查询多层级复合唯一键的过程中统一非关键信息的大小写问题,从而消除因大小写不同、空格等干扰因素对查询的影响;本方案使用JSON的格式存储缓存多层次复合唯一键,且在进行定位判断时不再是简单的字符串比较,而是通过带业务属性的字段来判断,可以高效、合理的根据缓存多层级复合唯一键来定位缓存数据;本方案在比较判断时通过子集缓存和自过滤的方式来进行筛选,不仅提高了查询效率,更是极大的减少了数据库的计算资源和缓存资源的浪费,增加了用户并发数。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种在SQL模式下高效使用数据缓存的方法的流程示意图;
图2是对SQL查询语句进行语法树解析的示意图;
图3是构建缓存多层级复合唯一键的示意图;
图4是本方案与常规方法的区别对比图;
图5是根据本申请实施例的一种在SQL模式下高效使用数据缓存的装置的结构框图;
图6是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了便于对本方案进行理解,在此对本方案涉及的名字进行解释:
SQL技术:是一种特殊目的的编程语言,是一种数据库查询和程序设计的结构化查询语言,用于存取数据以及查询、更新和管理关系数据库系统。
JSON技术:是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
Redis技术:即远程字典服务,是一个开源的使用ANSI C语言编写,支持网络且可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
实施例一
本申请方案提供了一种在SQL模式下高效使用数据缓存的方法,参考图1,所述方法包括:
获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,并将对应的查询内容作为缓存内容;自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
在一些实施例中,在“获取SQL查询语句”步骤中,在后台的数据库调用和应用之间增加一个SQL拦截器用来拦截所述SQL查询语句,所有对数据库进行查询的SQL查询语句都要被SQL拦截器进行拦截解析,判断是否使用SQL查询语句直接对数据库进行查询,还是通过命中缓存内容来返回缓存的结果数据。
具体的,本方案不对SQL查询语句的生成进行限定,也就是说,不管是通过何种方式生成的SQL查询语句,本方案部署的SQL拦截器都会将其进行拦截并进行统一处理。
在一些具体实施例中,本方案采用的数据库为MySQL数据库。
在一些实施例中,在“对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单”步骤中,所述SQL清单中包含SQL查询语句中的层级信息、表信息、字段信息、条件信息、分组信息、函数信息。
具体的,所述层级信息为SQL查询语句的父层级对象、自身的层级;所述表信息为SQL查询语句的表数量、表名称;所述字段信息为SQL查询语句的字段数量、字段名称;所述条件信息为SQL查询语句的条件字段数量、条件内容;所述分组信息为SQL查询语句的分组字段数量、分组名称,所述函数信息为MySQL数据库的内置函数。
由于SQL查询语句的语法架构是相同的,故本方案通过语法树解析工具对SQL查询语句进行解析。在一些实施例中,本方案使用数据库连接池组件Druid中的内置函数Parser对所述SQL查询语句进行解析得到多层级SQL清单,所述数据库连接池组件Druid由阿里的数据库提供。但需要说明的是,本方案提及的语法树解析工具不做特别的限制。
具体的,虽然不同的数据库都有一些特有的关键字、语法和函数,但基本的SQL语句的语法架构是不会变的,使用数据库连接池组件Druid中的内置函数Parser对所述SQL查询语句进行解析会返回一个SQLStatement对象,所述SQLStatement对象即为所述多层级的SQL清单,所述SQL清单包含的详细内容如图2所示。
具体的,通过对SQL查询语句进行语法树解析,可以将不可分析的文本文件转换为可分析的有层次的对象,同时分析各种关键字信息,找出影响缓存内容的相关因素以及可以使用子集缓存的各种条件。
在一些具体实施例中,在“根据所述SQL清单构建查询多层级复合唯一键”步骤之前,包括步骤:将所述SQL查询语句中的信息分为关键信息和非关键信息,所述关键信息为影响SQL查询语句业务含义的信息,所述非关键信息为不影响SQL查询语句业务含义的信息,并将所述非关键信息转换为小写。这样做的好处在于:避免编写SQL查询语句时的大小写差异而导致的查询误差问题,且本方案将SQL查询语句中的信息转换为关键信息和非关键信息的方式可避免对SQL查询语句的业务含义的改变。
进一步的,在“将所述非关键信息转换为小写”步骤中,将所述SQL清单中的表名称、字段名称转换为小写。
具体的,所述关键信息为影响SQL查询语句业务含义的信息,所述非关键信息为不影响SQL查询语句业务含义的信息。
具体的,由于在编写SQL时表名称的大小写差异,在传统的处理过程中会将大小写不同的表名当做不同的表,使得对应的缓存不可用,但是如果将整个SQL语句转化为小写,则容易将一些条件字段中的大写内容也转换为小写,导致改变SQL语句的业务含义,因此只将表名称、字段名称、关键字这种不影响业务含义的元素转换成小写。
具体的,通过将非关键信息转换成小写后构建缓存查询多层级复合唯一键可以排除因大小写不同、空格等干扰因素的影响,从而进行快速查询。
在一些具体实施例中,所述缓存多层级复合唯一键可以表示成如图3所示的形式,其中PL为父层级对象,L为层级,TQ为表数量,TS为表名称,FQ为字段数量,FS为字段名称,WQ为条件字段数量,WS为条件内容,GQ为分组字段数量,GS为分组名称。
具体的,采用JSON技术来表示所述缓存多层级复合唯一键,所述缓存多层级复合唯一键的表现形式为:{PL:{父层级对象},L:层级,TQ:表数量,TS:[表名称],FQ:字段数量,FS:[字段名称],WQ:条件字段数量,WS:[条件内容],GQ:分组字段数量,GS:[分组名称名称]}。
本方案的缓存多层级复合唯一键中的层级是通过所述SQL清单来进行构建的,所述SQL清单中最内层级的查询条件为层级一,上一层级的查询条件为层级二,依次类推得到所述缓存多层级复合唯一键的层级信息。
在一些实施例中,在“将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键”步骤中,将所述查询多层级复合唯一键中使用的别名转换为原始名称。
另外,需要说明的是本方案的缓存多层级复合唯一键不存储表和字段的别名,这是由于同样的表或字段,就算别名不一样,但是代表的含义一样,因此别名的大小写和不同,不影响SQL所表达的业务含义;但若上一层级的SQL查询语句使用到的别名需要转换为原始名称后再判断是否纳入缓存多层级复合唯一键中。
具体的,采用JSON技术来表示缓存多层级复合唯一键的好处在于将原本的缓存单一键转换为分层次、有业务含义的缓存多层级复合唯一键,在保证键值唯一的同时,又具备一定的业务属性抽象能力,可以对SQL查询语句和缓存多层级复合唯一键进行一定逻辑上的查找和比对,从而快速确定复合条件的缓存内容。
在一些实施例中,所述缓存多层级复合唯一键中的表名称、字段名称以数组的形式进行存储。
具体的,将所述表名称、字段名称以数组的形式进行存储可以方便后续的查找定位,增强数据挖掘的效率。
在一些实施例中,在“将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键”步骤中,采用父缓存机制对所有的缓存多层级复合唯一键进行管理,构建一个固定唯一键,所述固定唯一键对应的值为缓存列表,所述缓存列表中保存所有的缓存多层级复合唯一键。
具体的,本方案采用Redis技术来提供集中式的数据缓存服务,使用Redis技术的好处在于性能高、速度快,且能提供相关集群保障高可用性。
具体的,由于常用的缓存服务Redis技术当数据量比较大时,通过常规的遍历方式很容易阻塞Redis服务,从而造成服务不可用,同时由于缓存多层级复合唯一键比较散乱,无法形成有效的管理,所以采用父缓存机制,增加的固定唯一键为SUB_DATA_CACHE,其对应的值为所有的缓存多层级复合唯一键,当通过多层级复合唯一键进行缓存的查找定位时,只需读取所述固定唯一键中的所有的值,并对其进行遍历即可。
具体的,采用JSON格式来构建缓存多层级复合唯一键,同时采用固定唯一键对多个缓存多层级复合唯一键进行再次组织,增加了比对判断的效率,通过对多个缓存多层级复合唯一键进行快速遍历可以高效的找出各种缓存数据。
在一些实施例中,在“自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键”步骤中,比对当前层级的所述查询多层级复合唯一键和上一层级比对后保留得到的缓存多层级复合唯一键。也就是说,本方案首先比对第一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,若第一层级的缓存多层级复合唯一键全部不满足筛选条件,则无需进行后续层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键的比对。
由于本方案的查询多层级复合唯一键是按照层次顺序依次书写的,故在一些实施例中,根据所述查询多层级复合唯一键的组成顺序从左到右进行比对,这样做的目的是提高查询效率。具体的,若上一层级的筛选条件都无法符合,则无需进行后续层级的判断。
在“剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后”步骤中,剔除当前层级的表数量和查询多层级复合唯一键的表数量不一致的的缓存多层级复合唯一键、或者剔除当前层级的字段数量和查询多层级复合唯一键的字段数量不一致的缓存多层级复合唯一键、或者剔除当前层级的条件字段数量和查询多层级复合唯一键的条件字段数量不一致的缓存多层级复合唯一键、或者剔除当前层级的分组字段数量和查询多层级复合唯一键的分组字段数量不一致的缓存多层级复合唯一键。
在“保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键”步骤中,保留当前层级的表名称和查询多层级复合唯一键的表名称完全一致的缓存多层级复合唯一键、且保留当前层级的分组名称和查询多层级复合唯一键的分组名称完全一致的缓存多层级复合唯一键、且保留当前层级的字段名称和查询多层级复合唯一键的字段名称为包含关系的缓存多层级复合唯一键、且保留当前层级的条件内容和查询多层级复合唯一键的查询内容为被包含关系的缓存多层级复合唯一键。
具体的,“且保留当前层级的字段名称和查询多层级复合唯一键的字段名称为包含关系的缓存多层级复合唯一键”指的是:所述缓存多层级复合唯一键的字段名称包含所述查询多层级复合唯一键的字段名称,且所述查询多层级复合唯一键的字段少于所述缓存多层级复合唯一键。
具体的,“且保留当前层级的条件内容和查询多层级复合唯一键的查询内容为被包含关系的缓存多层级复合唯一键”指的是:所述查询多层级复合唯一键的条件内容要包含所述缓存多层级复合唯一键的条件内容,且所述缓存多层级复合唯一键的条件内容要少于所述查询多层级复合唯一键。
具体的,在特定示例中,将所述查询多层级复合唯一键命名为V,将所述缓存多层级复合唯一键名为为V’,则所述查询多层级复合唯一键的组成格式为{PL:{父层级对象},L:[层级],TQ:表数量,TS:[表名称],FQ:字段数量,FS:[字段名称],WQ:条件字段数量,WS:[条件内容],GQ:分组字段数量,GS:[分组名称]},所述缓存多层级复合唯一键的组成格式为{PL’:{父层级对象},L’:层级,TQ’:表数量,TS’:[表名称],FQ’:字段数量,FS’:[字段名称],WQ’:条件字段数量,WS’:[条件内容],GQ’:分组字段数量,GS’:[分组名称]}。
首先对V中L为1的键进行比较判断,判断V中的TQ,当V中的TQ和V’中的TQ’不一致时,说明V和V’查询的表的数量不一致,肯定无法使用V’的缓存,所以直接在缓存列表中获取下一个V’进行比较判断,同样的判断逻辑还有FQ大于FQ’、WQ大于WQ’、GQ不等于GQ’等,本方案在此不再赘述。
当V的TQ和V’的TQ’相同时,则需要再进一步比较TS和TS’是否完全一致,由于前文已经将表名和字段名以数组的形式进行存储,所以若TS和TS’的差集为空,则表示TS和TS’完全一致,不需要关心内部的表、字段由于顺序的不一致导致无法匹配的问题,可以极大的提升比较的速度且减少了比较的复杂度,同样的判断逻辑适用于GQ和GQ’的比较,本方案再次不再赘述。
若FS的数量少于FS’的数量,且FS’完全包含FS,则说明V中所需要使用的字段是V’的一个子集,可以直接使用已缓存的字段信息。
若WS的数量多于WS’,且WS完全包含WS’,则说明V中所需要使用的字段是在V’的条件基础上进一步缩小的条件,所以可以直接使用已缓存的信息。
若FS的数量大于FS’的数量,且FS完全包含FS’,则说明V’中所需要使用的字段是V的一个子集,则在数据库中获取FS的缓存内容替换FS’的缓存内容。
重复上述所有的比较判断方式,直到最终找到一个符合条件的缓存多层级复合唯一键或者没有找到任何可以对应的缓存多层级复合唯一键,若没有找到可以对应的缓存多层级复合唯一键,则调用数据库执行SQL查询语句,将返回结果加载到Redis缓存,并将对应的查询多层次复合唯一键作为新的缓存多层级复合唯一键,方便后续查询。
在“将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出”步骤中,若保留有多个缓存多层级复合唯一键,则根据匹配的关键字数量和层级数量来确定唯一的缓存多层级复合唯一键,所述关键字为所述查询多层级复合唯一键的组成内容。
在一些实施例中,在“将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出”步骤中,若所述查询多层级复合唯一键相对于保留的缓存多层级复合唯一键的字段名称为包含关系,则对缓存内容进行裁剪后输出,若所述查询多层级复合唯一键相对于保留的缓存多层级复合唯一键的条件内容为被包含关系,则对所述查询多层级复合唯一键中多余的条件内容解析出来,并根据解析内容重新进行子集过滤后输出。
具体的,“对缓存内容进行裁剪后输出”为:根据所述查询多层级复合唯一键所需的查询内容对所述缓存多层级复合唯一键的缓存内容进行裁剪,使所述查询内容等于所述缓存内容。
具体的,“对所述查询多层级复合唯一键中多余的条件内容解析出来,并根据解析内容重新进行子集过滤后输出”为:将所述缓存多层级复合唯一键的缓存内容提取出来,根据所述缓存内容删除掉所述查询多层级复合唯一键中的部分条件内容,删除的部分条件内容对应的查询内容等于所述缓存内容,使用剩下的部分条件内容重新进行比对。
具体的,若所述缓存多层级复合唯一键与所述查询多层级复合唯一键完全匹配,则直接获取缓存多层级复合唯一键的缓存内容进行返回,若对应的FS是FS’的子集,则对缓存的数据进行字段裁剪后输出,若对应的WS’是WS的子集,则需要将WS中多余的条件字段和条件解析出来,根据多余的条件字段和条件对缓存数据进行子集过滤并返回,具体的,进行子集过滤的目的是进一步缩小数据范围并返回结果。
综上所述,图4为本方案与常规方法的区别对比图,本方案可以对任何形式生成的SQL查询语句进行拦截,进行统一的语法树解析后将SQL查询语句转换为可以用来分析优化的对象数据,并找出其中的关键字构建查询多层级复合唯一键;并将以获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,同时对于缓存多层级复合唯一键以JSON格式进行分层级分类存储;本方案将查询多层级复合唯一键和缓存多层级复合唯一键进行比对,且不同于简单的字符串比对,而是通过关键字所带的业务属性进行高效合理的判断是否存在近似的缓存多层级复合唯一键,并且可以排除由于大小写不同、空格等干扰因素,来得到合适的缓存内容并直接返回结果,无需去数据库中进行重新弄查询,不仅提高了查询效率,更是极大的减少了数据库计算资源和缓存资源的浪费,增加了用户的并发数。
实施例二
基于相同构思,参考图5,本申请还提出了一种在SQL模型下高效使用数据缓存的装置,包括:
获取模块:获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
比对模块:将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,并将对应的查询内容作为缓存内容;自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
实施例三
本实施例还提供了一种电子装置,参考图6,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项在SQL模式下高效使用数据缓存的方法实施例中的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemory,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-OnlyMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-AccessMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMemory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRandom-AccessMemory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种在SQL模式下高效使用数据缓存的方法的实施过程。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是SQL查询语句等,输出的信息可以是缓存内容等。
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
S101、获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
S102、将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,并将对应的查询内容作为缓存内容;自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图6中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种在SQL模式下高效使用数据缓存的方法,其特征在于,包括:
获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,并将对应的查询内容作为缓存内容;自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
2.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,在“对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单”步骤中,所述SQL清单中包含SQL查询语句中的层级信息、表信息、字段信息、条件信息、分组信息、函数信息。
3.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,在“根据所述SQL清单构建查询多层级复合唯一键”步骤之前,包括步骤:将所述SQL查询语句中的信息分为关键信息和非关键信息,所述关键信息为影响SQL查询语句业务含义的信息,所述非关键信息为不影响SQL查询语句业务含义的信息,并将所述非关键信息转换为小写。
4.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,所述缓存多层级复合唯一键中的表名称、字段名称以数组的形式进行存储。
5.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,在“将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键”步骤中,采用父缓存机制对所有的缓存多层级复合唯一键进行管理,构建一个固定唯一键,所述固定唯一键对应的值为缓存列表,所述缓存列表中保存所有的缓存多层级复合唯一键。
6.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,在“自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键”步骤中,比对当前层级的所述查询多层级复合唯一键和上一层级比对后保留得到的缓存多层级复合唯一键。
7.根据权利要求1所述的一种在SQL模式下高效使用数据缓存的方法,其特征在于,若所述查询多层级复合唯一键相对于保留的缓存多层级复合唯一键的字段名称为被包含关系,则对缓存内容进行裁剪后输出,若所述查询多层级复合唯一键相对于保留的缓存多层级复合唯一键的条件内容为包含关系,则对所述查询多层级复合唯一键中多余的条件内容解析出来,并根据解析内容重新进行子集过滤后输出。
8.一种在SQL模式下高效使用数据缓存的装置,其特征在于,包括:
获取模块:获取SQL查询语句,对所述SQL查询语句进行多层级语法树解析得到多层级的SQL清单,根据所述SQL清单构建查询多层级复合唯一键,所述查询多层级复合唯一键由父层级对象、层级、表数量、表名称、字段数量、字段名称、条件字段数量、条件内容、分组字段数量以及分组名称组成;
比对模块:将已获取查询内容的查询多层级复合唯一键记录为缓存多层级复合唯一键,并将对应的查询内容作为缓存内容;自第一层级起依层级次序比对每一层级的所述查询多层级复合唯一键和所述缓存多层级复合唯一键,剔除每一层级的表数量不一致或字段数量小于或条件字段数量小于或者分组字段数量不一致的缓存多层级复合唯一键后,保留每一层级的表名称完全相同且分组名称完全相同且字段名称为包含关系且条件内容为被包含关系的缓存多层级复合唯一键,将保留的缓存多层级复合唯一键的缓存内容作为查询结果并输出。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1到7任一所述的一种在SQL模式下高效使用数据缓存的方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1到7任一所述的一种在SQL模式下高效使用数据缓存的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310136559.6A CN116069816A (zh) | 2023-02-07 | 2023-02-07 | 在sql模式下高效使用数据缓存的方法、装置及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310136559.6A CN116069816A (zh) | 2023-02-07 | 2023-02-07 | 在sql模式下高效使用数据缓存的方法、装置及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116069816A true CN116069816A (zh) | 2023-05-05 |
Family
ID=86174810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310136559.6A Pending CN116069816A (zh) | 2023-02-07 | 2023-02-07 | 在sql模式下高效使用数据缓存的方法、装置及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069816A (zh) |
-
2023
- 2023-02-07 CN CN202310136559.6A patent/CN116069816A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107092656B (zh) | 一种树状结构数据处理方法及系统 | |
US20170083573A1 (en) | Multi-query optimization | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN100550019C (zh) | 面向对象的数据库访问方法及系统 | |
CN109313640B (zh) | 用于数据库优化的方法和系统 | |
CN107016071B (zh) | 一种利用简单路径特征优化树状结构数据的方法及系统 | |
US20150006509A1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
WO2019233117A1 (zh) | 一种联机分析处理引擎的路由方法、装置及设备 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
US20230315727A1 (en) | Cost-based query optimization for untyped fields in database systems | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN115269631A (zh) | 数据查询方法、数据查询系统、设备及存储介质 | |
CN113468209A (zh) | 一种电网监控系统高速内存数据库访问方法 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
US9659061B2 (en) | Method for efficient aggregation of numerous data using sparse bit sets | |
CN116069816A (zh) | 在sql模式下高效使用数据缓存的方法、装置及应用 | |
CN114281842A (zh) | 一种数据库分表查询的方法及设备 | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
CN112506953A (zh) | 基于结构化查询语言sql的查询方法、装置及存储介质 | |
EP3436988B1 (en) | "methods and systems for database optimisation" | |
CN117472910B (zh) | 一种同态压缩数据处理方法和系统 | |
CN115248829A (zh) | 数据存储方法、数据查询方法及装置 | |
CN115017194A (zh) | 一种社区信息处理方法及系统 | |
CN117931859A (zh) | 一种缓存管理方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |