CN103049506A - 移动设备的数据缓存方法及其系统 - Google Patents

移动设备的数据缓存方法及其系统 Download PDF

Info

Publication number
CN103049506A
CN103049506A CN201210536626.5A CN201210536626A CN103049506A CN 103049506 A CN103049506 A CN 103049506A CN 201210536626 A CN201210536626 A CN 201210536626A CN 103049506 A CN103049506 A CN 103049506A
Authority
CN
China
Prior art keywords
predicate
query
inquiry
buffer memory
module
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.)
Granted
Application number
CN201210536626.5A
Other languages
English (en)
Other versions
CN103049506B (zh
Inventor
李东
陈锐
徐杨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201210536626.5A priority Critical patent/CN103049506B/zh
Publication of CN103049506A publication Critical patent/CN103049506A/zh
Application granted granted Critical
Publication of CN103049506B publication Critical patent/CN103049506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

移动设备的数据缓存方法,包括:查询解析与分类,查询匹配,谓词化简,判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;剩余查询裁剪,数据通信,服务端,缓存更新和数据存储。移动设备的数据缓存系统,包括:查询解析与分类模块,查询匹配模块,谓词化简模块,剩余查询裁剪模块,数据通信模块,服务端模块,缓存更新模块,数据存储模块。具有裁剪效率高、降低了查询处理时空消耗快速递增的趋势和缓存管理的效率与重复利用率高等优点。

Description

移动设备的数据缓存方法及其系统
技术领域
本发明涉及一种数据缓存技术,特别涉及一种在移动计算设备中通过将查询结果和相关语义信息进行缓存、并利用语义为查询提供解答的移动设备的数据缓存方法及其系统。
背景技术
缓存技术是一项能较好解决移动环境下数据访问性能的技术,通过对数据进行缓存,可以降低移动计算设备访问网络的延迟以及带宽消耗。传统的客户端缓存主要包括页面缓存、元组缓存,两者的缓存技术都采用基于数据导航的访问模式,而对于关联访问的支持是很有限的,为了解决基于关系型数据库的缓存,可采用语义缓存的方式。语义缓存技术是一种基于语义描述及其结果集的缓存技术,相对传统的页缓存和元组缓存技术,它具备明显优势:节约网络开销,节省缓存容量,支持并发处理,支持网络断接.这使得语义缓存技术在移动计算环境下有非常广阔的应用前景;因为移动设备资源有限,语义缓存只能缓存被用户频繁访问的那部分数据集。当用户发出查询请求时,查询所要求的结果集可能只有部分或完全没有被缓存包含。因此,语义缓存需要对用户查询请求进行裁剪以获得本地缓存可以处理的探测查询(probe query)和必须送服务器处理的剩余查询(remainder query)。查询裁剪快速执行和裁剪结果简单是语义缓存具有实用价值的关键条件。如果查询裁剪过程过于复杂或者裁剪出的探测查询和剩余查询复杂度太高,都会使得查询处理的执行效率大大降低。现有的语义缓存查询处理机制在时空效率和裁剪结果复杂度两方面存在很大的局限性。给出的查询处理算法都只是利用逻辑与运算和逻辑差运算裁剪出探测查询和剩余查询,它们都没有对与运算和差运算的时空复杂性进行充分的考虑。虽然利用这些算法可以求得探测查询和剩余查询,但是查询处理算法的时空效率很低。在语义缓存合并策略方面,虽然给出了几个典型的合并策略,但是没有分情况进行讨论,而且对于某些复杂的查询,典型的合并策略并不是最优化的。因此,对于语义缓存的查询处理,需要有更好的优化机制来简化其裁剪过程,使得查询处理的时空复杂度尽量小,并且要降低查询处理时空消耗的快速递增趋势。
发明内容
本发明的首要目的在于克服现有技术的缺点与不足,提供一种移动设备的数据缓存方法,该方法大大减小了裁剪过程中谓词的数目,具有裁剪效率高,降低了查询处理时空消耗快速递增的趋势的特点。
本发明的另一目的在于克服现有技术的缺点与不足,提供一种移动设备的数据缓存系统。该系统能够增加缓存管理的效率和重复利用率,实用性强。
本发明的首要目的通过下述技术方案实现:移动设备的数据缓存方法,包括:
查询解析与分类,对用户发出的查询进行解析得到查询的内存表示形式,并把查询分为简单查询和复杂查询这两种类型;
查询匹配,将解析后的查询与语义缓存进行查询匹配,得到待裁剪的缓存段,将待裁剪的缓存段组合成一个带谓词析取式的缓存;
谓词化简,判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;
剩余查询裁剪,化简后的缓存与查询进行裁剪,得到剩余查询;
数据通信,将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果;
服务端,接收剩余查询,并返回剩余查询的查询结果;
缓存更新,根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储,将查询结果与查询进行存储;
其中,简单查询包括关系表,属性集合,简单谓词集合和查询被提交的时间;简单谓词集合又包括简单查询谓词、简单查询操作和简单查询值;简单谓词集合限定每个简单查询谓词的名称相同,简单查询操作限定为数值比较操作,所述数值比较操作为大于、小于、等于、大于等于或小于等于,简单查询值为数值型,所述数值型为整形、浮点型或双精度浮点型;
复杂查询包括关系表,属性集合,复杂谓词集合和查询被提交的时间;复杂谓词集合又包括复杂查询谓词、复杂查询操作和复杂查询值;复杂谓词集合中复杂查询谓词的类型不限,复杂查询操作为包含、不包含、大于、小于、等于、大于等于或小于等于,复杂查询的类型为字符串型、整型、浮点型或双精度浮点型。
缓存合并,针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并。
界面显示,与用户进行人机交互。
本发明的另一目的通过下述技术方案实现:移动设备的数据缓存系统,包括:
查询解析与分类模块,用于对用户发出的查询进行解析得到查询的内存表示形式,并把查询分为简单查询和复杂查询这两种类型;
查询匹配模块,用于将解析后的查询与语义缓存进行查询匹配,得到待裁剪的缓存段,将待裁剪的缓存段组合成一个带谓词析取式的缓存;
谓词化简模块,用于判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;
剩余查询裁剪模块,用于将化简后的缓存与查询进行裁剪,得到剩余查询;
数据通信模块,用于将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果;
服务端模块,用于接收剩余查询,并返回剩余查询的查询结果;
缓存更新模块,用于根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储模块,用于将查询结果与查询进行存储;
缓存合并模块,用于针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并。
界面显示模块,用于与用户进行人机交互。
本发明的作用原理:本发明实施例提供移动计算设备数据缓存方法及其系统,能够在移动设备端缓存查询的语义和对应的查询结果数据,并对用户发出的查询提供解答对查询进行解析,将解析后的查询与缓存进行匹配、裁剪和谓词化简;查询解析与分类模块、查询匹配模块、谓词化简模块、剩余查询裁剪模块、数据通信模块、缓存更新模块、数据存储模块、缓存合并模块和界面显示模块作为一个整体用于移动计算设备上数据的缓存,缓存的方式是利用本地缓存的语义信息进行推理,从而确定客户查询是否可在本地被完全解答或部分解答,语义缓存的理论基础是利用用户查询的语义局部性,即用户查询之间的语义相关性来重用缓存数据,实现了用户从查询输入到查询结果的显示,并且还与服务端模块进行数据通信实现剩余查询,然后对查询和缓存进行合并,最后根据服务端模块返回的剩余查询的查询结果对缓存进行更新,并且对更新后的缓存进行存储。
本发明相对于现有技术具有如下的优点及效果:
(1)裁剪效率高,降低了查询处理时空消耗快速递增的趋势;本发明采用了一系列优化规则和一种基于谓词复杂度的查询化简策略,谓词复杂度由缓存中谓词的数目决定;基于谓词复杂度,对语义缓存的查询进行分类,分为简单查询和复杂查询;对于简单查询,提出了优化的逻辑规则进行优化查询裁剪,大大减小了裁剪过程中谓词的数目,提高了裁剪效率;对于复杂查询,提出了基于谓词复杂度的语义缓存动态合并策略,能根据缓存与裁剪语句的谓词数目来决定缓存的合并,降低了查询处理时空消耗快速递增的趋势。
(2)缓存管理的效率和重复利用率高,实用性高;本发明利用用户查询的语义局部性,即用户查询之间的语义相关性来重用缓存数据,对语义缓存进行分类,提供了一种较佳的语义缓存查询处理流程,该流程相比其他语义缓存查询处理方法,有明显的优势,通过将用户查询分类,不同的查询类型执行不同的谓词优化方法,使得查询的谓词复杂度大大降低,另外,不同的查询类型执行不同的缓存合并策略,能够增加缓存管理的效率和重复利用率,两种优化方法相结合能够大幅提高此种缓存方法的有效性和实用性。
附图说明
图1是本发明实施例的移动计算设备数据缓存方法流程图。
图2是本发明实施例的移动计算设备数据缓存系统结构框图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
为使本发明实施例的目的、技术方案和优点更加清晰,下面结合附图作进一步的详细说明。
如图1所示,移动设备的数据缓存方法,包括:
查询解析与分类,对用户发出的查询进行解析得到查询的内存表示形式,并把查询分为简单查询和复杂查询这两种类型;
查询匹配,将解析后的查询与语义缓存进行查询匹配,得到待裁剪的缓存段,将待裁剪的缓存段组合成一个带谓词析取式的缓存;
谓词化简,判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;
剩余查询裁剪,化简后的缓存与查询进行裁剪,得到剩余查询;
数据通信,将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果;
服务端,接收剩余查询,并返回剩余查询的查询结果;
缓存更新,根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储,将查询结果与查询进行存储;
其中,简单查询包括关系表,属性集合,简单谓词集合和查询被提交的时间;简单谓词集合又包括简单查询谓词、简单查询操作和简单查询值;简单谓词集合限定每个简单查询谓词的名称相同,简单查询操作限定为数值比较操作,所述数值比较操作为大于、小于、等于、大于等于或小于等于,简单查询值为数值型,所述数值型为整形、浮点型或双精度浮点型;
复杂查询包括关系表,属性集合,复杂谓词集合和查询被提交的时间;复杂谓词集合又包括复杂查询谓词、复杂查询操作和复杂查询值;复杂谓词集合中复杂查询谓词的类型不限,复杂查询操作为包含、不包含、大于、小于、等于、大于等于或小于等于,复杂查询的类型为字符串型、整型、浮点型或双精度浮点型。
缓存合并,针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并。
界面显示,与用户进行人机交互。
下面对本发明实施例提供的移动计算设备数据缓存的方法做详细说明:
首先,对本发明实施例提供的方法和系统中所涉及到的相关术语,我们给出如下定义:
定义1查询Q=<QR,QA,QP,QT>。其中QR为查询对应的关系表,QA是查询对应的属性集合,QP是查询对应的谓词集合,QT是该查询被提交的时间。其中,QP是原子查询谓词P,定义为{Attribute,Operation,Data},其中Attribute为关系中对应属性,Operation取值{=,<,>,≤,≥,like,Not like},Data取值{String,Integer,Float,Double}
定义2谓词合取式CP:<P>,表示形式为CP=P1∧P2∧P3∧…Pi-1∧Pi∧Pi+1…∧Pn.Pi为一个原子查询谓词
定义3谓词析取式DP:<CP>,表示形式为DP=C1∨C2∨C3∨…Ci-1∨Ci∨Ci+1…∨Cn.Ci为谓词的合取式形式
定义4简单查询QS,为一种形式的查询Q,其中QP=CP。且
Figure BDA00002568570200061
Pi(Attribute)=Pi+1(Attribute),Pi(Operation)取值{=,<,>,≤,≥=},Data为数值类型,取值{Integer,Float,Double}
定义5复杂查询QC,为一种形式的查询Q,其中QP=DP
定义6移动语义缓存SCM,表示形式为SCM=<SQ,SL,SC>,其中SQ={QS,QC},SL为缓存的位置特征或属性,SC是缓存片段[3]的集合
定义7谓词复杂度(Predicate Complexity)为查询Q或者SCM包含的所有谓词数目的总和.
如图1所示,该流程包括以下步骤:
步骤101:对查询请求Q进行解析。
本步骤中,在移动设备端,用户发出的查询请求格式是字符串格式的SQL语句,我们对该SQL语句进行查询解析,采用面向对象的方式进行查询类的封装,将SQL语句的查询解析成Q=<QR,QA,QP,QT>的形式,并封装到各个类中,为接下来的查询处理做准备。
步骤102:将解析后的对象与语义缓存进行查询匹配,得到待裁剪的缓存段。
本步骤中,我们将解析后的对象与移动设备端已有的缓存对象(或称缓存段)集合进行逐一匹配,得到能与查询进行裁剪的缓存段集合。查询与缓存进行匹配的标准是缓存S中的关系表QR等于查询Q中的关系表QR,且缓存中的属性集合QA等于查询Q中的属性集合QA
步骤103:将一个或多个待裁剪的缓存段组合成一个带谓词析取式形式的缓存。
本步骤中,在得到待裁剪的缓存段集合后,因为每个缓存段的关系表QR和属性集合QA都相同,那么可以将缓存段集合组合成一个缓存段的形式,其中QR和QA保持不变,而谓词集合QP则以连接词OR进行连接,将一个或多个待裁剪的缓存段集合组合成一个缓存段的好处是可以进行缓存的谓词集合的化简。
步骤104:缓存是否由简单查询构成。
本步骤中,我们将缓存分为两类:简单查询QS和复杂查询QC,两种不同类型的缓存采取的谓词化简方式是不同的,简单查询QS和复杂查询QC的不同之处在于,谓词集合QP中谓词的属性是否相同,操作Operation以及数值Data是否针对数值类型。
步骤105:执行简单查询下的谓词析取式化简。
本步骤中,我们对简单查询进行谓词的化简,因为任何的查询的条件表达式都可以化简为析取范式的形式,因此,我们对析取范式进行优化处理,我们假设的析取范式的形式如下:
C=P1∧P2∧P3∧…Pi-1∧Pi∧Pi+1…∧Pn,Pi为一个谓词表达式
D=C1∨C2∨C3∨…Ci-1∨Ci∨Ci+1…∨Cn
我们针对谓词析取式的优化算法和逻辑蕴涵规则,提出全面且丰富的逻辑规则,它们具有以下形式:
规则1.如果
Figure BDA00002568570200071
那么C=false.
规则2.如果那么C=true.
规则3.如果
Figure BDA00002568570200073
那么C=P1∧P2∧P3∧…Pi-1∧Pi+1…∧Pn.
规则4.如果
Figure BDA00002568570200074
那么D=true.
规则5.如果
Figure BDA00002568570200075
那么D=false.
规则6如果
Figure BDA00002568570200076
那么D=C1∨C2∨C3∨…Ci-1∨Ci+1…∨Cn.
规则7.如果
Figure BDA00002568570200077
那么D=C1∨C2∨C3∨…Ci-1∨Ci+1…∨Cn.
规则8.如果Pi→Pj,那么
Figure BDA00002568570200078
规则9.如果Pi→Pj,那么
规则10.如果c,d为常数,且c>d,则
Figure BDA000025685702000710
规则11.如果c,d为常数,且c>=d,则
规则12.如果c,d为常数,且c>=d,则
Figure BDA000025685702000712
规则13.如果c,d,e为常数,且c<e<d,则
Figure BDA000025685702000714
规则14.如果c,d,e为常数,且c<e<d,则
Figure BDA000025685702000715
Figure BDA000025685702000716
规则15.如果c,d,e为常数,c<e<d,则
Figure BDA00002568570200081
Figure BDA00002568570200082
规则16如果c,d,e,f为常数,c<e<d<f,则
Figure BDA00002568570200083
规则17如果c,d,e,f为常数,且e=d,则
Figure BDA00002568570200085
规则18如果c,d为常数,且c<d,则
Figure BDA00002568570200086
规则19如果c,d为常数,且c<=d,则
Figure BDA00002568570200087
规则20.如果A为布尔型,且c!=d,则
Figure BDA00002568570200088
规则21.如果A为布尔型,且c=d,则
Figure BDA00002568570200089
规则22.如果A为字符型,且c!=d,则
Figure BDA000025685702000810
规则23.如果A为字符型,且c=d,则
规则24.如果A为字符型,且c是d的子串,则
Figure BDA000025685702000812
Figure BDA000025685702000813
在简单查询的条件下,谓词合取式中的谓词属性为数值类型且属性名称相同,根据优化规则1-5,8,10-15,我们可以把合取式中的谓词进行化简,得到一个相与后的数值范围区间。而当我们把待裁剪的缓存组合成析取式形式的查询时,我们可以根据优化规则6,7,9,16-19,对谓词的析取式进行化简,最终得到一个大幅度简化的谓词析取式形式的查询,简单查询下的谓词化简算法如下所示:
Dis_Optimize(DP)//简单查询下的谓词化简算法
输入:DP=C1∨C2∨C3∨…Ci-1∨Ci∨Ci+1…∨Cn其中Ci为谓词合取式
Ci=P1∧P2∧P3∧…∧Pn;Pi为比较谓词。
输出:优化后的谓词析取式
(1)//对DP根据每个谓词的属性名称进行分组,产生分组集合Ts
(2)Ts←group(DP
(3)For(each Di in Ts){//对分组后的每个析取式
(4)//对分组后的每个合取式,得出一个相交后的范围
(5)For(each Ci in Di){
(6)For(each Predicate(x op c)in Ti){
(7)Find the range of x,rx=(a,b);
(8)Case op of
(9)<:(a,b)=(a,min(b,c));
(10)>:(a,b)=(max(a,,c),b);
(11)=:(a,b)=[c,c];
(12)End of case
(13)If(a>b)break;
(14)}
(15)RangeList.add(rx)
(16)}
(17)//对RangeList按照范围的左边界从小到大进行排序
(18)RangeList.sort();
(19)For(each range in RangeList){
(20)//如果范围不相交,直接添加
(21)If(rangeOne.getRight()<rangeTwo.getLeft())
(22)ResultList.add(range);
(23)//如果范围相交,对范围进行或运算
(24)else
(25)RangeTwo=new Range(rangeOne.getLeft(),rangeTwo.getRi ght());
(26)//如果范围无穷大,则跳过
(27)If(RangeTwo==INFINITY)
(28)continue;
(29)}
(30)//将优化后的结果转化为谓词析取式
(31)DP=ResultList.transformDisjuction();
(32)Return DP
(33)}
步骤106:执行复杂查询下的谓词合取式化简。
本步骤中,对于复杂查询,因为其包含不同属性,我们不能进行析取式形式上的谓词化简。但是,我们同样可以进行谓词合取式形式上的谓词化简,根据优化规则1-5,8,10-15,我们可以得到一个相与后的数值范围区间,因此,对于复杂查询,我们也可以根据优化的逻辑规则进行合取式的化简。复杂查询下的谓词化简算法如下所示:
Conjunction_Opt(P)//复杂查询下的谓词化简算法
输入:P=P1∧P2∧P3∧…∧Pn;Pi为比较谓词。
输出:可满足,则输出True,并返回优化的谓词结果P;
(1)Ts→group(P)对P根据每个谓词的属性名称进行分组,产生分组集合Ts
(2)For(each Ti in Ts){
(3)If(the Attribute of Ti is numeric)
(4)For(each Predicate(x op c)in Ti){
(5)Find the range of x,rx=(a,b);
(6)Case op of
(7)<:(a,b)=(a,min(b,c));
(8)>:(a,b)=(max(a,,c),b);
(9)=:(a,b)=[c,c];
(10)End of case
(11)If(a>b)return false;
(12)}
(13)If(the Attribute of Ti is boolean)
(14)If(Predicate(x op c)and Predicate(x opr v)in Ti)){
(15)If(op=opr and v!=c)
(16)return false;
(17)If(op!=opr and v=c)
(18)return false;
(19)If(op=opr and v=c)
(20)discard Predicate(x op v);
(21)}
(22)If(the Attribute of Ti is string)
(23)If
Figure BDA00002568570200102
(Predicate(x op c)and Predicate(x opr v)in Ti)){
(24)If(op=opr and op is‘=’and v!=c)
(25)return false;
(26)If(op=opr and op is‘like’and neither c nor v
(27)is substring of each other)
(28)return false;
(29)If(op!=opr and op is‘=’and opr is‘!=’and v=c)
(30)return false;
(31)If(op!=opr and op is‘!=’and opr is‘=’and v=c)
(32)return false;
(33)If(op=opr and op is‘like’and c is substring of v)
(34)discard Predicate(x op v);
(35)If(op=opr and v=c)
(36)discard Predicate(x op v);
(37)}
(38)}
(39)Return True
步骤107:将化简后的缓存与查询Q进行裁剪,得到剩余查询RQ。
本步骤中,假设化简后的语义缓存为S,用户发出查询为Q,则剩余查询为求解
Figure BDA00002568570200111
S∧Q的过程。对谓词的求补操作,可根据谓词的类型分为如下三种求补操作,如表1(数值型谓词求补)、表2(布尔型谓词求补)和表3(字符串型谓词求补)所示。
Figure BDA00002568570200112
表1
Figure BDA00002568570200113
表2
Figure BDA00002568570200121
表3
因为任何查询语句的谓词形式都可以化简为谓词的析取形式,每个析取形式又由若干个合取式的形式表示。本文对语义缓存的表示采用析取范式的形式。S=B1∨B2∨B3∨…∨Bn,其中Bi=P1∧P2∧P3∧…∧Pn。
本文假定用户发出的查询是合取式的形式,对于存在析取式的查询语句,只需将其分割成若干个合取式来处理即可Q=P1∧P2∧P3∧…∧Pn,详细的剩余查询算法描述如下:
Remainder_Opt(Q,S)
输入:Q=P1∧P2∧P3∧…∧Pn,为只包含合取式的客户查询,
S为语义缓存段
S=B1∨B2∨B3∨…∨Bn
Bi=P1∧P2∧P3∧…∧Pn
输出:剩余查询的析取范式形式
(1)result→NULL
(2)If(Probe_Opt(Q,S)=null)
(3)result=Q;
(4)return result;
(5)Else
(6)根据谓词的求补操作,求得~S
(7)TB→从~S∧Q析取范式的集合
(8)For(each Ts in TB)
(9)For(each P in Ts)
(10)if(Conjunction_Opt(P)is true)
(11)result=result+{P}
(12)else舍弃P
(13)Return result
步骤108:将RQ发往服务器。
本步骤中,在得到剩余查询RQ的析取范式形式后,需要将剩余查询语句RQ发往服务器,移动设备与服务器端之间采用http协议进行连接,保证数据传输的准确性和有效性。
步骤109:服务器将RQ的查询结果返回给客户端。
本步骤中,服务器端在接收到客户端发送的查询语句后,将查询语句发往服务器端的数据库进行查询,将查询的结果通过http协议进行传输,至此,客户端拥有了查询的语义以及语义对应的数据。
步骤110:将剩余查询的语义与查询结果形成新的缓存,执行缓存合并策略。
本步骤中,假设用户的查询为Q,缓存中与查询Q相交的缓存段集合为S,
Figure BDA00002568570200131
Figure BDA00002568570200132
S分别为Q和S的补集,当查询与缓存相交时,查询与缓存就被分割成3个独立部分,分别为Part1:S∧
Figure BDA00002568570200133
Q,Part2:S∧Q,Part3:
Figure BDA00002568570200134
S∧Q,有三种语义缓存段的合并策略:
完全合并:将三个部分合并为一个新的语义单元。
部分合并:将查询结果与缓存进行部分合并,将会产生2个缓存片段。
不合并:完全分开,将产生3个缓存片段Part1、Part2、Part3。
对于简单查询来说,完全合并策略通过将缓存段与缓存段之间的谓词析取式用OR连接词连接,构成更长的谓词析取式,在经过谓词析取式优化算法处理之后,使得谓词数目相比部分合并策略少了更多,因此,采用完全合并策略是对谓词析取式优化算法的补充,两者结合能更好地提高查询处理的时空开销。缓存完全合并的算法如下所示:
SRC_mergingAll(SRC,QS)                        //缓存完全合并算法
输入:SRC,能跟查询Q相匹配并进行裁剪的缓存段集合
QS,用户发出的简单查询
输出:合并后的缓存段
(1)Query result←null
(2)result=Q;
(3)for(each SQ in SRC)//遍历缓存段集合
(4)//如果查询语句表名相同与缓存段相同并且result的属性包含查询的属性
if(result.Get_Name_QR()==SQ.Get_Name_QR()&&result.Get_QA().contains(SQ.Get_QA()))
(5)//合并两个语句的谓词析取式
(6)result.Get_Predicate_Dp().addAl l(SQ.Get_Predicate_Dp());
(7)return result;
复杂查询的谓词采用析取式表示,谓词由有多个属性组成,因此无法直接应用缓存段完全合并优化算法。我们采用动态部分合并策略(Dynamic PartialMerging),该策略基于谓词复杂度,能很好地平衡缓存两端的谓词复杂度,不会出现其中一方的谓词复杂度骤增的情况,从而很好的缩短查询处理时间。在查询与缓存相交的关系中,Part2跟Part1或者Part3合并的依据是:合并后产生的谓词复杂度在所有可选择的情况下最小。当缓存与查询合并时,有两种合并方法:一种是将Part1与Part2合并成为一块缓存,Part3单独成一块缓存,此种方法成为S-Partial-Merging。另一种是将Part2与Part3合并成为一块缓存,Part1单独成一块缓存,此种方法称为Q-Partial-Merging。哪种方法更合适取决于合并后产生的谓词复杂度最小,采用动态部分合并策略的好处是最大限度降低谓词复杂度,使得裁剪过程的时间缩短。动态部分合并策略(Dynamic PartialMerging)的算法如下所示:
SRC_dynamicMerging(SRC,QC)                //缓存动态合并算法
输入:SRC,能跟查询Q相匹配并进行裁剪的缓存段集合
QC,用户发出的复杂查询
输出:result(cache1,cache2)//合并后的缓存段
(1)Query remainderQ=SRC.remainderQuery(QC)//对复杂查询QC进行裁剪
(2)Query remainderS=QC.remainderQuery(SRC)//对缓存段SRC进行裁剪
(3)//根据谓词复杂度进行比较
(4)if(remainderS.complexity()<remainderQ.complexity())
(5)return(remaindS,QC);
(6)else
(7)return(SRC,remainderQ);
在执行缓存段合并策略后,会把合并后的缓存存储在移动计算设备中,将数据与语义一起缓存,为下一次的用户查询提供依据。
如图2所示,移动设备的数据缓存系统,包括:
查询解析与分类模块,用于对用户发出的查询进行解析编译,采用类封装的方法,对查询语句进行解析,得到查询语句的内存表示形式,采用面向对象的方式进行查询类的封装,将SQL语句的查询解析成Q=<QR,QA,QP,QT>的形式,并封装到各个类中;并把查询分为简单查询和复杂查询这两种类型。
查询匹配模块,用于将解析后的查询与语义缓存进行查询匹配,得到待裁剪的并可以进行裁剪的缓存片段,再将待裁剪的缓存片段组合成一个带谓词析取式形式的缓存缓存段。
谓词化简模块,用于判断缓存是否由简单查询构成,再根据不同类别的查询,对缓存进行谓词化简,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简。
剩余查询裁剪模块,用于将化简后的缓存与查询进行裁剪,得到剩余查询SQL语句表示形式。
数据通信模块,采用http协议与服务端模块连接,用于将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果,即:发送剩余查询语句往服务端模块以及接收服务端模块返回的剩余查询的查询结果。
服务端模块,用于接收剩余查询,并返回剩余查询的查询结果;所述服务端模块,用于移动计算设备远程连接服务器,对客户端发出的查询进行接收并解答,服务端模块与数据通信模块连接,采用http协议进行通信,保证数据传输的正确性和有效性。
缓存更新模块,用于根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储模块,用于将查询结果与查询进行存储,通过在移动设备端缓存数据和语义,构成新的缓存段,为下次查询匹配提供依据。
缓存合并模块,用于对用户发出不同种类的查询,执行不同的缓存合并策略,针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并,缓存合并之后,能缩小缓存段的数目,进而缩小下次查询要匹配的时间,同时合并后的缓存也能减小谓词复杂度,因此提高了查询裁剪的性能。
界面显示模块,用于与用户进行人机交互,包括查询语句的输入以及查询结果的输出。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (6)

