CN105045894A - 一种面向分布式顺序表的缓存方法及系统 - Google Patents
一种面向分布式顺序表的缓存方法及系统 Download PDFInfo
- Publication number
- CN105045894A CN105045894A CN201510463230.6A CN201510463230A CN105045894A CN 105045894 A CN105045894 A CN 105045894A CN 201510463230 A CN201510463230 A CN 201510463230A CN 105045894 A CN105045894 A CN 105045894A
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- score value
- sequence list
- distributed sequence
- 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
Links
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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及分布式信息处理技术领域,特别涉及一种面向分布式顺序表的缓存方法及系统,该方法包括为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
Description
技术领域
本发明涉及分布式信息处理技术领域,尤其涉及一种面向分布式顺序表的缓存方法及系统。
背景技术
NoSQL现有的缓存系统一般采用LRU缓存算法或者由LRU缓存算法改进而来的算法,如下所示:
LRU算法:LRU算法是根据对数据的历史访问记录来确定换入换出数据的策略,基本思想是:数据在最近被访问过,在未来会被访问的概率就更高,在具体实现中,一般使用LinkedList作为存储容器,缓存对象在被访问后将被重新放到缓存顶部,在换出对象时则从缓存底部开始,算法具体流程如下:(1)新缓存对象总是被放到缓存顶部;(2)当缓存中的缓存对象被访问后,缓存对象将被移到缓存顶部,这样缓存中的缓存对象总是按照最新的访问时间排序;(3)当缓存空间不足时,根据需要释放的空间大小,从缓存底部开始换出缓存对象。
TwoQueues算法:TwoQueues算法的基本思想是同时考虑时间、频率两个因素,利用分层的思想,将缓存分为L1和L2两层,两层均采用LRU缓存,算法具体流程如下:(1)当新的缓存对象换入时,首先进入L1层,如果L1层中的缓存对象再次被访问后,则将该缓存对象换入更大的L2层;(2)在需要换出数据时,首先换出L1中的数据,如果空间还是不足,再换出L2中的数据。
分布式顺序表的典型缓存算法(BucketCache):HBase是应用广泛的典型分布式顺序表,其使用的缓存算法是TwoQueues的变型——BucketCache,TwoQueues中,缓存被分为了L1和L2两层,但是在HBase使用的算法中,将缓存分为了3层,即Single、Multi和InMemory,存算法流程如下:(1)在缓存新数据时,如果数据被标记为InMemory,则直接缓存都InMemory中,否则跟TwoQueues中的处理方式一样,先进入Single,被访问后再进入Multi;(2)在换出数据时,则优先换出Single中的数据,其次是Multi,最后是InMemory。
上面提到的各种算法都是基于过去对数据的访问历史来确定换入换出策略的,但是仅仅基于数据的访问历史是很难准确预测未来的,从而造成缓存命中率较低,缓存的数据读取通量不高,因此,要进一步提高缓存的命中率需要考虑利用一些其他的信息,在分布式顺序表的具体实现中,可以利用查询操作的访问模式特征来提高缓存的命中率。
发明内容
针对现有技术的不足,本发明提出一种面向分布式顺序表的缓存方法及系统。
本发明提出一种面向分布式顺序表的缓存方法,包括:
步骤1,为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;
步骤2,当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
所述的面向分布式顺序表的缓存方法,所述步骤1包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
所述的面向分布式顺序表的缓存方法,缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
所述的面向分布式顺序表的缓存方法,若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存。
所述的面向分布式顺序表的缓存方法,记录各数据块的分值并保存。
本发明还提出一种面向分布式顺序表的缓存系统,包括:
获取数据范围模块,用于为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;
计算分值模块,用于当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
所述的面向分布式顺序表的缓存系统,所述获取数据范围模块包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
所述的面向分布式顺序表的缓存系统,缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
所述的面向分布式顺序表的缓存系统,若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存。
所述的面向分布式顺序表的缓存系统,记录分值模块,用于记录各数据块的分值并保存。以下为本发明的整体技术效果:
本发明通过实验数据证明本发明的技术效果,如下所示:
缓存系统的对比主要是对比缓存的命中率和数据读取通量,测试中选择了对比不同线程数量和不同缓存空间/查询结果集比例两种情况,如下所示:
不同线程数量测试,图1为命中率对比,本发明提出的方法及系统的命中率比BucketCache缓存提高了15个百分点以上;图2为读取通量对比,本发明提出的方法计系统的读取通量比BucketCache缓存提高了20%以上。
不同缓存空间/查询结果集比例测试,图3为命中率对比,本发明提出的方法及系统的命中率比BucketCache缓存都提高了16个百分点以上;图4为读取通量对比,本发明的方法及系统的读取通量比BucketCache缓存提高了24%以上。
附图说明
图1为不同线程数量的缓存命中率对比图;
图2为不同线程数量的缓存读取通量对比图;
图3为不同缓存空间/查询结果集比例的缓存命中率对比图;
图4为不同缓存空间/查询结果集比例的缓存读取通量对比图;
图5为缓存算法流程示意图;
图6为缓存系统架构图;
图7为ScoreManager模块的计分管理结构图;
具体实施方式
针对现有技术的不足,本发明提出一种面向分布式顺序表的缓存方法及系统,本发明通过分布式顺序表特有的存储结构来获取每个查询所涉及的数据范围信息,然后利用这些信息并结合数据被访问的情况来构建每个数据的实时动态得分,该得分代表了对应的数据在未来会被访问的次数,访问次数越多越应该保留在缓存中,最后利用每个数据的得分来指导数据的换入换出策略,以下为本发明方法详细步骤,如下所示:
本发明方法包括:
步骤1,为所有数据块设置基础分值(此基础分值不做限制,可以为任意整数),当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块,随着查询不断地提交和执行,不断地有DataBlock(数据块)需要访问,同时也有DataBlock已经访问过了,这是一个动态的过程,而得分代表的是某一时刻各个DataBlock在未来一段时间内被访问的情况;
步骤2,当数据块被缓存命中时,被命中的数据块的分值减去固定值(此固定值不做限制,可以为1、2、3等整数),当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块,其中记录各数据块的分值并保存。
所述步骤1包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
换入策略,若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存,这样可以避免不必要的缓存空间占用。
本发明还包括一种面向分布式顺序表的缓存系统,包括:
获取数据范围模块,用于为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;
计算分值模块,用于当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
所述获取数据范围模块包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存。
记录分值模块,用于记录各数据块的分值并保存。
以下为本发明一实施例,如图5所示:
情况1:查询提交时
在新的查询提交后,通过前面提到的方法可以获取查询所涉及的DataBlock(数据块),这些DataBlock就是该查询在接下来一段时间内会访问到的数据,因此需要将这些DataBlock的得分加一,减小它们被淘汰的几率。
情况2:缓存命中时
当一个已经被缓存的DataBlock被命中一次后,其得分应该减一,这是因为得分代表的是未来会被访问的情况,随着DataBlock被访问后,其未来会被访问的情况也就变化了,所以得分也应该随之变化。
情况3:淘汰DataBlock时
当缓存空间不足时,则会触发缓存的换出操作。在换出操作开始时,则会根据DataBlock的得分来排序,从最小得分的DataBlock开始淘汰。
情况4:缓存未命中时
当缓存未命中时,则需要根据DataBlock的得分来决定该DataBlock是否应该换入缓存,因为如果一个DataBlock的得分已经为0,则说明该DataBlock在已知的未来不会再被读取,则不应该再换入到缓存,这样可以避免不必要的缓存空间占用。
本发明的缓存系统设计如图6所示,整个系统主要分为以下3个模块:
DataBlock记分模块:此模块用于对DataBlock进行计分操作,为换入换出数据提供依据。该模块中的计分过程通过采用线程池技术进行并行执行;该模块使用ConcurrentSkipListMap作为容器,同时计分由AtomicLong完成,这样能保证每次操作的原子性,最终保证记分的正确性;该模块中的计分粒度以Trunk为最小单位,默认1trunk=16DataBlocks;该模块中使用HFile->Trunk->Score的两层map进行维护,如图7所示。
BlockIndexLoader模块:此模块用于根据每个查询的开始行键和结束行键来读取加载查询范围内的DataBlock信息,以便DataBlock记分模块进行得分更新操作。该模块中设计为两层结构,分为IndexLoader和IndexScanner。每一个IndexLoader对应一个HFile,它负责读取HFile上的索引信息;一个IndexLoader可以有多个IndexScanner,每个IndexScanner对应一个查询请求,保存每个查询请求的执行信息。
StoreManager模块:此模块用于实际存储加载到缓存中的DataBlock。该模块主要考虑3个操作,cacheBlock:此操作是当缓存命中失效时,在换入缓存的时候就可以采取措施将得分已经为0的DataBlock拦截下来,不再换入缓存;getBlock:此操作是从缓存中读取需要的DataBlock,每一次getBlock的操作都就标志着对DataBlock的一次访问,DataBlock的每一次访问后都需要将它的得分减一,以实时反映DataBlock在未来会被访问的情况;evictBlock:此操作是在缓存空间不足时或者已经使用的空间超过阈值时触发的,当新的DataBlock在换入缓存时发现缓存空间已经不足,则会触发缓存的换出操作,在系统实现中,当需要换出DataBlock时,我们会先遍历缓存中所有的DataBlock,然后使用一个大顶堆来选出得分最小的N个DataBlock进行换出操作。
Claims (10)
1.一种面向分布式顺序表的缓存方法,其特征在于,包括:
步骤1,为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;
步骤2,当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
2.如权利要求1所述的面向分布式顺序表的缓存方法,其特征在于,所述步骤1包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
3.如权利要求1所述的面向分布式顺序表的缓存方法,其特征在于,缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
4.如权利要求1所述的面向分布式顺序表的缓存方法,其特征在于,若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存。
5.如权利要求1所述的面向分布式顺序表的缓存方法,其特征在于,记录各数据块的分值并保存。
6.一种面向分布式顺序表的缓存系统,其特征在于,包括:
获取数据范围模块,用于为所有数据块设置基础分值,当进行数据查询操作时,通过分布式顺序表,获取数据查询操作所涉及的数据范围,统计数据范围中各数据块将要被访问的访问次数,将访问次数累加到相应的数据块;
计算分值模块,用于当数据块被缓存命中时,被命中的数据块的分值减去固定值,当缓存空间已满时,则触发缓存的换出操作,在换出操作开始时,根据数据块的分值进行排序,从分值最小的数据块开始淘汰,直到缓存空间能够增加数据块。
7.如权利要求6所述的面向分布式顺序表的缓存系统,其特征在于,所述获取数据范围模块包括:根据数据查询操作的起始行键定位到所述行键所属的区域,对每个区域下的所有文件按照起始行键在数据块索引结构上定位到第一个数据块索引项,从第一个数据块索引项开始顺序读取直到终止行键所在的数据块索引项,获取数据范围的所有数据块信息。
8.如权利要求6所述的面向分布式顺序表的缓存系统,其特征在于,缓存未命中数据块时,则根据未命中数据块的分值决定未命中数据块是否换入缓存。
9.如权利要求6所述的面向分布式顺序表的缓存系统,其特征在于,若数据块的分值为0,则分值为0的数据块在已知的未来不会再被读取,则不再换入到缓存。
10.如权利要求6所述的面向分布式顺序表的缓存系统,其特征在于,记录分值模块,用于记录各数据块的分值并保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510463230.6A CN105045894B (zh) | 2015-07-31 | 2015-07-31 | 一种面向分布式顺序表的缓存方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510463230.6A CN105045894B (zh) | 2015-07-31 | 2015-07-31 | 一种面向分布式顺序表的缓存方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045894A true CN105045894A (zh) | 2015-11-11 |
CN105045894B CN105045894B (zh) | 2018-12-04 |
Family
ID=54452441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510463230.6A Active CN105045894B (zh) | 2015-07-31 | 2015-07-31 | 一种面向分布式顺序表的缓存方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045894B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653642A (zh) * | 2015-12-25 | 2016-06-08 | 曙光信息产业股份有限公司 | 分布式文件系统的数据管理方法和装置 |
CN106294032A (zh) * | 2016-08-05 | 2017-01-04 | 上海交通大学 | 一种磁盘阵列单盘恢复的缓存方法及系统 |
CN106909518A (zh) * | 2017-01-24 | 2017-06-30 | 朗坤智慧科技股份有限公司 | 一种实时数据缓存机制 |
CN108153890A (zh) * | 2017-12-28 | 2018-06-12 | 泰康保险集团股份有限公司 | 缓存管理方法与装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504411B1 (en) * | 2009-09-14 | 2013-08-06 | Aol Advertising Inc. | Systems and methods for online user profiling and segmentation |
CN103631940B (zh) * | 2013-12-09 | 2017-02-08 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
CN103942289B (zh) * | 2014-04-12 | 2017-01-25 | 广西师范大学 | 一种Hadoop上面向范围查询的内存缓存方法 |
-
2015
- 2015-07-31 CN CN201510463230.6A patent/CN105045894B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653642A (zh) * | 2015-12-25 | 2016-06-08 | 曙光信息产业股份有限公司 | 分布式文件系统的数据管理方法和装置 |
CN106294032A (zh) * | 2016-08-05 | 2017-01-04 | 上海交通大学 | 一种磁盘阵列单盘恢复的缓存方法及系统 |
CN106294032B (zh) * | 2016-08-05 | 2019-06-28 | 上海交通大学 | 一种磁盘阵列单盘恢复的缓存方法及系统 |
CN106909518A (zh) * | 2017-01-24 | 2017-06-30 | 朗坤智慧科技股份有限公司 | 一种实时数据缓存机制 |
CN108153890A (zh) * | 2017-12-28 | 2018-06-12 | 泰康保险集团股份有限公司 | 缓存管理方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105045894B (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104115134B (zh) | 用于管理对复合数据存储设备进行访问的方法和系统 | |
CN103885728B (zh) | 一种基于固态盘的磁盘缓存系统 | |
CN104298610B (zh) | 资料储存系统及其管理方法 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
CN103019958A (zh) | 使用数据属性来管理固态存储器里的数据的方法 | |
CN102306503B (zh) | 一种假容量存储器的检测方法及系统 | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
CN105045894A (zh) | 一种面向分布式顺序表的缓存方法及系统 | |
CN106547476A (zh) | 用于数据存储系统的方法和装置 | |
CN110413211B (zh) | 存储管理方法、电子设备以及计算机可读介质 | |
CN107220185A (zh) | 基于闪存的数据存储方法、装置以及闪存芯片 | |
CN103150245B (zh) | 确定数据实体的访问特性的方法和存储控制器 | |
US10481817B2 (en) | Methods and apparatus to optimize dynamic memory assignments in multi-tiered memory systems | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
CN106557272A (zh) | 一种高效的传感器历史数据归档方法 | |
CN110532200A (zh) | 一种基于混合内存架构的内存系统 | |
CN105980992A (zh) | 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法 | |
CN105917303A (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
CN104156323A (zh) | 一种高速缓冲存储器的数据块长度自适应读取方法及装置 | |
CN103383666A (zh) | 改善缓存预取数据局部性的方法和系统及缓存访问方法 | |
CN102354301B (zh) | 缓存分区方法 | |
US9477416B2 (en) | Device and method of controlling disk cache by identifying cached data using metadata | |
CN104156432A (zh) | 一种文件访问方法 | |
CN105955672A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |