[发明专利]SSTable文件存储方法及装置有效
| 申请号: | 201410039183.8 | 申请日: | 2014-01-27 |
| 公开(公告)号: | CN103744628A | 公开(公告)日: | 2014-04-23 |
| 发明(设计)人: | 杨威;唐会军 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
| 主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F17/30 |
| 代理公司: | 北京市浩天知识产权代理事务所 11276 | 代理人: | 宋菲;刘兰兰 |
| 地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | sstable 文件 存储 方法 装置 | ||
技术领域
本发明涉及网络通信技术领域,具体涉及一种SSTable文件存储方法及装置。
背景技术
SSTable(Sorted String Table,排序字符串表)文件能够将内存中的数据按照KEY-VALUE的形式高效地存储到磁盘上。具体地,每当内存中写入的数据达到一定大小后,就会一次性刷新到磁盘上形成一个或多个SSTable文件。其中,一次生成多个SSTable文件的情况主要是在要存储的数据量超过了一个标准的SSTable文件的预设大小时才会发生,否则,一次只需生成一个SSTable文件即可。其中,每个SSTable文件包含多条行数据。每条行数据通过一个键值来标识,该键值相当于KEY-VALUE结构中的KEY;每条行数据中存储的数据内容相当于KEY-VALUE结构中的VALUE。并且,每个SSTable文件中的各条行数据是按照键值KEY的大小有序存储的。
这些刷新到磁盘上的SSTable文件一旦形成就只能读取不能修改。由于内存中不断有新的数据写入,因此,每隔一定的时间就会形成一些新的SSTable文件。因此,如果不对磁盘上的各个SSTable文件进行定期整理并重新存储,则会占用大量的磁盘空间,进而导致磁盘空间不足。
目前,在对磁盘上的各个SSTable文件进行定期整理时,主要是通过对各个SSTable文件中键值相同的行数据进行合并来实现的。例如,对于KEY=DFCD3454的键值来说,该键值可能在每个SSTable文件中都存在着对应的行数据,由于这些不同的SSTable文件中的行数据都具有相同的键值,因而表明这些行数据都是关于同一信息项的内容,因此,只需要保留一条最新的行数据以供查询,而对于内容重复的行数据或者时间较早的行数据则可以直接删除。为了实现这一点,需要将磁盘中的所有SSTable文件都打开并读取其中的内容才能确定出关于每一键值的最新存储结果。
但是,上述方式存在着以下明显缺陷:每次合并存储时都需要同时打开磁盘中的所有SSTable文件,因此当磁盘中的SSTable文件占用空间大于整个磁盘空间的二分之一时,则无法进行上述合并存储工作。例如,假设磁盘空间的总大小为15T,且当前磁盘空间中已经存储了10T的SSTable文件,此时,如果要将这些SSTable文件同时打开,则需要磁盘能够额外提供10T的缓存空间,而这只有在磁盘总大小不小于20T的情况下才能完成,由此可见,现有的SSTable文件的合并存储方式存在很大的局限性,对磁盘空间的要求较高。而且,即使磁盘空间充足,但是由于上述操作需要同时占用很多的系统进程,因而操作失败或死机的风险很高。
另外,在现有的合并存储方式中,合并后的每个SSTable文件中依然包含所有的键值,因此,合并后SSTable文件的键值数量并未得到简化,导致每次合并过程都会存在上述的诸多缺陷。而且,正是由于合并后SSTable文件的键值数量没有得到简化,因此,每次对SSTable文件进行扫描或读取时都必须打开所有的SSTable文件,所以也不能显著降低扫描或读取操作时的工作量。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的SSTable文件存储方法及装置。
依据本发明的一个方面,提供了一种SSTable文件存储方法,包括:读取合并前的多个SSTable文件,其中,每个合并前的SSTable文件中包含多条通过键值标识的行数据;确定所述合并前的多个SSTable文件所对应的键值区间,其中,所述合并前的多个SSTable文件所对应的键值区间由所述合并前的多个SSTable文件中包含的最大键值和最小键值界定;将所述合并前的多个SSTable文件所对应的键值区间划分为多个子区间,且每个子区间分别对应一个预设的子目录;对所述合并前的多个SSTable文件中所有键值相同的行数据进行合并,将合并后的行数据按照键值与子区间的对应关系存储为多个合并后的SSTable文件,将所述多个合并后的SSTable文件分别存储到对应子区间的子目录下。
可选地,每个合并前的SSTable文件所对应的键值区间相同,且所述每个合并前的SSTable文件所对应的键值区间由该SSTable文件中包含的最大键值和最小键值界定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410039183.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于多屏幕观看的内容分发的方法和装置
- 下一篇:背部触控方法及其移动终端