1.移动设备的数据缓存方法,其特征在于,包括:
查询解析与分类,对用户发出的查询进行解析得到查询的内存表示形式,并把查询分为简单查询和复杂查询这两种类型;
查询匹配,将解析后的查询与语义缓存进行查询匹配,得到待裁剪的缓存段,将待裁剪的缓存段组合成一个带谓词析取式的缓存;
谓词化简,判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;
剩余查询裁剪,化简后的缓存与查询进行裁剪,得到剩余查询;
数据通信,将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果;
服务端,接收剩余查询,并返回剩余查询的查询结果;
缓存更新,根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储,将查询结果与查询进行存储;
其中,简单查询包括关系表,属性集合,简单谓词集合和查询被提交的时间;简单谓词集合又包括简单查询谓词、简单查询操作和简单查询值;简单谓词集合限定每个简单查询谓词的名称相同,简单查询操作限定为数值比较操作,所述数值比较操作为大于、小于、等于、大于等于或小于等于,简单查询值为数值型,所述数值型为整形、浮点型或双精度浮点型;
复杂查询包括关系表,属性集合,复杂谓词集合和查询被提交的时间;复杂谓词集合又包括复杂查询谓词、复杂查询操作和复杂查询值;复杂谓词集合中复杂查询谓词的类型不限,复杂查询操作为包含、不包含、大于、小于、等于、大于等于或小于等于,复杂查询的类型为字符串型、整型、浮点型或双精度浮点型。
2.根据权利要求1所述的移动设备的数据缓存方法,其特征在于,还包括:
缓存合并,针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并。
3.根据权利要求1所述的移动设备的数据缓存方法,其特征在于,还包括:
界面显示,与用户进行人机交互。
4.移动设备的数据缓存系统,其特征在于,包括:
查询解析与分类模块,用于对用户发出的查询进行解析得到查询的内存表示形式,并把查询分为简单查询和复杂查询这两种类型;
查询匹配模块,用于将解析后的查询与语义缓存进行查询匹配,得到待裁剪的缓存段,将待裁剪的缓存段组合成一个带谓词析取式的缓存;
谓词化简模块,用于判断缓存是否由简单查询构成,如果缓存是由简单查询构成,则进行谓词析取式化简;否则,则进行谓词合取式化简;
剩余查询裁剪模块,用于将化简后的缓存与查询进行裁剪,得到剩余查询;
数据通信模块,用于将剩余查询发往服务端,并接收服务端返回的剩余查询的查询结果;
服务端模块,用于接收剩余查询,并返回剩余查询的查询结果;
缓存更新模块,用于根据服务端返回的剩余查询的查询结果对缓存进行更新;
数据存储模块,用于将查询结果与查询进行存储;
其中,简单查询包括关系表,属性集合,简单谓词集合和查询被提交的时间;简单谓词集合又包括简单查询谓词、简单查询操作和简单查询值;简单谓词集合限定每个简单查询谓词的名称相同,简单查询操作限定为数值比较操作,所述数值比较操作为大于、小于、等于、大于等于或小于等于,简单查询值为数值型,所述数值型为整形、浮点型或双精度浮点型;
复杂查询包括关系表,属性集合,复杂谓词集合和查询被提交的时间;复杂谓词集合又包括复杂查询谓词、复杂查询操作和复杂查询值;复杂谓词集合中复杂查询谓词的类型不限,复杂查询操作为包含、不包含、大于、小于、等于、大于等于或小于等于,复杂查询的类型为字符串型、整型、浮点型或双精度浮点型。
5.根据权利要求3所述的移动设备的数据缓存系统,其特征在于,还包括:
缓存合并模块,用于针对简单查询进行缓存全合并,针对复杂查询进行基于谓词复杂度的动态合并。
6.根据权利要求3所述的移动设备的数据缓存系统,其特征在于,还包括:
界面显示模块,用于与用户进行人机交互。
CN201210536626.5A 2012-12-12 2012-12-12 移动设备的数据缓存方法及其系统 Active CN103049506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210536626.5A CN103049506B (zh) 2012-12-12 2012-12-12 移动设备的数据缓存方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210536626.5A CN103049506B (zh) 2012-12-12 2012-12-12 移动设备的数据缓存方法及其系统

