《一种基于APRIORI算法的数据缓存方法.pdf》由会员分享,可在线阅读,更多相关《一种基于APRIORI算法的数据缓存方法.pdf(15页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103995869 A (43)申请公布日 2014.08.20 C N 1 0 3 9 9 5 8 6 9 A (21)申请号 201410214776.3 (22)申请日 2014.05.20 G06F 17/30(2006.01) G06F 11/34(2006.01) (71)申请人东北大学 地址 110819 辽宁省沈阳市和平区文化路3 号巷11号 (72)发明人张莉 郭昆 杨乐游 (74)专利代理机构沈阳东大知识产权代理有限 公司 21109 代理人梁焱 (54) 发明名称 一种基于Apriori算法的数据缓存方法 (57) 摘要 本发明一种基于Aprio。
2、ri算法的数据缓存方 法,对磁盘中条件属性建立查询日志,计算其各数 据块的查询频繁度,查询频繁度高的多个数据块 形成频繁数据块集合,计算频繁数据块集合中条 件属性的查询频繁度,查询频繁度高的多个条件 属性形成频繁条件属性集合。利用Apriori算 法获得频繁条件属性组集合,查询频繁度映射为 Apriori算法中的支持度,得到频繁条件属性组 集合,将频繁条件属性组集合对应的数据缓存至 内存中,并对频繁条件属性建立索引。本数据缓存 方法在频繁区域中能够明显提高数据查询效率, 缓存多个条件属性组相比单一条件属性具有更高 的查询效率,进而减轻数据库的检索压力,取得了 更高的查询效率。 (51)Int.。
3、Cl. 权利要求书2页 说明书8页 附图4页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书8页 附图4页 (10)申请公布号 CN 103995869 A CN 103995869 A 1/2页 2 1.一种基于Apriori算法的数据缓存方法,其特征在于,包括以下步骤: 步骤1:在磁盘中以天为单位记录天内用户查询语句中的条件属性,建立个查询日志, 即用户查询内容; 步骤2:计算查询日志中各数据块的查询频繁度,根据得到数据块查询频繁度的大小 获得查询频繁度高的多个数据块,形成频繁数据块集合; 步骤3:各频繁数据块的条件属性形成条件属性集合; 步骤4:计算条。
4、件属性集合中的每个条件属性的查询频繁度,根据得到条件属性查询 频繁度的大小获得查询频繁度高的多个条件属性,形成频繁条件属性集合; 步骤5:利用Apriori算法和频繁条件属性集合获得频繁条件属性组集合,条件属性的 查询频繁度映射为Apriori算法中的支持度,Apriori算法得到的频繁项集即为频繁条件 属性组集合; 步骤6:将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性集合中 的频繁条件属性建立索引,完成数据缓存; 步骤7:当客户端需要进行数据查询时,根据要查询的数据的条件属性,进行查询操 作:若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果; 若要查询。
5、的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分频繁条件属 性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询的数据 的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操 作。 2.根据权利要求1所述的基于Apriori算法的数据缓存方法,其特征在于,所述步骤2 具体按如下步骤执行: 步骤2.1:确定 T个查询日志中各数据块中数据的查询次数; 步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例区分 近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志数据 查询次数上限阈值时,则该历史日志数据的。
6、查询次数取值为该上限阈值;当数据块中的近 期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的查询 次数取值为该上限阈值; 步骤2.3:对规范化处理后的数据块中数据的查询次数进行加权操作:分别对规范化 处理后的T个查询日志中各数据块中数据的查询次数加权求和后取平均值,即得到各数据 块的查询频繁度; 步骤2.4:根据各数据块查询频繁度的大小选择查询频繁度高的多个数据块,即频繁 数据块,各频繁数据块形成频繁数据块集合。 3.根据权利要求1所述的基于Apriori算法的数据缓存方法,其特征在于,所述步骤4 具体按如下步骤执行: 步骤4.1:确定 T个查询日志中在频繁数据块中各条。
7、件属性的查询次数; 步骤4.2:对各条件属性的查询次数进行规范化处理:根据近期日志比例区分近期日 志条件属性与历史日志条件属性,当历史日志条件属性的查询次数高于历史日志条件属性 查询次数上限阈值时,则该历史日志条件属性的查询次数取值为该上限阈值;当近期日志 条件属性的查询次数高于近期日志条件属性查询次数上限阈值时,则该近期日志条件属性 权 利 要 求 书CN 103995869 A 2/2页 3 查询次数取值为该上限阈值; 步骤4.3:对规范化处理后的条件属性查询次数进行加权操作:分别对规范化处理后 的T天内的各条件属性的查询次数加权后求和取平均值,即得到各条件属性的查询频繁 度; 步骤4.4。
8、:根据得到的各条件属性的查询频繁度,选择频繁度高的多个条件属性,即频 繁条件属性,各频繁条件属性形成频繁条件属性集合。 权 利 要 求 书CN 103995869 A 1/8页 4 一种基于 Apriori 算法的数据缓存方法 技术领域 0001 本发明属于数据查询技术领域,具体涉及一种基于Apriori算法的数据缓存方 法。 背景技术 0002 近些年来随着互联网的飞速发展,尤其是微博、微信等社交应用的兴起,数据量爆 炸性的增长,2011年,人类正式进入了ZB时代。不得不承认,我们已经生活在了大数据时 代。然而,大数据自诞生以来就被赋予了价值密度低、类型繁多的特点,这也决定了海量数 据在查询。
9、时将会面临诸多问题。在数据规模不太大的情况下,传统的关系型数据库具有不 错的性能,高稳定型,久经历史考验。但当数据量达到一定规模时,对于关系数据库来说,效 率是极其低下、难以忍受的。总而言之,关系型数据库并不能满足大数据时代对数据库高并 发读写的需求、对海量数据的高效率存储和访问的需求以及对数据库的高可扩展性和高可 用性的需求。 0003 问题的发现催生出了新的技术NoSQL。NoS QL意即“不仅仅是SQL”,是非关 系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。 NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型 数据库无。
10、法比拟的性能优势。然而,当前主流的NoSQL数据库多采用LIRS算法实现数据缓 存机制,然而LIRS算法无法对较长时间内频繁查询的数据进行有效统计,不能采取有针对 性的策略缓存待查询数据。 发明内容 0004 针对现有技术存在的不足,本发明提供了一种基于Apriori算法的数据缓存方 法。 0005 本发明的技术方案是: 0006 一种基于Apriori算法的数据缓存方法,包括以下步骤: 0007 步骤1:在磁盘中以天为单位记录T天内用户查询语句中的条件属性,建立T个查 询日志,即用户查询内容。 0008 步骤2:计算查询日志中各数据块的查询频繁度,根据得到数据块查询频繁度的 大小获得查询频繁。
11、度高的多个数据块,形成频繁数据块集合。 0009 步骤2.1:确定T个查询日志中各数据块中数据的查询次数。 0010 步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例 区分近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志 数据查询次数上限阈值时,则该历史日志数据的查询次数取值为该上限阈值;当数据块中 的近期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的 查询次数取值为该上限阈值。 0011 步骤2.3:对规范化处理后的数据块中数据的查询次数进行加权操作:分别对规 说 明 书CN 103995869 A 2/8页 5 范。
12、化处理后的T个查询日志中各数据块中数据的查询次数加权求和后取平均值,即得到各 数据块的查询频繁度。 0012 步骤2.4:根据各数据块查询频繁度的大小选择查询频繁度高的多个数据块,即 频繁数据块,各频繁数据块形成频繁数据块集合。 0013 步骤3:各频繁数据块的条件属性形成条件属性集合。 0014 步骤4:计算条件属性集合中的每个条件属性的查询频繁度,根据得到条件属性 查询频繁度的大小获得查询频繁度高的多个条件属性,形成频繁条件属性集合。 0015 步骤4.1:确定T个查询日志中在频繁数据块中各条件属性的查询次数。 0016 步骤4.2:对各条件属性的查询次数进行规范化处理:根据近期日志比例区。
13、分近 期日志条件属性与历史日志条件属性,当历史日志条件属性的查询次数高于历史日志条件 属性查询次数上限阈值时,则该历史日志条件属性的查询次数取值为该上限阈值;当近期 日志条件属性的查询次数高于近期日志条件属性查询次数上限阈值时,则该近期日志条件 属性查询次数取值为该上限阈值。 0017 步骤4.3:对规范化处理后的条件属性查询次数进行加权操作:分别对规范化处 理后的T天内的各条件属性的查询次数加权后求和取平均值,即得到各条件属性的查询频 繁度。 0018 步骤4.4:根据得到的各条件属性的查询频繁度,选择频繁度高的多个条件属性, 即频繁条件属性,各频繁条件属性形成频繁条件属性集合。 0019 。
14、步骤5:利用Apriori算法和频繁条件属性集合获得频繁条件属性组集合,条件属 性的查询频繁度映射为Apriori算法中的支持度,Apriori算法得到的频繁项集即为频繁 条件属性组集合。 0020 步骤6:将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性集 合中的频繁条件属性建立索引,完成数据缓存。 0021 步骤7:当客户端需要进行数据查询时,根据要查询的数据的条件属性,进行查询 操作:若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果; 若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分频繁条件属 性的索引查询磁盘数据库中满足该部分条件。
15、属性的数据,完成查询操作;若要查询的数据 的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操 作。 0022 本发明的有益效果在于,提出了一种全新的数据缓存方法,结合NoSQL数据库,在 数据节点内存中开辟频繁数据列缓存区,本数据缓存方法在频繁区域中能够明显提高数据 查询效率,而对于其他区域中的数据查询,由于未做任何处理,故不会影响其查询操作,缓 存多个条件属性组相比单一条件属性具有更高的查询效率,对于条件属性组中条件属性个 数处于中间规模的缓存,尽管牺牲了一部分缓存完全命中率,但该类缓存能够更出色地完 成中间记录的精简工作,缩减内存中因部分条件属性命中而产生的中间结。
16、果集,并根据频 繁条件属性索引快速定位数据,进而减轻数据库的检索压力,取得了更高的查询效率。 附图说明 0023 图1为本发明具体实施方式中运行环境HBase分割数据表过程图; 说 明 书CN 103995869 A 3/8页 6 0024 图2为本发明具体实施方式中改进的数据查询过程图; 0025 图3为本发明具体实施方式中基于Apriori算法的数据缓存方法流程图; 0026 图4为本发明具体实施方式中查询条件属性不同命中情况处理流程图; 0027 图5为本发明具体实施方式中不同缓存方式查询效率对比图; 0028 图6为本发明具体实施方式中不同缓存方式条件属性命中情况对比图。 具体实施方式。
17、 0029 下面结合附图对本发明具体实施方式进行详细说明。 0030 本实施方式在Hadoop-HBase环境下,对查询数据以及用户查询行为使用新浪微 博用户数据进行了仿真模拟,令T7,将仿真数据分成7等份,以模拟不同时间的查询日 志。 0031 HBase是一个面向列的NoSQL数据库,其作为Hadoop项目的一部分,运行于HDFS 文件系统之上。在数据读取方面,HBase采取按列存储方法,相比于按行存储方法,减少了 数据读取过程中冗余数据的读取,提高了数据读取效率,使数据检索更加迅速有效。在存储 方面,HBase将规模较大的数据表分割成若干数据区域,即数据块,每个区域顺序存储数据 表中一定。
18、数量的记录,将多个相关区域合并操作,即可获得完整的表信息。HBase数据表分 割过程如图1所示。 0032 HBase中的区域对应数据块概念,基于本实施方式的数据缓存方法,根据数据查询 情况筛选出查询频繁的数据区域,即频繁数据快,将频繁度最高的若干区域中的频繁条件 属性数据缓存至内存缓冲区中。当数据区域中的数据被访问时,根据查询条件属性与内存 中的缓存的命中情况,进行不同的数据查询操作。在HBase环境下,数据查询过程如图2所 示,客户端向数据区域服务器发送查询请求,数据区域服务器根据查询情况返回查询结果 或进一步查询,若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到 查询结果。
19、;若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分 条件属性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询 的数据的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查 询操作。而在Hadoop层的存储节点则负责加载磁盘数据和执行查询操作。 0033 本实施方式的基于Apriori算法的数据缓存方法如图3所示,包括以下步骤: 0034 步骤1在磁盘中以天为单位记录T天内用户查询语句中的条件属性,建立T个查 询日志,即用户查询内容。 0035 本实施方式中条件属性为新浪微博用户的年龄、性别、所在地区、注册日期、在线 时间的个人信息,在。
20、实施过程中,共创建7个查询日志,表示最近7天的用户查询记录。 0036 步骤2:计算查询日志中各数据块block的查询频繁度,根据得到数据块查询频繁 度的大小获得查询频繁度高的多个数据块,即频繁数据块集合block fd 。假设共有3个数据 块,分别为block 1 、block 2 、block 3 ,数据块block 1 查询频繁度计算过程如下: 0037 步骤2.1:确定7个查询日志中各数据块数据的查询次数。 0038 根据查询日志计数获得block 1 在7天中的查询次数Count(t)。据统计,block 1 相 关查询在t取值为0、1、2、3、4、5、6时查询次数Count(t)分。
21、别为1350,1433,1236,1546,13 54,1029,1175。 说 明 书CN 103995869 A 4/8页 7 0039 步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例 区分近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志 数据查询次数上限阈值时,则该历史日志数据查询次数取值为该上限阈值;当数据块中的 近期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的查 询次数取值为该上限阈值。 0040 对各数据块中的数据的查询次数Count(t)进行规范化处理:设置近期日志比例 q rec 区分近期日志数据与。
22、历史日志数据,q rec 根据用户实际需要设置,取值范围0q rec 1, 本实施方式取q rec 0.3,则当tq rec T时,即前5天查询日志数据属于历史日志数据, 当tq rec T时,即最近2天查询日志数据属于近期日志数据,对于数据块中的历史日志 数据,设置历史日志数据查询次数上限阈值Max his ,通常情况下,Max his 应设置为所有记录平 均查询次数的1.5倍,Max his 1400,该数据块查询次数高于历史日志数据查询次数上限阈 值时,则该数块据查询次数取值为该上限阈值,对于近期日志数据,设置近期日志数据查询 次数上限阈值Max rec ,Max rec 应设置为所有记。
23、录平均查询次数的2倍,Max rec 1700,当该数 据块查询次数高于近期日志数据查询次数上限阈值时,则该数据块查询次数取值为该上限 阈值,根据规范化公式(1)对查询次数Count(t)进行规范化处理: 0041 0042 由于步骤2.1中当t1和t3时,相关查询次数超过了历史日志数据查询次 数上限阈值,故Count(1)Count(3)Max his 1400,Count std1 (t)为1350,1400,1236,1 400,1354,1029,1175。 0043 通过对查询次数进行规范化处理,可以在一定程度上避免因个别天查询次数过高 而导致条件属性查询频繁度虚高的情况。 0044。
24、 步骤2.3:对规范化处理后的数据块查询次数Count std1 (t)进行加权操作:分别对 规范化处理后的7个查询日志中各数据块中数据的查询次数加权求和后取平均值,即得到 该数据块查询频繁度FD block : 0045 0046 其中Count std1 (t)为规范化处理后的数据块中数据的查询次数,W(t)为加权函数, 为增函数。 0047 本实施方式以单调递增的正比例型函数在第一象限内的函数部分作为加权函数, 即W(t)t+1,其中0t6 0048 计算block 1 的频繁度: 说 明 书CN 103995869 A 5/8页 8 0049 0050 步骤2.4:根据各数据块查询频繁。
25、度的大小选择查询频繁度高的多个数据块,即 频繁数据块,各频繁数据块形成频繁数据块集合,其中block 2 查询频繁度为5973.13648, block 3 查询频繁度为5294.65。将数据块进行大小排序,获得数据块依次求和后内存在1G 内的查询频繁度高的多个数据块,其中block 2 属于频繁数据块。 0051 步骤3:各频繁数据块的条件属性形成条件属性集合:本实施方式中用户的年龄、 性别、所在地区、注册日期、在线时间的条件属性集合为条件属性集合。 0052 步骤4:计算条件属性集合中的每个条件属性的查询频繁度,根据得到条件属性 查询频繁度的大小获得查询频繁度高的多个条件属性,形成频繁条件。
26、属性集合。以年龄条 件属性为例,条件属性查询频繁度计算过程如下: 0053 步骤4.1:确定7个查询日志中在频繁数据块中各条件属性的查询次数,本实施方 式中与年龄条件属性相关的查询在t取值为0、1、2、3、4、5、6时查询次数分别为130、135、 125、160、110、115、120。 0054 步骤4.2:对各条件属性的查询次数进行规范化处理:根据近期日志比例区分近 期日志条件属性与历史日志条件属性,当历史日志条件属性的查询次数高于历史日志条件 属性查询次数上限阈值时,则该历史日志条件属性的查询次数取值为该上限阈值;当近期 日志条件属性的查询次数高于近期日志条件属性查询次数上限阈值时,则。
27、该近期日志条件 属性查询次数取值为该上限阈值。 0055 对条件属性查询次数进行规范化处理,根据近期日志比例q rec 0.3,前5天查询 日志条件属性属于历史日志条件属性,最近2天的查询日志条件属性属于近期日志条件属 性,对于历史日志条件属性,设置历史日志条件属性查询次数上限阈值Max his ,Max his 140, 当该条件属性查询次数高于历史日志条件属性查询次数上限阈值时,则该条件属性的查询 次数取值为该上限阈值。对于近期日志条件属性,设置近期日志条件属性查询次数上限阈 值Max rec ,Max rec 150,当该条件属性查询次数高于近期日志条件属性查询次数上限阈值 时,则该条件。
28、属性查询次数取值为该上限阈值,根据规范化公式(1)对条件属性查询次数 Count(t)进行规范化处理,由于步骤4.1中得到的当t3时,Count(3)160,超过了历 史日志查询次数上限阈值,故令Count(3)Max his 140。Count std2 (t)Count(stt)d为130、 135、125、140、110、115、120。 0056 步骤4.3:对规范化处理后的条件属性查询次数进行加权操作:分别对规范化处 理后的7天内的各条件属性的查询次数加权后求和取平均值,即得到各条件属性的查询频 繁度FD sa : 0057 0058 同样以单调递增的正比例型函数在第一象限内的函数部。
29、分作为加权函数,即W(t) 说 明 书CN 103995869 A 6/8页 9 t+1,其中0t6,计算年龄条件属性的频繁度: 0059 0060 步骤4.4:根据得到的各条件属性的查询频繁度,选择频繁度高的多个条件属 性,即频繁条件属性,各频繁条件属性形成频繁条件属性集合,其中年龄的查询频繁度为 487.8571,性别的查询频繁度为539.2857143,所在地区的查询频繁度为632.1428571,注 册日期的查询频繁度为217.1429,在线时间的查询频繁度为103.4923。 0061 步骤5:利用Apriori算法和频繁条件属性集合获得频繁条件属性组集合,条件属 性的查询频繁度映射。
30、为Apriori算法中的支持度,Apriori算法得到的频繁项集即为频繁 条件属性组集合。 0062 步骤5.1:令A 1 ,设k为当前最高频繁条件属性组长度,当k1时,表示长 度为1的频繁条件属性组集合A 1 。 0063 步骤5.2:统计频繁条件属性集合中各条件属性查询频繁度,其中年龄、性别、 所在地区、注册日期、在线时间的条件属性对应的频繁度分别为487.8571、539.2857、 632.1428、217.1429、103.4923,设置最小频繁度阈值min fd 175,将所有大于等于最小频 繁度阈值的年龄、性别、所在地区、注册日期、在线时间的条件属性放入A 1 中,获得长度为1 。
31、的频繁条件属性组集合A 1 。 0064 步骤5.3:对A 1 中的元素做按条件属性名称做字典排序并进行自然连接,获得长 度为2的频繁条件属性组候选集C 2 ,其中C 2 包括所在地区注册日期、所在地区年龄、所 在地区性别、年龄性别、年龄-注册日期、性别-注册日期。 0065 步骤5.4:令A 2 ,查询C 2 中各个条件属性组,并检索所有频繁条件属性集合, 统计C 2 中各条件属性组的查询频繁度,其中所在地区注册日期、所在地区年龄、所在 地区性别、年龄性别、年龄-注册日期、性别-注册日期等属性组对应的频繁度分别为 202.14285、339.2857、401.4285、321.4285、98。
32、.4957、135.671,将条件属性组频繁度大于等 于最小频繁度阈值的所地区注册日期、所在地区年龄、所在地区性别、年龄性别等 条件属性组放入A2长度为2的频繁条件属性组集合A 2 中。 0066 步骤5.5:对A 2 中的元素按条件属性名称做字典排序并进行自然连接,获得长度 为3的频繁条件属性组候选集C 3 ,其中C 3 包括地区性别年龄条件属性组。 0067 步骤5.6:令A 3 ,查询C 3 中各个条件属性组,并检索所有频繁条件属性集合, 统计C 3 中条件属性组的查询频繁度,其中地区性别年龄这一条件属性组对应的频繁度 分别为183.5714286,将条件属性组频繁度大于等于最小频繁度阈。
33、值的地区性别年龄 的条件属性组放入长度为3的频繁条件属性组集合A 3 中。 0068 步骤5.7:对A 3 中的元素按条件属性名称做字典排序并进行自然连接,获得长度 为4的频繁条件属性组候选集C 4 ,其中C 4 。 0069 步骤5.8:获得查询日志中各长度的频繁查询条件属性组集A,其中A k A k A 1 A 2 A k : 说 明 书CN 103995869 A 7/8页 10 0070 长度为1的频繁条件属性有年龄、性别、所在地区、注册日期,对应的频繁度分别 为487.8571、539.2857、632.1428、217.1429。 0071 长度为2的频繁条件属性组有所在地区注册日。
34、期、地区年龄、地区性别、年 龄性别,对应的频繁度分别为202.14285、339.2857、401.4285、321.4285。 0072 长度为3的频繁条件属性组有所在地区性别年龄,频繁度为183.5714286。 0073 步骤6:将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性集 合中的频繁条件属性建立索引,完成数据缓存。 0074 仅在内存中缓存3列条件属性数据,有3组缓存方式,第1组内存缓存中缓存年 龄、性别、所在地区数据,第2组内存缓存中缓存所在地区年龄、地区性别数据,由于所 在地区条件属性重复,故不占用内存空间,第3组内存缓存中缓存所在地区性别年龄 数据。 0075 。
35、步骤7:当客户端需要进行数据查询时,根据要查询的数据的条件属性,进行查询 操作:若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果; 若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分频繁条件属 性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询的数据 的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操作 性均不在内存缓存的频繁条件属性集合中,即未命中,则从磁盘中加载数据块进行查询操 作。 0076 对于一次实际数据查询,共有3种可能的不同命中情况,如图4所示。 0077 当用户查询出生日期条件属性时,出生。
36、日期条件属性未缓存在内存中,属于查询 中的条件属性均不在内存缓存中情况,则从磁盘中加载数据块进行查询操作。 0078 当用户查询所在地区出生日期条件属性组时,属于查询中的条件属性仅有一部 分在内存缓存中情况,则根据该地区条件属性的索引查询磁盘数据库中满足该地区条件属 性的数据,完成查询操作。 0079 当用户查询地区条件属性时,属于查询中的条件属性全部在内存缓存中情况,此 时直接在内存中检索相关数据并返回结果即可。 0080 在不同缓存方式下,平均查询效率对比如图5所示。在应用本方法前,一条正常 SQL Select语句的查询时间平均约为1500毫秒。 0081 本实施方式的数据缓存方法在频繁。
37、区域中能够明显提高数据查询效率,而对于其 他区域中的数据查询,由于未做任何处理,故不会影响其上的查询操作。缓存二、三条件属 性组相比单一条件属性具有更高的查询效率,这是由于在实际查询过程中,单一条件属性 的条件查询频率较低,缓存完全命中率不理想,相比于多条件属性查询,单一条件属性缓存 不能很好地去除不相关记录,筛选出的记录规模较大,给之后在数据库中的索引检验工作 带来了巨大的时间开销。 0082 查询命中情况对比如图6所示,尽管两条件属性组缓存相比三条件属性组缓存完 全命中率相差较多,但其部分命中率却高达63.93。对于条件属性组中条件属性个数处于 中间规模的缓存,尽管牺牲了一部分缓存完全命中。
38、率,但该类缓存能够更出色地完成中间 记录的精简工作,缩减内存中因部分条件属性命中而产生的中间结果集,并根据频繁条件 属性索引快速定位数据,进而减轻数据库的检索压力,取得了更高的查询效率,两条件属性 说 明 书CN 103995869 A 10 8/8页 11 组缓存平均查询效率略高于三条件属性组缓存正属于这种情况。 说 明 书CN 103995869 A 11 1/4页 12 图1 图2 说 明 书 附 图CN 103995869 A 12 2/4页 13 图3 说 明 书 附 图CN 103995869 A 13 3/4页 14 图4 图5 说 明 书 附 图CN 103995869 A 14 4/4页 15 图6 说 明 书 附 图CN 103995869 A 15 。