一种大数据快速读取的DLK方法与流程

文档序号:16918554发布日期:2019-02-19 19:09阅读:353来源:国知局
本发明涉及一种大数据缓存的快速读取方法,属于大数据
技术领域
:。
背景技术
::缓存被广泛应用到操作系统、cpu、数据库、cdn等领域,大量的学者针对置换算法进行了研究,基于经典的置换算法进行了不同的改进。lru-k算法在lru的基础上增加了一个访问历史队列,这个队列不缓存数据,仅存储数据的访问历史记录。在一定的周期内,某一数据在访问历史队列中出现的次数达到k次时,将该数据放入缓存中。johnson等提出的2q算法是基于两个lru缓存队列实现的,当数据在一定的周期内第一次被访问时,缓存到第一个缓存队列,当第一个缓存队列中的数据第2次被访问时,将该数据从第一个缓存队列移到第二个缓存队列。zhou等提出mq算法使用多个lru缓存队列存储缓存数据,当前缓存队列中的数据访问次数达到2次时,将缓存数据移至下一级缓存队列,如此往复,直到数据进入最后一级缓存队列。arc算法是一种动态的缓存算法,它使用了两个lru队列l1和l2进行数据的缓存,但是这两个队列的容量是动态变化的,与l1和l2一一对应的是两个访问历史队列h1和h2。hongbintsai等提出了一种时间偏移lru(time-shiftleastrecentlyused)算法——tslru。tslru使用fifo队列和最小堆(minheap)两种数据结构,fifo队列存储最近访问的数据,最小堆存储再次被访问的缓存数据。saihuang等提出了一种基于ssd的动态缓存算法larc。在分布式环境中,学者也进行了广泛的研究。如gewei等提出的hibase中建立了基于分布式内存的索引热点数据缓存替换策略和技术,对索引数据进行缓存,提升索引查询效率。其缓存实现的主要思想是当缓存空间未满时,采用“访问即插入”的策略,使得缓存空间得到充分利用;当缓存空间已满,需要执行置换操作时,通过数据的访问频率并结合热度衰减系数对每一条数据进行累积热度评分,将累积热度评分较低的数据淘汰,移出缓存。但是该算法在数据访问频率差不多的环境下,换入换出的操作会急剧增加,导致命中率下降。jingzhang等提出了一种面向实时云服务的缓存系统,在hadoop的分布式文件系统的上层增加了基于lru算法的分布式缓存层,对文件进行缓存。其缓存系统仍具有lru不关注数据访问频率的缺点。在大数据的挖掘分析中,数据通常具有冷热分布的特征:20%的数据在检索过程中会被频繁访问,剩下的80%数据较少被访问。为了提高数据的查询检索性能,减少磁盘的i/o操作,数据存储时普遍对热数据建立副本并存储在内存中,这些内存中的副本数据被称为缓存。分布式存储模式中bigtable,hbase等都提供了针对文件块的缓存。以hbase为例,它使用本地文件系统或者hadoop的hdfs作为存储支撑,将文件的文件块(block)缓存进blockcache中提升检索效率。在物理存储中,文件分为若干个文件块进行存储,文件块缓存将文件块作为缓存的最小单位,在缓存层与物理存储层使用相同的物理结构进行存储,减小了不必要的文件转换操作。但是,在大数据挖掘分析中,对数据的查询检索通常是针对记录的、分散随机的。文件块的缓存在顺序读的环境下能带来较高的命中率,对查询检索的效率有明显的提升;但在分散的、随机的读取环境下基于文件块的缓存策略并不是高效的、最适用的缓存策略。技术实现要素:本发明的目的是:提高缓存命中率及置换速度。为了达到上述目的,本发明的技术方案是提供了一种大数据快速读取的dlk方法,其特征在于,缓存空间内存储的缓存基本单位为<data,timestamp,k>,data为序列化数据,timestamp为访问时间,k为访问频次,将缓存空间划分为数据区及列表区,数据区用于存储data,列表区用于存储timestamp及k,则所述dlk方法包括以下步骤:步骤1、客户端发起检索请求,检索请求中包括了需要获取的数据的主键,系统接收到检索请求后,判断需要获取的数据是否在缓存空间中,若在缓存空间中,则缓存命中,从缓存空间中获得检索结果,若不在缓存空间中,则缓存未命中,从数据库中获得检索结果,将检索结果返回客户端;步骤2、检索结果返回客户端时,同时发生缓存更新操作,若步骤1中为缓存未命中,则缓存更新操作包括以下步骤:步骤2011、将从数据库得到的数据序列化为序列化数据data,记录访问频次k和访问时间timestamp;步骤2012、判断第一级缓存队列是否还有存储空间,若第一级缓存队列已满,依据lru规则,淘汰第一级缓存队列中的一条数据,进入下一步,否则直接进入下一步;步骤2013、缓存数据;若步骤1中为缓存命中,则缓存更新操作包括以下步骤:步骤2021、判断检索结果是否在第一级队列命中,若不是,则进入步骤2022,若是,则进入步骤2024;步骤2022、更新检索结果对应的访问频次k及访问时间timestamp;步骤2023、依据lru规则更新第二级队列;步骤2024、更新检索结果对应的访问频次k及访问时间timestamp;步骤2025、判断访问频次k是否大于等于kmax,kmax为访问频次阈值,若不是,则依据lru规则更新第一级队列,若是,则进入步骤2026;步骤2026、判断第二级队列是否还有空间,若有空间,则将检索结果对应的数据缓存进第二级队列并在第一级队列中删除,若没有空间,则依据lru规制淘汰第二级队列一条数据后,将检索结果对应的数据缓存进第二级队列;步骤2027、将第二级队列的淘汰数据缓存进第一级队列,依据淘汰数据的访问时间timestamp将淘汰数据插入第一级队列,确保第一级队列的时间戳有序性;步骤2028、更新淘汰数据的访问频次k,重置淘汰数据的访问频次k为相邻两条缓存数据的访问频次k的平均值,假设淘汰数据插入第一级队列的位置i处,则淘汰数据的访问频次k为:ki-1为第一级队列的位置i-1处的数据的访问频次,ki+1为第一级队列的位置i+1处的数据的访问频次。优选地,将数据缓存入缓存空间包括以下步骤:步骤301、结合序列化数据data的主键建立键值对,将键值对存储在数据区;步骤302、记录访问频次k及访问时间timestamp;步骤303、结合主键构建主键与访问频次k及访问时间timestamp的键值对;步骤304、将步骤303得到的键值对存储在列表区。本发明提出的分布式存储模式的面向记录的缓存方法,可以有效的提升分布式存储模式中的面向记录的检索效率,该方法优化了面向记录的检索速率,使用双队列的结构缓存高频和低频的缓存数据提升了缓存的命中率。在缓存空间中,划分了数据区和列表区,进一步优化了缓存的查询和异步执行效率。从优化算法提高命中率和优化数据存储结构提升执行效率两个方面提升了分布式存储模式的检索性能。附图说明图1展示的是分布式存储模式下的缓存结构,克服了分布式环境下面向文件块缓存的缺点,提升了命中率。图中同样展示了客户端在检索数据时的操作流,先在缓存中进行查找,如果没有命中,则在原数据库中查找,并缓存进缓存空间中。图2展示的是本发明中的数据检索流程,先在缓存中进行查找,如果没有命中,则在原数据库中查找,并缓存进缓存空间中。将数据返回给客户端后,更新缓存的相关信息。图3展示了构建缓存空间更新的基本流程。图4展示了构建缓存数据在缓存空间的基本单位的流程。图5展示了双队列置换算法的缓存未命中时的缓存更新的流程。图6展示了双队列置换算法的缓存命中时的缓存更新的流程。图7展示的是构建缓存空间及划分数据区和列表区的流程。图8展示的是数据检索模拟流程。具体实施方式下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。本发明涉及大数据分布式缓存策略,主要有以下三部分内容:(1)建立了分布式存储模式中面向记录的缓存结构。(2)提出了面向记录的缓存方法。本发明通过双lru结构区分数据访问频率,针对不同的访问频率将缓存数据进行一步划分为高频访问数据和低频访问数据,克服了循环查询过程中发生页面抖动导致查询速率下降和置换开销增大的缺点。(3)在缓存空间中,划分为数据区和列表区。将缓存数据和数据的缓存结构信息分别存储在不同的区域中,通过不同的存储结构,提升了数据的检索速度和置换处理的效率。本发明的技术核心在于第(2)部分和第(3)部分,在大数据分布式存储模式上提出面向记录的缓存及缓存算法。在分布式存储模式中,文件块的缓存是基于集群中各个节点的局部缓存,局部缓存虽然分解了缓存的压力,但局部缓存不如全局缓存命中率高。另一方面,文件块相较于数据中的记录来说,粒度太大,文件块缓存命中率较低。针对以上问题,本发明提出了基于记录的全局缓存算法,并在缓存中划分了数据区和列表区以提高缓存查询及置换的速度。根据以上思想,使用本发明的面向记录的缓存结构的数据检索流程如下:数据检索流程。由客户端发起检索操作,本发明涉及的系统接收检索请求,并根据检索条件在缓存中或原数据库中获取相应检索数据,并返回客户端。具体操作步骤如下:s101发起检索请求。客户端根据实际应用情况,发起检索请求。检索请求中包括了需要获取数据的主键。s102接收检索请求,根据需要获取数据是否在缓存空间中判断是否缓存命中。s103若需要获取数据在缓存空间中,则缓存命中,从缓存空间中获得检索结果。s104若需要获取数据不在缓存空间中,则缓存未命中,需要进行入原数据库进行查找。s105在原数据库中获得检索结果。s106将检索结果返回客户端。缓存更新流程。数据检索过程中,缓存命中与缓存未命中均会引发缓存更新操作。缓存更新操作主要涉及到了缓存数据的相关信息与结构。具体操作步骤如下:s201触发更新。检索操作触发缓存更新操作,缓存更新操作为异步操作,检索结果返回客户端时,同时发生缓存更新操作。s202判断是否缓存命中。s203若缓存命中,则启动缓存命中更新。只更新缓存数据的相关信息与缓存结构。s204若缓存未命,则启动缓存未命中更新。将新的检索数据缓存进缓存空间,并存储相关信息。同时,调整缓存结构。s205完成更新。在建立分布式存储模式的全局缓存结构中,本发明首先提出了面向记录的双队列缓存置换算法,使用双队列存储高频访问和低频访问的缓存数据。该方法的具体操作步骤如下:缓存空间中存储原始数据、访问频次以及最后一次访问时间。s301序列化原始数据,对数据库中的单条数据缓存时,进行字符串序列化或者二进制序列化,最后得到序列化后的序列化数据data。s302访问时间timestamp,记录当前数据被访问的时间戳,每次访问都会更新这个时间戳。s303访问频次k,记录当前数据被在缓存生命周期中访问的频次。每次访问一次,访问频次k增1。s304缓存基本单位:序列化数据data、访问时间timestamp、访问频次k组成缓存数据的一个基本单位。每一个缓存数据都包含以上三种信息。<data,timestamp,k>缓存空间中缓存数据的存储结构,本发明使用双队列进行缓存数据的组织存储,分为第一级队列,第二级队列。第一级队列使用lru置换算法,所有需要缓存的数据均缓存进第一级队列。当第一级队列中的数据访问次数达到kmax次时缓存进第二级队列。第二级队列也使用lru置换算法。其中kmax为指定的访问频次阈值。在以上的基础上,缓存数据的基本流程如下:缓存未命中时:s401数据处理。从数据库得到需要缓存的数据,进行序列化,记录访问频次k和访问时间timestamp。s402判断第一级缓存队列是否还有存储空间。s403若第一级缓存队列已满,依据lru规则,淘汰第一级缓存队列中的一条数据,进入下一步。s404缓存新数据。缓存命中时:s501判断缓存数据是否在第一级队列命中s502若第一级队列未命中,则缓存数据在第二级队列命中。s503更新缓存数据的访问频次k。s504更新缓存数据的访问时间timestamp。s505依据lru规则更新第二级队列。s506若缓存数据在第一级队列命中。s507更新缓存数据的访问频次k。s508更新缓存数据的访问时间timestamp。s509判断访问频次k是否大于等于kmax。s510若访问频次k小于kmax,则依据lru规则更新第一级队列。s511若访问频次k大于等于kmax,判断第二级队列是否还有空间。s512若第二级队列还有空间,则将该数据缓存进第二级队列并在第一级队列中删除。s513若第级队列没有空间,则依据lru规制淘汰第二级队列一条数据。s514将新数据缓存进第二级队列。s515将第二级队列的淘汰数据缓存进第一级队列。依据淘汰数据的访问时间戳将淘汰数据插入第一级队列,确保第一级队列的时间戳有序性。s516更新淘汰数据的访问频次k,重置淘汰数据的访问频次k为相邻两条缓存数据的访问频次k的平均值。假设淘汰数据插入第一级队列的位置i处,则淘汰数据的访问频次k为:ki-1为第一级队列的位置i-1处的数据的访问频次,ki+1为第一级队列的位置i+1处的数据的访问频次。在缓存空间中,本发明提出划分缓存空间为数据区和列表区的方法,使用数据区存储序列化数据,使用列表区存储缓存数据的队列信息。数据区中的数据以键值对的形式进行存储以提升查找效率。缓存空间中的组织结构如下:s601划分空间。将存储空间划分为数据区和列表区。s602划分数据区,数据区只存储序列化缓存数据,以键值对的形式进行存储。s603序列化缓存数据。s604结合数据主键建立键值对。s605将键值对存储在数据区。s606划分列表区。s607记录缓存数据的访问频次k。s608记录缓存数据的访问时间timestamp。s609结合主键构建键值对。s610将键值对存储在列表区。本发明所述的分布式模式中面向记录的缓存方法可以应用到只支持文件块缓存的分布式数据库中,本发明应用到apache的hbase分布式非关系型数据库中进行实验验证,在原数据库的上层搭建全局缓存层并使用本发明的缓存置换算法提升数据检索效率。具体方法如图8所示。以国内某主流银行的真实的网络交易数据为基础,数据集包含了银行三个月的b2c交易记录,抽取2万条数据,并生成高低频均匀分布的有序访问序列,序列长度为15万条。具体流程如下:s1将b2c交易数据存入hbase中。s2从hbase中抽取2万条数据。s3使2万条数据,生成15条有序数据序列,并保证数据序列中数据的出现的频次高低频均匀分布。s4提取15万条数据的主键,并保持原有的顺序。s5按照图7所示的流程进行数据检索,最后得到整个检索过程的时间消耗。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1