Publications (2)

Publication Number Publication Date
CN103049506A true CN103049506A (zh) 2013-04-17
CN103049506B CN103049506B (zh) 2016-05-04

Family

ID=48062147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210536626.5A Active CN103049506B (zh) 2012-12-12 2012-12-12 移动设备的数据缓存方法及其系统

Country Status (1)

Country Link
CN (1) CN103049506B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447135A (zh) * 2015-11-19 2016-03-30 北京锐安科技有限公司 数据查找方法和装置
WO2017206634A1 (zh) * 2016-06-01 2017-12-07 华为技术有限公司 一种语义查询的方法及装置
CN107818100A (zh) * 2016-09-12 2018-03-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN117076699A (zh) * 2023-10-13 2023-11-17 南京奥看信息科技有限公司 一种多图片的加速处理方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701454A (en) * 1995-01-17 1997-12-23 International Business Machines Corporation Simplification of SQL queries using generalized inference propagation and generalized transitive closure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701454A (en) * 1995-01-17 1997-12-23 International Business Machines Corporation Simplification of SQL queries using generalized inference propagation and generalized transitive closure

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
李东,叶友,谢芳勇: "语义缓存查询裁剪优化", 《计算机应用研究》 *
李东,杨小鹏,罗鹏飞: "基于谓词分类的语义缓存查询裁剪", 《华南理工大学学报(自然科学版)》 *
李东,袁应化,叶友,刘振宇: "基于属性更新的语义缓存一致性维护算法", 《华南理工大学学报(自然科学版)》 *
蔡建宇,吴泉源,贾焰,邹鹏: "语义缓存的聚集查询匹配研究", 《计算机研究与发展》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447135A (zh) * 2015-11-19 2016-03-30 北京锐安科技有限公司 数据查找方法和装置
CN105447135B (zh) * 2015-11-19 2019-04-09 北京锐安科技有限公司 数据查找方法和装置
WO2017206634A1 (zh) * 2016-06-01 2017-12-07 华为技术有限公司 一种语义查询的方法及装置
CN107451164A (zh) * 2016-06-01 2017-12-08 华为技术有限公司 一种语义查询的方法及装置
CN107451164B (zh) * 2016-06-01 2020-05-19 华为技术有限公司 一种语义查询的方法及装置
CN107818100A (zh) * 2016-09-12 2018-03-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN107818100B (zh) * 2016-09-12 2019-12-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN117076699A (zh) * 2023-10-13 2023-11-17 南京奥看信息科技有限公司 一种多图片的加速处理方法、装置及电子设备
CN117076699B (zh) * 2023-10-13 2023-12-12 南京奥看信息科技有限公司 一种多图片的加速处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN103049506B (zh) 2016-05-04

