数据扫描方法及装置的制造方法

文档序号:9687496阅读:308来源:国知局
数据扫描方法及装置的制造方法
【技术领域】
[0001] 本申请涉及数据处理技术领域,更具体的说是涉及一种数据扫描方法及装置。
【背景技术】
[0002] 在Key-Value(键-键值)分布式存储系统中,一种常用的数据存储结构为 LSM(X〇g-St;ruc1:ured Merge Tree,日志结构合并)树。
[0003] LSM树通常由多级结构组成,每一对Key-Value数据首先存储在LSM树的第一级, 在数据存储过程,若任一级的数据大小超出预设阔值时,即将该任一级中的数据写入下一 级中,并与下一级中相同Key范围的键值进行合并(compact)。
[0004] 由上述描述可知,Key-Value数据是按照合并的方式逐级存储,因此将存在大量的 Key-Value数据具有两个或更多版本。
[0005] 在进行数据读取操作时,特别是读取某一参数范围的数据扫描(SCAN)操作,为了 获得最新版本的数据,现有技术中通常是需要将所有版本的Key-Value数据依次全部读 出,W最终得到每个Key-Value数据的最新版本。而由于多个版本的存在,将会读取大量旧 版本的数据,从而造成I/O资源的浪费。

【发明内容】

[0006] 有鉴于此,本申请提供了一种数据获取方法、布隆过滤器生成方法及装置,实现了 数据获取时节省I/O资源的发明目的。
[0007] 为实现上述目的,本申请提供如下技术方案:
[000引本申请的第一方面,提供了一种数据扫描方法,用于读取键-值Key-Value分布式 存储系统中的数据,所述Key-Value分布式存储系统采用日志结构合并LSM树的数据结构 存储数据,所述方法包括:
[0009] 扫描在所述LSM树第一级存储的Key-Value数据;
[0010] 依次针对不包括所述第一级的每一级中的每一个存储块,执行如下操作:
[0011] 获取Ifey集合,所述Ifey集合包含有已扫描的Key-Value数据中的全部Key ;
[0012] 根据所述存储块存储的起始Key-Value数据中的Key W及结束Key-Value数据中 的Key,获得所述存储块的Key取值范围;
[0013] 获取由所述Key集合W及所述Key取值范围得到的Key交集;
[0014] 根据为所述存储块建立的Bloom Filter中存储的所述Key交集中的Key的数量, 获得所述存储块的扫描精确度,其中,所述Bloom Filter用于存储所述存储块中的key ;
[0015] 在所述存储块的扫描精确度小于预设的扫描精确度时,扫描所述存储块存储的 Ifey-Value 数据;
[0016] 在所述存储块的扫描精确度不小于预设的扫描精确度时,不扫描所述存储块存储 的 Key-Value 数据。
[0017] 在所述第一方面的第一种可能实现方式中,还包括:
[0018] 在所述Key交集为空集或者所述Key的数量为0时,扫描所述存储块存储的 Key-Value 数据。
[0019] 结合所述第一方面或所述第一方面的第一种可能实现方式,在所述第一方面的第 二种可能实现方式中,所述根据为所述存储块建立的Bloom Filter中存储的所述Key交集 中的Key的数量,获得所述存储块的扫描精确度包括:
[0020] 在所述Key交集不为空集时,获得所述Bloom Filter中存储的所述Key交集中的 Key的数量;
[0021] 在所述Key的数量不为0时,根据所述Key的数量,获得所述存储块的扫描精确 度。
[0022] 结合所述第一方面或所述第一方面的第一种可能实现方式,在所述第一方面的第 Η种可能实现方式中,所述根据为所述存储块建立的Bloom Filter中存储的所述Key交集 中的Key的数量,获得所述存储块的扫描精确度包括:
[0023] 获得为所述存储块建立的Bloom Filter中存储的所述Key交集中的Key的数量;
[0024] 根据所述Key的数量,按照下述公式计算所述存储块的扫描精确度:
[00 巧]
[0026] 其中,P表示扫描精确度,IV」表示所述交集中的Ifey数量,ISTiil表示第i级第j 个存储块中的Ifey数量,IV」表示在所述Bloom Filter中存储的所述交集中的Ifey数量, 所述F表示所述Bloom Filter的误判率;其中,i为大于1的整数,j为大于0的整数。
[0027] 结合所述第一方面的上述任一种可能实现方式,在所述第一方面的第四种可能实 现方式中,所述根据所述存储块存储的起始Key-Value数据中的Key W及结束Key-Value 数据中的Key,获得所述存储块的Key取值范围包括:
[0028] 获取内存中已保存的所述存储块存储的起始Key-Value数据W及结束Key-Value 数据;
[0029] 根据所述起始Key-Value数据中的Ifey W及所述结束Key-Value数据中的Key,获 得所述存储块的Key取值范围。
[0030] 第二方面,提供了一种数据扫描装置,用于读取键-值Key-Value分布式存储系统 中的数据,所述Key-Value分布式存储系统采用日志结构合并LSM树的数据结构存储数据, 所述装置包括:
[0031] 第一扫描模块,用于扫描在所述LSM树第一级存储的Key-Value数据;
[0032] 第一获取模块,用于依次针对不包括所述第一级的每一级中的每一个存储块,获 取Key集合,所述Key集合包含有已扫描的Key-Value数据中的全部Key ;
[0033] Key范围获取模块,用于根据所述存储块存储的起始Key-Value数据中的Key W及 结束Key-Value数据中的Key,获得所述存储块的Key取值范围;
[0034] Key交集获取模块,用于获取由所述Key集合W及所所述Key取值范围得到的Key 交集;
[0035] 扫描精确度获取模块,用于根据为所述存储块建立的Bloom Filter中存储的所述 Key交集中的Key的数量,获得所述存储块的扫描精确度,其中,所述Bloom Filter用于存 储所述存储块中的key ;
[0036] 第二扫描模块,用于在所述存储块的扫描精确度小于预设的扫描精确度时,扫描 所述存储块存储的Key-Value数据;在所述存储块的扫描精确度不小于预设的扫描精确度 时,不扫描所述存储块存储的Key-Value数据。
[0037] 在所述第二方面的第一种可能实现方式中,所述第二扫描模块,还用于在在所述 Key交集为空集或者所述Key的数量为0时,扫描所述存储块存储的Key-Value数据。
[0038] 结合所述第二方面或所述第二方面的第一种可能实现方式,在所述第二方面的第 Η种可能实现方式中,所述扫描精确度获取模块具体用于:
[0039] 在所述Key交集不为空集时,获得为所述存储块建立的Bloom Filter中存储的所 述Key交集中的Key的数量;
[0040] 在所述Key的数量不为0时,根据所述Key的数量,计算所述存储块的扫描精确 度。
[0041] 结合所述第二方面或所述第二方面的第一种可能实现方式,在所述第二方面的第 Η种可能实现方式中,所述扫描精确度获取模块具体用于:
[0042] 获得为所述存储块建立的Bloom Filter中存储的所述Key交集中的Key的数量;
[0043] 根据所述Key的数量,按照下述公式计算所述存储块的扫描精确度:
[0044]
[0045] 其中,P表示扫描精确度,IV」表示所述交集中的Ifey数量,|STi,|表示第i级第j 个存储块中的K巧数量,|v」表示在所述Bloom Filter中存储的所述交集中的Ifey数量, 所述F表示所述Bloom Filter的误判率;其中,i为大于1的整数,j为大于0的整数。
[0046] 结合所述第二方面的上述任一种可能实现方式,在所述第二方面的第四种可能实 现方式中,所述Key范围获取模块具体用于:
[0047] 获取内存中已保存的所述存储块存储的起始Key-Value数据W及结束Key-Value 数据;
[0048] 根据所述起始Key-Value数据中的Ifey W及所述结束Key-Value数据中的Key,获 得所述存储块的Key取值范围。
[0049] 经由上述的技术方案可知,与现有技术相比,本申请提供了一种数据扫描及装置, 在扫描数据时,首先扫描LSM树第一级存储的Key-Value数据,之后,针对不包括所述第一 级的每一级中的每一个存储,获得由已扫描Key-Value数据中的全部Key得到的Key集合, W及根据所述存储块存储的起始Key-Value数据中的Key W及结束Key-Value数据中的
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1