【技术实现步骤摘要】
文件合并方法和装置
本专利技术涉及数据存储
,特别是涉及存储在外部存储器中的文件的合并方法和装置。
技术介绍
纵观当今数据库的存储引擎,其底层的数据结构要么是B树或其变种B+树,要么则是LSM树。前者具有较好的读友好性,而后者具有较好的写友好性。尽管这两样东西看似鱼和熊掌不可兼得,但在贪婪的互联网世界里,却渴求能有兼容读、写皆友好的数据存储方案的出现。虽然LevelDB中采用的数据结构似乎也结合了LSM和B树,但始终不够彻底,首先在严格意义上它并非一颗B树,而只是简单的多叉树;其二,其Key(键)和Value(值)存放在一起,不利于索引的优化,这种优化在做数据合并时尤显重要。具体来说,LevelDB中存储在磁盘中的文件分为多个层级,不同层级有很多文件(SSTable文件),为了降低冗余度,提高可读性,需要对SSTable文件进行合并,由于SSTable文件中的键和对应的值是存储在一起的,因此在合并LevelDB文件时,需要取出所有的键值对一一处理,以构建新的文件,合并过程较为复杂,在提高可读性的同时会降低写性能。由此,需要一种读、写皆友好的文件合并方案。
技术实现思路
本专利技术的主要目的在于提供一种数据读、写皆友好的文件合并方法和装置。根据本专利技术的一个方面,提供了一种文件合并方法,文件存储在外部存储器中,包括文件头、数据块以及索引块,文件头用于记录文件的元数据信息,数据块用于存放值,索引块用于以B+树的形式存放值对应的键,其中,所有键及其对应的值在数据块中的逻辑地址均分别记录于B+树中的叶子节点中,该方法包括:在第一文件之后追加写入追加数据块,其中 ...
【技术保护点】
1.一种文件合并方法,所述文件存储在外部存储器中,包括文件头、数据块以及索引块,所述文件头用于记录文件的元数据信息,所述数据块用于存放值,所述索引块用于以B+树的形式存放所述值对应的键,其中,所有键及其对应的值在所述数据块中的逻辑地址均分别记录于所述B+树中的叶子节点中,该方法包括:在第一文件之后追加写入追加数据块,其中写入第二文件的数据块中的值;在所述追加数据块之后追加写入新索引块,所述新索引块是基于所述第一文件的索引块和所述第二文件的索引块生成的,所述第一文件的索引块和所述第二文件的索引块中的全部有效键及其对应的值在所述第一文件的数据块和所述追加数据块中的逻辑地址均分别记录于新B+树中的叶子节点中;在所述新索引块之后追加写入新文件头,以记录合并后的新文件的元数据信息。
【技术特征摘要】
1.一种文件合并方法,所述文件存储在外部存储器中,包括文件头、数据块以及索引块,所述文件头用于记录文件的元数据信息,所述数据块用于存放值,所述索引块用于以B+树的形式存放所述值对应的键,其中,所有键及其对应的值在所述数据块中的逻辑地址均分别记录于所述B+树中的叶子节点中,该方法包括:在第一文件之后追加写入追加数据块,其中写入第二文件的数据块中的值;在所述追加数据块之后追加写入新索引块,所述新索引块是基于所述第一文件的索引块和所述第二文件的索引块生成的,所述第一文件的索引块和所述第二文件的索引块中的全部有效键及其对应的值在所述第一文件的数据块和所述追加数据块中的逻辑地址均分别记录于新B+树中的叶子节点中;在所述新索引块之后追加写入新文件头,以记录合并后的新文件的元数据信息。2.根据权利要求1所述的文件合并方法,其中,所述元数据信息包括以下一项或多项:所述索引块中键的数量;所述索引块中键的范围;所述B+树的高度;所述B+树中第一个叶子节点的逻辑地址;所述B+树中内部节点的个数。3.根据权利要求1所述的文件合并方法,其中,构成所述B+树的所有节点在物理上连续存储。4.根据权利要求1所述的文件合并方法,还包括:根据所述新文件头更新所述第一文件的文件头,以用所述新文件头中的元数据信息替换所述第一文件的文件头中的元数据信息。5.根据权利要求4所述的文件合并方法,其中,所述文件包括位于文件头部的前文件头和位于文件尾部的后文件头,所述前文件头和所述后文件头的内容相同,根据所述新文件头更新所述第一文件的前文件头,作为新文件的前文件头,而以所述新文件头作为新文件的后文件头。6.根据权利要求4或5所述的文件合并方法,还包括:在所述新文件头中写入新文件的元数据信息的步骤出错的情况下,根据所述第一文件的文件头将新文件还原为合并前的所述第一文件;以及/或者在更新所述第一文件的文件头的步骤出错的情况下,根据所述新文件头重新更新所述第一文件的文件头。7.根据权利要求1-5中任何一项所述的文件合并方法,还包括执行以下步骤以从目标文件中读取请求键所对应的目标值:获取目标文件的文件头和索引块;根据所述文件头判断所述请求键是否在所述文件头所指示的键的范围内;在判定所述请求键在所述范围内的情况下,基于所述索引块的B+树结构,在所述索引块中查找对应于所述请求键的叶子节点;根据所查找到的叶子节点所存储的键所对应的值在所述目标文件中的数据块中的逻辑地址读取所述目标值。8.一种文件合并装置,所述文件存储在外部存储器中,包括文件头、数据块以...
【专利技术属性】
技术研发人员:郑主能,
申请(专利权)人:广州市动景计算机科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。