Similar Documents

Publication Publication Date Title
WO2021083239A1 (zh) 一种进行图数据查询的方法、装置、设备及存储介质
CN107291807B (zh) 一种基于图遍历的sparql查询优化方法
US10394813B2 (en) Method and apparatus for performing query aware partitioning
EP1738290B1 (en) Partial query caching
US6240406B1 (en) System and method for optimizing queries with aggregates and collection conversions
US20050210023A1 (en) Query optimizer using implied predicates
US7440963B1 (en) Rewriting a query to use a set of materialized views and database objects
US20100299367A1 (en) Keyword Searching On Database Views
CN105955999B (zh) 一种大规模RDF图的ThetaJoin查询处理方法
CN109325029A (zh) 基于稀疏矩阵的rdf数据存储和查询方法
CN103793467A (zh) 一种基于超图和动态规划的大数据实时查询优化方法
CN107016071A (zh) 一种利用简单路径特征优化树状结构数据的方法及系统
CN103049506B (zh) 移动设备的数据缓存方法及其系统
Pei et al. An efficient query scheme for hybrid storage blockchains based on merkle semantic trie
CN110543585B (zh) 一种基于关系模型的rdf图和属性图统一存储方法
US20100145930A1 (en) Virtual pair algorithm for outer join resolution
CN102214216A (zh) 一种层次关系数据上关键字检索结果的聚合摘要方法
CN101719162A (zh) 基于片段模式匹配的多版本开放式地理信息服务访问方法及系统
Li et al. Research on storage method for fuzzy RDF graph based on Neo4j
Chen et al. A bi-labeling based XPath processing system
Liu et al. An adaptive parallel pi-skyline query for probabilistic and incomplete database
Krátký et al. Multidimensional term indexing for efficient processing of complex queries
Andrade et al. Query Optimization in KESS-An Ontology-Based KBMS.
Peng et al. Using partial evaluation in holistic subgraph search
WO2023201791A1 (zh) 一种数据实体识别方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant