一种基于Apriori算法的数据缓存方法

文档序号:6547053阅读:202来源:国知局
一种基于Apriori算法的数据缓存方法
【专利摘要】本发明一种基于Apriori算法的数据缓存方法,对磁盘中条件属性建立查询日志,计算其各数据块的查询频繁度,查询频繁度高的多个数据块形成频繁数据块集合,计算频繁数据块集合中条件属性的查询频繁度,查询频繁度高的多个条件属性形成频繁条件属性集合。利用Apriori算法获得频繁条件属性组集合,查询频繁度映射为Apriori算法中的支持度,得到频繁条件属性组集合,将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性建立索引。本数据缓存方法在频繁区域中能够明显提高数据查询效率,缓存多个条件属性组相比单一条件属性具有更高的查询效率,进而减轻数据库的检索压力,取得了更高的查询效率。
【专利说明】—种基于Apriori算法的数据缓存方法
【技术领域】
[0001]本发明属于数据查询【技术领域】,具体涉及一种基于Apriori算法的数据缓存方法。
【背景技术】
[0002]近些年来随着互联网的飞速发展,尤其是微博、微信等社交应用的兴起,数据量爆炸性的增长,2011年,人类正式进入了 ZB时代。不得不承认,我们已经生活在了大数据时代。然而,大数据自诞生以来就被赋予了价值密度低、类型繁多的特点,这也决定了海量数据在查询时将会面临诸多问题。在数据规模不太大的情况下,传统的关系型数据库具有不错的性能,高稳定型,久经历史考验。但当数据量达到一定规模时,对于关系数据库来说,效率是极其低下、难以忍受的。总而言之,关系型数据库并不能满足大数据时代对数据库高并发读写的需求、对海量数据的高效率存储和访问的需求以及对数据库的高可扩展性和高可用性的需求。
[0003]问题的发现催生出了新的技术一NoSQL0 NoSQL意即“不仅仅是SQL”,是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。然而,当前主流的NoSQL数据库多采用LIRS算法实现数据缓存机制,然而LIRS算法无法对较长时间内频繁查询的数据进行有效统计,不能采取有针对性的策略缓存待查询数据。

【发明内容】

[0004]针对现有技术存在的不足,本发明提供了一种基于Apriori算法的数据缓存方法。
[0005]本发明的技术方案是:
[0006]—种基于Apriori算法的数据缓存方法,包括以下步骤:
[0007]步骤1:在磁盘中以天为单位记录T天内用户查询语句中的条件属性,建立T个查询日志,即用户查询内容。
[0008]步骤2:计算查询日志中各数据块的查询频繁度,根据得到数据块查询频繁度的大小获得查询频繁度高的多个数据块,形成频繁数据块集合。
[0009]步骤2.1:确定T个查询日志中各数据块中数据的查询次数。
[0010]步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例区分近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志数据查询次数上限阈值时,则该历史日志数据的查询次数取值为该上限阈值;当数据块中的近期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的查询次数取值为该上限阈值。
[0011]步骤2.3:对规范化处理后的数据块中数据的查询次数进行加权操作:分别对规范化处理后的T个查询日志中各数据块中数据的查询次数加权求和后取平均值,即得到各数据块的查询频繁度。
[0012]步骤2.4:根据各数据块查询频繁度的大小选择查询频繁度高的多个数据块,即频繁数据块,各频繁数据块形成频繁数据块集合。
[0013]步骤3:各频繁数据块的条件属性形成条件属性集合。
[0014]步骤4:计算条件属性集合中的每个条件属性的查询频繁度,根据得到条件属性查询频繁度的大小获得查询频繁度高的多个条件属性,形成频繁条件属性集合。
[0015]步骤4.1:确定T个查询日志中在频繁数据块中各条件属性的查询次数。
[0016]步骤4.2:对各条件属性的查询次数进行规范化处理:根据近期日志比例区分近期日志条件属性与历史日志条件属性,当历史日志条件属性的查询次数高于历史日志条件属性查询次数上限阈值时,则该历史日志条件属性的查询次数取值为该上限阈值;当近期日志条件属性的查询次数高于近期日志条件属性查询次数上限阈值时,则该近期日志条件属性查询次数取值为该上限阈值。
[0017]步骤4.3:对规范化处理后的条件属性查询次数进行加权操作:分别对规范化处理后的T天内的各条件属性的查询次数加权后求和取平均值,即得到各条件属性的查询频繁度。
[0018]步骤4.4:根据得到的各条件属性的查询频繁度,选择频繁度高的多个条件属性,即频繁条件属性,各频繁条件属性形成频繁条件属性集合。
[0019]步骤5:利用Apriori算法和频繁条件属性集合获得频繁条件属性组集合,条件属性的查询频繁度映射为Apriori算法中的支持度,Apriori算法得到的频繁项集即为频繁条件属性组集合。
[0020]步骤6:将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性集合中的频繁条件属性建立索引,完成数据缓存。
[0021]步骤7:当客户端需要进行数据查询时,根据要查询的数据的条件属性,进行查询操作:若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果;若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分频繁条件属性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询的数据的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操作。
[0022]本发明的有益效果在于,提出了一种全新的数据缓存方法,结合NoSQL数据库,在数据节点内存中开辟频繁数据列缓存区,本数据缓存方法在频繁区域中能够明显提高数据查询效率,而对于其他区域中的数据查询,由于未做任何处理,故不会影响其查询操作,缓存多个条件属性组相比单一条件属性具有更高的查询效率,对于条件属性组中条件属性个数处于中间规模的缓存,尽管牺牲了一部分缓存完全命中率,但该类缓存能够更出色地完成中间记录的精简工作,缩减内存中因部分条件属性命中而产生的中间结果集,并根据频繁条件属性索引快速定位数据,进而减轻数据库的检索压力,取得了更高的查询效率。
【专利附图】

【附图说明】
[0023]图1为本发明【具体实施方式】中运行环境HBase分割数据表过程图;[0024]图2为本发明【具体实施方式】中改进的数据查询过程图;
[0025]图3为本发明【具体实施方式】中基于Apriori算法的数据缓存方法流程图;
[0026]图4为本发明【具体实施方式】中查询条件属性不同命中情况处理流程图;
[0027]图5为本发明【具体实施方式】中不同缓存方式查询效率对比图;
[0028]图6为本发明【具体实施方式】中不同缓存方式条件属性命中情况对比图。
【具体实施方式】
[0029]下面结合附图对本发明【具体实施方式】进行详细说明。
[0030]本实施方式在Hadoop-HBase环境下,对查询数据以及用户查询行为使用新浪微博用户数据进行了仿真模拟,令T = 7,将仿真数据分成7等份,以模拟不同时间的查询日
O
[0031]HBase是一个面向列的NoSQL数据库,其作为Hadoop项目的一部分,运行于HDFS文件系统之上。在数据读取方面,HBase采取按列存储方法,相比于按行存储方法,减少了数据读取过程中冗余数据的读取,提高了数据读取效率,使数据检索更加迅速有效。在存储方面,HBase将规模较大的数据表分割成若干数据区域,即数据块,每个区域顺序存储数据表中一定数量的记录,将多个相关区域合并操作,即可获得完整的表信息。HBase数据表分割过程如图1所示。
[0032]HBase中的区域对应数据块概念,基于本实施方式的数据缓存方法,根据数据查询情况筛选出查询频繁的数据区域,即频繁数据快,将频繁度最高的若干区域中的频繁条件属性数据缓存至内存缓冲区中。当数据区域中的数据被访问时,根据查询条件属性与内存中的缓存的命中情况,进行不同的数据查询操作。在HBase环境下,数据查询过程如图2所示,客户端向数据区域服务器发送查询请求,数据区域服务器根据查询情况返回查询结果或进一步查询,若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果;若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分条件属性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询的数据的条件属性均不在内存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操作。而在Hadoop层的存储节点则负责加载磁盘数据和执行查询操作。
[0033]本实施方式的基于Apriori算法的数据缓存方法如图3所示,包括以下步骤:
[0034]步骤I在磁盘中以天为单位记录T天内用户查询语句中的条件属性,建立T个查询日志,即用户查询内容。
[0035]本实施方式中条件属性为新浪微博用户的年龄、性别、所在地区、注册日期、在线时间的个人信息,在实施过程中,共创建7个查询日志,表示最近7天的用户查询记录。
[0036]步骤2:计算查询日志中各数据块block的查询频繁度,根据得到数据块查询频繁度的大小获得查询频繁度高的多个数据块,即频繁数据块集合blockfd。假设共有3个数据块,分别为blocks、block2、block3,数据块Wock1查询频繁度计算过程如下:
[0037]步骤2.1:确定7个查询日志中各数据块数据的查询次数。
[0038]根据查询日志计数获得Wock1在7天中的查询次数Count (t)。据统计,Wock1相关查询在t取值为0、1、2、3、4、5、6时查询次数Count (t)分别为1350,1433,1236,1546,1354, 1029, 1175。[0039]步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例区分近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志数据查询次数上限阈值时,则该历史日志数据查询次数取值为该上限阈值;当数据块中的近期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的查询次数取值为该上限阈值。
[0040]对各数据块中的数据的查询次数Count (t)进行规范化处理:设置近期日志比例Qrec区分近期日志数据与历史日志数据,。根据用户实际需要设置,取值范围O < < 1,本实施方式取qM。= 0.3,则当t < QrecXT时,即前5天查询日志数据属于历史日志数据,当t≤q_XT时,即最近2天查询日志数据属于近期日志数据,对于数据块中的历史日志数据,设置历史日志数据查询次数上限阈值Maxhis,通常情况下,Maxhis应设置为所有记录平均查询次数的1.5倍,Maxhis = 1400,该数据块查询次数高于历史日志数据查询次数上限阈值时,则该数块据查询次数取值为该上限阈值,对于近期日志数据,设置近期日志数据查询次数上限阈值Maxra, Maxrec应设置为所有记录平均查询次数的2倍,Maxrec = 1700,当该数据块查询次数高于近期日志数据查询次数上限阈值时,则该数据块查询次数取值为该上限阈值,根据规范化公式(I)对查询次数Count (t)进行规范化处理:
[0041]
【权利要求】
1.一种基于Apriori算法的数据缓存方法,其特征在于,包括以下步骤: 步骤1:在磁盘中以天为单位记录天内用户查询语句中的条件属性,建立个查询日志,即用户查询内容; 步骤2:计算查询日志中各数据块的查询频繁度,根据得到数据块查询频繁度的大小获得查询频繁度高的多个数据块,形成频繁数据块集合; 步骤3:各频繁数据块的条件属性形成条件属性集合; 步骤4:计算条件属性集合中的每个条件属性的查询频繁度,根据得到条件属性查询频繁度的大小获得查询频繁度高的多个条件属性,形成频繁条件属性集合; 步骤5:利用Apriori算法和频繁条件属性集合获得频繁条件属性组集合,条件属性的查询频繁度映射为Apriori算法中的支持度,Apriori算法得到的频繁项集即为频繁条件属性组集合; 步骤6:将频繁条件属性组集合对应的数据缓存至内存中,并对频繁条件属性集合中的频繁条件属性建立索引,完成数据缓存; 步骤7:当客户端需要进行数据查询时,根据要查询的数据的条件属性,进行查询操作:若要查询的数据的条件属性全部为内存缓存的频繁条件属性,则直接得到查询结果;若要查询的数据的条件属性一部分为内存缓存的频繁条件属性,则根据该部分频繁条件属性的索引查询磁盘数据库中满足该部分条件属性的数据,完成查询操作;若要查询的数据的条件属性均不在内 存缓存的频繁条件属性集合中,则从磁盘中加载数据块进行查询操作。
2.根据权利要求1所述的基于Apriori算法的数据缓存方法,其特征在于,所述步骤2具体按如下步骤执行: 步骤2.1:确定T个查询日志中各数据块中数据的查询次数; 步骤2.2:对各数据块中的数据的查询次数进行规范化处理:设置近期日志比例区分近期日志数据与历史日志数据,当数据块中的历史日志数据的查询次数高于历史日志数据查询次数上限阈值时,则该历史日志数据的查询次数取值为该上限阈值;当数据块中的近期日志数据的查询次数高于近期日志数据查询次数上限阈值时,则该近期日志数据的查询次数取值为该上限阈值; 步骤2.3:对规范化处理后的数据块中数据的查询次数进行加权操作:分别对规范化处理后的T个查询日志中各数据块中数据的查询次数加权求和后取平均值,即得到各数据块的查询频繁度; 步骤2.4:根据各数据块查询频繁度的大小选择查询频繁度高的多个数据块,即频繁数据块,各频繁数据块形成频繁数据块集合。
3.根据权利要求1所述的基于Apriori算法的数据缓存方法,其特征在于,所述步骤4具体按如下步骤执行: 步骤4.1:确定T个查询日志中在频繁数据块中各条件属性的查询次数; 步骤4.2:对各条件属性的查询次数进行规范化处理:根据近期日志比例区分近期日志条件属性与历史日志条件属性,当历史日志条件属性的查询次数高于历史日志条件属性查询次数上限阈值时,则该历史日志条件属性的查询次数取值为该上限阈值;当近期日志条件属性的查询次数高于近期日志条件属性查询次数上限阈值时,则该近期日志条件属性查询次数取值为该上限阈值; 步骤4.3: 对规范化处理后的条件属性查询次数进行加权操作:分别对规范化处理后的T天内的各条件属性的查询次数加权后求和取平均值,即得到各条件属性的查询频繁度; 步骤4.4:根据得到的各条件属性的查询频繁度,选择频繁度高的多个条件属性,即频繁条件属性,各频繁条件属性形成频繁条件属性集合。
【文档编号】G06F17/30GK103995869SQ201410214776
【公开日】2014年8月20日 申请日期:2014年5月20日 优先权日:2014年5月20日
【发明者】张莉, 郭昆, 杨乐游 申请人:东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1