[发明专利]一种数据合并的方法和装置有效
申请号: | 201410645460.X | 申请日: | 2014-11-10 |
公开(公告)号: | CN104360824B | 公开(公告)日: | 2017-12-12 |
发明(设计)人: | 王锋 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 北京润泽恒知识产权代理有限公司11319 | 代理人: | 苏培华 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 合并 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种数据合并的方法和装置。
背景技术
目前几乎所有的大数据存储系统,基于存储与读写性能的考虑,在实现上都采用对了数据Append模式,即所有的写操作都将先将数据写入内存中的Memtable(内存表)即可,Memtable写满后Dump(转储)到磁盘上的SSTable(Sorted String Table,有序字符串表)文件中。
但是,当磁盘上SSTable文件数过多的时候,会导致来自客户端的检索请求所打开的文件数会很多,单个请求的资源消耗大幅增加,从而导致整个系统的吞吐和性能大幅下降。因此,系统需要再后台通过Compaction(可以理解为合并)机制将全部或部分SSTable文件合并成新的SSTable文件,以达到降低文件个数提高系统吞吐和性能、去除重复数据节省磁盘空间的目的。
但是现有的Compaction机制如图1所述,系统存在一个Compaction工作队列TaskQueue,当SSTable个数等满足一定的条件时会将这些SSTable文件作为一个Compaction(如图1中compaction task0、compaction task1、compaction task2)任务提交到工作队列中。每一个Compaction过程就是一个工作任务,工作线程worker按照提交顺序串行的执行Compaction任务,完成对应SSTable文件的合并。
但是随着用户的Keyspace(在Cassandra中,Keyspace就是数据的存储容器,一般Keyspace的存储大小是一样的)越来越多,以及数据的持续写入,各Keyspace的SSTable文件的个数会越来越多。而由于Compaction过程本质上是一个多路归并操作,即从若干个参与Compaction过程的SSTable文件中逐个读取每个key及其数据,进而合并输出到一个SSTable文件中。因此,对于那些平均数据长度很小(如几字节)的Keyspace而言,其做一次Compaction的时间远大于那些平均数据长度很大(如几百K)的Keyspace的Compaction时间。因为一般存储系统在keyspace由memtable表dump到磁盘时,memtable的容量是固定的,那么平均数据长度越小的keyspace中,其存储的用户数据条数更多,其key也更多。
那么,由图1的现有技术过程可知,在一个工作队列中,当包括大量的平均数据长度较小的SSTable的Compaction任务执行时,其Compaction过程持续时间很长,会严重阻塞其他Keyspace的SSTable的合并,从而导致系统层面整体数据Compaction执行时间过长,甚至无法保证每天新增数据的合并,进而导致系统访问吞吐性能下降。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据合并的装置和相应的一种数据合并的方法。
依据本发明的一个方面,提供了一种数据合并的方法,包括:
获取每个存储表的平均数据长度,并以所述平均数据长度对各个存储表进行分类;所述平均数据长度为存储表中存储的各用户数据的平均数据长度;
将同一分类的存储表对应的合并任务提交至负责所述分类的工作队列中;
由所述工作队列的工作线程执行所述合并任务。
优选的,还包括:
创建至少两个工作队列,所述工作队列的个数至少等于所述分类个数。
优选的,所述创建至少两个工作队列包括:
在系统启动时加载配置文件,通过所述配置文件设置并创建至少两个工作队列;所述配置文件中包括平均数据长度的分类与工作队列的对应关系。
优选的,还包括:
针对系统中的每个存储表,获取所述存储表的内存表数据转储至磁盘后的平均数据长度,并将所述平均数据长度存入所述存储表在系统内存的数据结构中。
优选的,针对系统中的每个存储表,获取所述存储表的内存表数据转储至磁盘后的平均数据长度,并将所述平均数据长度存入所述存储表在系统内存的数据结构中,包括:
在系统加载索引时,根据索引中记录的键的文件偏移和数据长度,计算现已存储所述存储表的用户数据的平均数据长度,并将所述平均数据长度存入所述数据结构;
在每次将存储表的内存表数据转储至磁盘时,利用内存表数据中新增的数据长度修正所述平均数据长度,并将修正后的平均数据长度更新至所述数据结构中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410645460.X/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置