CN103326730A - 数据并行压缩方法 - Google Patents
数据并行压缩方法 Download PDFInfo
- Publication number
- CN103326730A CN103326730A CN201310223858XA CN201310223858A CN103326730A CN 103326730 A CN103326730 A CN 103326730A CN 201310223858X A CN201310223858X A CN 201310223858XA CN 201310223858 A CN201310223858 A CN 201310223858A CN 103326730 A CN103326730 A CN 103326730A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- dictionary
- compressed
- encoding
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种数据并行压缩方法,该方法包括读取步骤,通过并行I/O从存储装置中读取待压缩数据;切分步骤,将待压缩数据均匀切分成N个数据块,并将所述N个数据块保存至每个数据块所对应的输入缓冲区;压缩编码步骤,每个进程控制对应的输入缓冲区中的数据块,并利用多线程的方法对该数据块进行并行压缩编码,将压缩编码后的数据存入输出缓冲区;写入步骤,合并输出缓冲区中各个进程并行压缩编码后的数据,并将所述合并后的数据写入输出文件中。该方法在取得理想的压缩比的同时,大大降低压缩过程对时间的开销,能够很好的应用于云存储或数据库系统中,解决压缩实时性不高的问题,提高了压缩的整体性能。
Description
技术领域
本发明涉及数据压缩领域,尤其涉及一种数据并行压缩方法。
背景技术
数据压缩算法指通过编码的方式,使用更少的比特位数来表示原始数据的算法。数据压缩算法发挥的功能主要包括三个方面:1、降低对海量数据所带来的存储空间的消耗;2、数据压缩之后再进行磁盘数据的存储和读取,降低了I/O的负载,从而提升了系统的整体性能;3、数据压缩后再传输可以降低对网络带宽的负载。
评价一个压缩算法好坏的指标主要有两个:压缩时间和压缩比,所述压缩时间是指压缩过程需要的时间,所述压缩比是指数据压缩前后大小的比值。压缩时间与压缩比是一对相互制约的指标,高的压缩比往往需要以牺牲压缩时间为代价。不同的领域所关注的压缩性能不同,对于云存储以及数据库存储系统来说,一方面,较高的压缩比能够缓解海量数据所带来的存储压力;另一方面,为了保证文件存储与读取的实时性,又需要压缩时间足够短。所以一个好的面向云存储与数据库系统的压缩算法,必须要均衡考虑压缩时间与压缩比,从而取得整体性能的最优。
目前广泛使用的压缩算法主要都是串行算法,虽然能保证很高的压缩比,但是在压缩时间上性能并不理想。LZMA算法与Deflate算法都是基于字典的压缩算法。字典压缩的主要思想是建立字符串字典并且对出现在字典中的字符串进行替换,用偏移量、匹配长度等比较小的信息来代替原始数据中重复出现的字符串,它的基本原理是将一个可以跟随压缩过程不断向压缩进行方向滑动的大小固定窗口作为字典,如果将要被压缩的字符串在当前的窗口中出现,那么在输出结果中将不会有该字符串,取代它的是该字符串在滑动窗口中的偏移位置、长度以及下一字符等信息。通过使用大的查询字典、产生索引的哈希函数以及对字典编码结果进一步进行区间编码等操作,LZMA算法能取得非常优越的压缩比。但是,在进行字符串匹配的过程中,大的查询字典以及哈希函数查找等过程也会带来压缩时间的消耗,所以LZMA在压缩时间性能有待提高。gzip软件与zlib库是应用非常广泛的两种压缩软件,他们的实现原理都是Deflate算法。Deflate通过对字典编码的结果再进行一次霍夫曼编码,来实现压缩比的进一步提升。Deflate也不能取得很好的压缩比与压缩时间的整体性能,不能适应云存储系统以及数据库系统中对数据处理高实时性的要求。
与传统的串行压缩算法相比,Pigz软件是基于Deflate算法实现的一款并行压缩软件,在压缩时间上有了很大的提升。但是由于使用并行方法破坏了文件的整体性,导致其压缩率的性能比较差。
发明内容
鉴于以上内容,有必要提供一种数据并行压缩方法,在取得理想的压缩比的同时,其能大大降低压缩过程对时间的开销,能够很好的应用于云存储或数据库系统中,解决压缩实时性不高的问题,提高了压缩的整体性能。
一种数据并行压缩方法,该方法包括读取步骤,通过并行I/O从存储装置中读取待压缩数据;切分步骤,将待压缩数据均匀切分成N个数据块,并将所述N个数据块保存至每个数据块所对应的输入缓冲区;压缩编码步骤,每个进程控制对应的输入缓冲区中的数据块,并利用多线程的方法对该数据块进行并行压缩编码,将压缩编码后的数据存入输出缓冲区;写入步骤,合并输出缓冲区中各个进程并行压缩编码后的数据,并将所述合并后的数据写入输出文件中。
相较于现有技术,所述数据并行压缩方法,能充分挖掘多核CPU的并行计算能力,每个进程独立地控制各自的数据块,多个进程进行并行压缩操作,每个进程中又有多个字典编码线程独立地控制各自的数据区域,多个字典编码线程进行并行字典编码,所述多个字典编码线程进一步提高了并行度。该方法在取得理想的压缩比的同时,大大降低压缩过程对时间的开销,能够很好的应用于云存储或数据库系统中,解决压缩实时性不高的问题,提高了压缩的性能。所述数据并行压缩方法也能很好的应用于解压缩。
附图说明
图1是本发明数据并行压缩系统的应用环境图。
图2是本发明数据并行压缩方法的较佳实施例的流程图。
图3是本发明压缩数据被切分成三个数据块的示意图。
图4是步骤S13的细化流程图。
图5是数据块被分为多个数据区域的示意图。
图6是步骤S42的细化流程图。
图7是本发明哈希线程、BT线程及主线程重叠工作的示意图。
主要元件符号说明
电子装置 | 1 |
存储器 | 12 |
数据并行压缩系统 | 13 |
读取模块 | 130 |
切分模块 | 131 |
压缩编码模块 | 132 |
写入模块 | 133 |
处理器 | 14 |
客户端 | 2 |
存储装置 | 3 |
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
如图1所示,是本发明数据并行压缩系统的应用环境图。该数据并行压缩方法应用于电子装置1中对数据进行压缩编码及解码处理。该电子装置1还包括存储器12、数据并行压缩系统13及处理器14,该电子装置1还与存储装置3及客户端2相连。所述电子装置1及客户端2可以是电脑、手机、PDA(Personal Digital Assistant,个人数字助理)等。所述存储装置3用于存储待压缩的数据,可以是磁盘、硬盘、软盘及U盘等。
所述存储器12用于存储所述数据并行压缩系统13的程序代码和压缩后的数据等资料。
所述处理器14用于执行具有一定固定功能的一系列计算机程序段。
所述数据并行压缩方法包括数据并行及任务并行。所述数据并行是使用多进程(如MPI)的方法,主要完成待压缩数据的有效分块,然后每个进程控制各自的数据块,同时进行压缩操作,最后把各个数据块的压缩结果合并输出。
所述任务并行是在数据并行的基础上,对每一个进程所控制的数据块的编码处理中,再采用多线程的方法(如OpenMP,Pthread)来进一步进行并行度的挖掘。所述任务并行又分为多层次的任务并行,主要包括输入缓冲区任务并行,串行任务拆分并行及定长数组任务并行。所述输入缓冲区任务并行、串行任务拆分并行及定长数组任务并行都可以同时进行处理。所述数据并行及任务并行的内容将在后续详述。所述数据并行压缩系统13由一个或者多个模块构成,所述模块包括读取模块130、切分模块131、压缩编码模块132及写入模块133,所述模块的功能将在后续中详述。
如图2所示,是本发明数据并行压缩方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S11,读取模块130通过并行I/O从存储装置3中读取待压缩的数据。所述I/O可以是多路径I/O(MultiPath I/O,MPIO)。
步骤S12,切分模块131根据电子装置1可供使用的计算核数将待压缩的数据均匀切分成N个数据块,并将每个所述数据块保存至该数据块所对应的输入缓冲区中。
所述计算核数由CPU的个数以及CPU内的核数决定。所述输入缓冲区(input buffer)为在电子装置1的内存中开辟出的一段连续空间,用来存储输入数据,供数据并行压缩系统13进行访问、读写等操作。
详细地,切分模块131将待压缩的数据切分成N个数据块时,每个数据块的大小一样或者尽量接近,以尽量降低各个进程负载不均衡对性能的影响。每个数据块对应一个进程,该进程用于控制对该数据块进行压缩编码,从而得到该数据块的压缩结果。在不超过系统的最大进程数的前提下,使用的进程数越多,能更好地提高并行度。每个进程中又有多个线程,所述线程的工作在后续详述。
每个所述进程对应各自的一个所述输入缓冲区,即电子装置1中共有N个数据块、N个进程及N个输入缓冲区。
在本实施例中,以有两个CPU为例,每个CPU有6个核,即共有12个计算核。对于这12个计算核,进程及线程是可以分时复用的,比如当前时刻第一个计算核在做进程一的工作,做完之后马上又去做线程二的工作。计算核该做什么工作是根据当前程序的进度需要来完成调度的。
在各个数据块进行并行压缩时,各个数据块间是相互独立的,这样可以使数据并行取得接近线性的可扩展性,从而取得非常优异的压缩速率。
在本实施例中,如图3所示,以N取3为例,待压缩数据被切分成三个数据块,数据块一对应进程一、数据块二对应进程二、数据块三对应进程三,而且进程一、进程二及进程三在并行压缩中是相互独立的。
步骤S13,压缩编码模块132通过每个进程从其对应的输入缓冲区中读取数据块,并利用多线程的方法对该数据块进行压缩编码,然后将压缩编码后的数据存入输出缓冲区。
详细地,所述压缩编码分为字典编码及区间编码。所述字典编码是基于字典的压缩处理,其包括字典初始化、字典查询以及字典更新操作。每个数据块中的待压缩字符串在经过字典编码之后,被转换为由匹配位置、匹配长度、以及下一字符组成的一系列的三元组。所述区间编码是对字典编码得到的一系列三元组进行编码以进一步减少数据的冗余度。所述三元组在后续详述。
所述压缩编码的流程图将在图4中详述。
步骤S14,写入模块133在每个进程都完成对各个数据块的压缩编码后,将输出缓冲区中各个进程编码后的数据合并,将合并后的数据写入最后的输出文件中。
所述输出缓冲区(output buffer)为在电子装置1的内存中开辟出的一段连续空间。
在本实施例中,所述数据并行包括步骤S11、S12及S14。所述任务并行包括步骤S13。
如图4所示,是步骤S13的细化流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S40,每个进程从电子装置1中读取其对应的输入缓冲区,按照预设的线程数M将该输入缓冲区划分成M个数据区域。
详细地,该步骤即为输入缓冲区任务并行,即将N个数据块读入到各自对应的输入缓冲区后按照预设的线程数M将每个输入缓冲区再进行划分,每个输入缓冲区被划分为M个数据区域,每个字典编码线程负责一个数据区域,独自的进行字典编码。每个字典编码线程的字典编码是相互独立的,多个字典编码线程并行进行操作。
在本实施例中,如图5所示,以将数据块一对应的输入缓冲区一划分为三个数据区域为例。一个字典编码线程对一个数据区域进行字典编码。
步骤S41,进程中的每个字典编码线程在字典编码开始前构建自己的初始化字典,并将该字典的索引保存至索引缓冲区。
所有字典编码线程中的第一个开始编码的字典编码线程直接从自己的数据区域中获取数据来初始化字典,其他字典编码线程从其上一个字典编码线程所对应的数据区域的尾端获取一段数据,并根据所获取的数据初始化字典,并将构建的字典存储至输入缓冲区中。
在本实施例中,如图5所示,输入缓冲区一依次被划分为数据区域一、数据区域二及数据区域三。字典编码线程一为第一个开始编码的线程,其根据数据区域一的数据来初始化字典,字典编码线程二在对数据区域二开始字典编码前,先根据数据区域一的Y区域的数据来构造自己的初始化字典,并将字典存储至输入缓冲区中。这样可以增加后续的字典查询匹配的概率,继而增加压缩率。所述数据区域一的Y区域仍由字典编码线程一对其进行字典编码。
所述索引缓冲区存储字典的索引,用于快速查找字典中某一n-哈希值字符串所在的位置。所述n-哈希值为字符串前n个字符(n=2,3,4)的ASCII码的值。该索引缓冲区由son table与hash table两个功能模块来实现。所述son table存储着字典中n-哈希值字符串的索引,所述hash table存储着son table的地址索引。实现son table的数据结构,可以是二叉搜索树、动态链表或者是定长数组等,即字典中具有相同n-哈希值的字符串的索引存储于同一棵二叉树上,或同一个链表中,或同一个定长数组。而用来获取这些数据结构的首地址索引存储至hash table中,所述首地址索引是指所述二叉树的顶点的地址、所述动态链表或者定长数组的初始元素的地址。
比如,以使用二叉树实现son table为例,具有同一n-哈希值的字符串可能有多个(比如ABCDEF,ABCDERF,ABCDWE都与ABCD具有相同的4-哈希值)这些具有相同4-哈希值的字符串在字典中的位置索引就存在son table中并构成了同一棵二叉树,而二叉树的顶点的地址(即首地址索引)则存在hash table中。首先,通过hash table能找出son table中具有某一n-哈希值的二叉树的顶点,然后通过遍历son table中的这棵二叉树,便可以定位出字典中具有该哈希值的所有字符串的位置。
在使用定长数组的数据结构实现son table功能时采用并行的方法,即为定长数组任务并行。根据son table的定义,在使用定长数组数据结构实现son table时,定长数组中存储的每个元素就是数据字典中具有相同n-哈希值的字符串的地址索引。遍历整个定长数组,就能得到字典中具有某一n-哈希值的字符串的位置。在这种定长数组的结构下,由于定长数组长度固定且数组的各个元素不相互依赖,在进行查询的时候可以将其进一步划分,然后采用多个线程进行并行字典查询。定长数组的数据结构并行可以进一步提高数据的压缩速率,但是会以牺牲一定的压缩比为代价。在某些对实时性要求极高的系统中,压缩速率往往起到至关重要的作用,因此使用定长数组的数据结构并行的方法,可以进一步提高压缩速率。
步骤S42,进程中的每个字典编码线程对其所对应的数据区域进行字典编码,并将对该数据区域编码得到的三元组保存至三元组缓冲区(Tripletbuffer)。
详细地,该步骤即为串行任务拆分并行,即使用多个线程来实现字典编码的过程。所述字典编码中的字典查询及字典更新可分为三个过程:字典搜索匹配集合、确定最优匹配项及字典更新。每个所述字典编码线程在控制字典查询及字典更新时再开辟三个子线程,即哈希线程(Hash thread)、Bt线程(Bt thread)及主线程(Main thread)。并用哈希线程控制字典搜索匹配集合、用Bt线程控制确定最优匹配项及用主线程控制字典的更新。具体流程将在图6中详述。
所述三元组缓冲区是在电子装置1的内存中开辟出的一段固定区域,用于存储对数据区域经过字典编码后所输出的三元组,以供区间编码进行访问。
步骤S43,区间编码线程从三元组缓冲区中读入数据进行区间编码,将经过区间编码后的结果保存至输出缓冲区中。
所述区间编码线程不需要等所有字典编码线程都结束后才开始,一旦三元组缓冲区中有字典编码线程对其数据区域的编码后的数据,区间编码线程就可以工作。
在本实施例中,区间编码线程与字典编码线程存在数据依赖性,当字典编码线程一所对应的数据区域进行字典编码,并将部分编码后的数据写入了三元组缓冲区后,区间编码线程就可以开始对三元组缓冲区中该数据区域的数据进行区间编码。这样通过合理的划分线程任务,可以有效的重叠字典编码与区间编码这两个过程。
如图6所示,是步骤S42的细化流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S420,哈希线程根据数据区域中的待压缩字符串在输入缓冲区中的起始地址开始计算出该待压缩字符串的n-哈希值。
在本实施例中,首先计算4-hash值进行匹配,若匹配不成功,进行3-哈希值匹配,依次类推。如果在字典中找不到4-哈希、3-哈希和2-哈希值,则说明匹配不成功,即待压缩的字符串在字典中未出现。
步骤S421,哈希线程通过查询字典的hash table找到son table中所述n-哈希值的所述首地址索引。并将该首地址索引保存到哈希缓冲区中。
步骤S422,Bt线程从哈希缓冲区中读取所有首地址索引,将所述首地址索引分别定位到字典中对应的位置。
步骤S423,在字典的son table中,Bt线程从每个首地址索引的位置开始遍历每个首地址所在的同一个son table的数据结构(即字典中具有相同n-哈希值的字符串所在的同一棵二叉树上,或同一个链表中,或同一个定长数组),依次与待压缩字符串进行匹配,找出最优匹配项,并将最优匹配项及该最优匹配项在字典的地址保存至Bt缓冲区(Bt buffer)中。
所述最优匹配项是与待压缩字符串的匹配长度最长的字符串。
在本实施列中,以待压缩字符串为ABCDEFG、进行4-哈希匹配(即n取4),使用二叉树实现son table为例描述步骤S420至S423,那么待匹配字符串为ABCD。哈希线程在索引缓冲区中的hash table中搜索出sontable中具有ABCD的4-哈希值的二叉树的顶点的地址(即首地址索引),并将二叉树的顶点的地址保存至哈希缓冲区。Bt线程从哈希缓冲区中读取该二叉树顶点的地址。在字典的son table中,Bt通过遍历二叉树的所有子节点的方法找出字典中该所有子节点的指针所对应的字符串为ABCD、ABCDE、ABCDEF,并将ABCDEFG字符串与ABCD、ABCDE、ABCDEF相匹配,则ABCDEF即为最优匹配项为止。
步骤S424,主线程根据从Bt缓冲区中读取待压缩字符串的最优匹配项及该最优匹配项在字典中的地址,进行编码生成三元组,将该三元组存储到三元组缓冲区(Triplet buffer)中。
所述三元组中的匹配位置为待压缩字符串的最优匹配项在字典的索引;所述三元中的匹配长度为最优匹配项与待压缩字符串所匹配的最大长度;所述下一个字符为最优匹配项在待压缩字符串中的下一个字符。在本实施例中,以待压缩字符串为ABCDEFG、最优匹配项为ABCDEF为例,匹配位置为ABCDEF在字典中的索引、匹配长度为6、下一个字符为“G”。
步骤S425,主线程对索引缓冲区的字典进行更新以进行下一个待压缩字符串的编码,直至该字典编码线程完成其对应的数据区域的所有数据的字典编码。
所述字典的更新是指完成字典窗口向着压缩进行方向的滑动,将待压缩字符串更新到字典中,并更新son table与hash table的过程。
在本实施例中,如图7所示,所述哈希线程、Bt线程及主线程之间存在一定的数据依赖性,所以不能完全的独立并行,但是可以将各个线程的工作进行一定的重叠,所述哈希线程与Bt线程的工作部分重叠进行,所述Bt线程与主线程的工作部分重叠进行。即Bt线程不需要等待哈希线程的工作全部完成后就可以开始工作,主线程也不需要等待Bt线程的工作全部完成后就可以开始工作。
在本实施例中,所述哈希线程计算完当前待压缩字符串的前n个(n=2,3或4)字符的哈希值后,不需要等待当前待压缩字符串的字典编码全部完成后,就可以启动进行下一个待压缩字符串的字典编码,以达到并行压缩。
通过本发明数据并行压缩方法,能充分挖掘多核CPU的并行计算能力,使每个进程独立地控制各自的数据块,多个进程进行并行压缩操作,每个进程中又有多个字典编码线程独立地控制各自的数据区域,多个字典编码线程进行并行字典编码,所述多个字典编码线程进一步提高了并行度。该方法在取得理想的压缩比的同时,大大降低压缩过程对时间的开销,能够很好的应用于云存储或数据库系统中,解决压缩过程中实时性不高的问题,提高了压缩率的性能。所述数据并行压缩方法也能很好的应用于数据的解压缩。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (13)
1.一种数据并行压缩方法,其特征在于,该方法包括:
读取步骤,通过并行I/O从存储装置中读取待压缩数据;
切分步骤,将待压缩数据均匀切分成N个数据块,并将所述N个数据块保存至每个数据块所对应的输入缓冲区;
压缩编码步骤,每个进程控制对应的输入缓冲区中的数据块,并利用多线程的方法对该数据块进行并行压缩编码,将压缩编码后的数据存入输出缓冲区;
写入步骤,合并输出缓冲区中各个进程并行压缩编码后的数据,将所述合并后的数据写入输出文件中。
2.如权利要求1所述的数据并行压缩方法,其特征在于,每个所述数据块对应各自的一个进程及各自的一个输入缓冲区,每个进程间相互独立。
3.如权利要求1所述的数据并行压缩方法,其特征在于,所述压缩编码步骤包括:
(a)每个进程读取各自对应的输入缓冲区,按照预设的线程数M将该输入缓冲区划分成M个数据区域;
(b)进程中的每个字典编码线程在字典编码开始前构建自己的初始化字典,并将该字典索引信息保存至索引缓冲区;
(c)每个字典编码线程对其所对应的数据区域进行字典编码,并将对该数据区域编码得到的三元组保存至三元组缓冲区;
(d)区间编码线程从所述三元组缓冲区中读入数据进行区间编码,将经过区间编码后的结果保存至所述输出缓冲区中。
4.如权利要求3所述的数据并行压缩方法,其特征在于,每个所述数据区域对应各自的一个字典编码线程,每个字典编码线程间是相互独立的。
5.如权利要求3所述的数据并行压缩方法,其特征在于,所述区间编码线程与字典编码线程存在数据依赖性,在所述三元组缓冲区中有字典编码线程对其数据区域编码后的数据时,区间编码线程就开始编码。
6.如权利要求3所述的数据并行压缩方法,其特征在于,所述索引缓冲区由son table与hash table两个功能模块来实现,所述son table存储着字典中n-哈希值字符串的索引,所述hash table存储着son table的地址索引。
7.如权利要求7所述的数据并行压缩方法,其特征在于,实现所述son table功能的数据结构是二叉树、动态链表、定长数组中的任意一个。
8.如权利要求6或7所述的数据并行压缩方法,其特征在于,字典中具有相同n-哈希值的字符串的索引存储于同一个son table的数据结构中,所述同一个son table的数据结构的首地址索引存储在hashtable中;所述首地址索引是二叉树的顶点的地址、动态链表或定长数组的初始元素的地址。
9.如权利要求7所述的数据并行压缩方法,其特征在于,在使用定长数组数据结构实现son table时,定长数组长度固定且定长数组的各个元素不相互依赖,利用该定长数组的结构采用多个线程进一步并行字典查询。
10.如权利要求3所述的数据并行压缩方法,其特征在于,该方法还包括步骤:每个字典编码线程开辟至少三个子线程以并行执行字典编码,所述三个子线程包括:哈希线程、Bt线程及主线程。
11.如权利要求10所述的数据并行压缩方法,其特征在于,所述(c)中字典编码的步骤包括:
(c1)哈希线程根据数据区域中的待压缩字符串在输入缓冲区中的起始地址开始计算出该待压缩字符串的n-哈希值;
(c2)哈希线程通过查询字典的hash table找到son table中所述n-哈希值的所述首地址索引,并将该首地址索引保存到哈希缓冲区中;
(c3)Bt线程从哈希缓冲区中读取所有首地址索引,将所述首地址索引分别定位到字典中对应的位置;
(c4)在字典的son table中,Bt线程从每个首地址索引的位置开始遍历每个首地址所在的同一个son table的数据结构,依次与待压缩字符串进行匹配,找出最优匹配项,并将最优匹配项及该最优匹配项在字典的地址保存至Bt缓冲区中;
(c5)主线程根据从Bt缓冲区中读取所述待压缩字符串的最优匹配项及该最优匹配项在字典中的地址,进行编码生成三元组,将该三元组存储到三元组缓冲区中;
(c6)主线程对索引缓冲区中的字典进行更新。
12.如权利要10所述的数据并行压缩方法,其特征在于,所述哈希线程、Bt线程及主线程之间存在数据依赖性,所述哈希线程与Bt线程的工作部分重叠进行,所述Bt线程与主线程的工作部分重叠进行。
13.如权利要求10所述的数据并行压缩方法,其特征在于,当哈希线程计算完当前待压缩字符串的前n个字符的哈希值后,在当前待压缩字符串的字典编码还在进行时,即启动下一个待压缩字符串的字典编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310223858.XA CN103326730B (zh) | 2013-06-06 | 2013-06-06 | 数据并行压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310223858.XA CN103326730B (zh) | 2013-06-06 | 2013-06-06 | 数据并行压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103326730A true CN103326730A (zh) | 2013-09-25 |
CN103326730B CN103326730B (zh) | 2016-05-18 |
Family
ID=49195295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310223858.XA Active CN103326730B (zh) | 2013-06-06 | 2013-06-06 | 数据并行压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103326730B (zh) |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN103997514A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种文件并行传输的方法及系统 |
CN105099460A (zh) * | 2014-05-07 | 2015-11-25 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN105119970A (zh) * | 2015-07-16 | 2015-12-02 | 陈飞 | 一种多组并列参数转码传输的方法与系统 |
WO2016062252A1 (en) * | 2014-10-21 | 2016-04-28 | Huawei Technologies Co., Ltd. | Parallel dictionary-based compression encoder |
CN105743509A (zh) * | 2016-01-26 | 2016-07-06 | 华为技术有限公司 | 数据压缩装置及方法 |
CN105843933A (zh) * | 2016-03-30 | 2016-08-10 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
CN106294371A (zh) * | 2015-05-15 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 字符串值域切分方法及装置 |
CN106528829A (zh) * | 2016-11-14 | 2017-03-22 | 天津南大通用数据技术股份有限公司 | 一种海量数据的更新方法及装置 |
CN106575260A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 采用数据压缩的高速缓存技术 |
CN106709006A (zh) * | 2016-12-23 | 2017-05-24 | 武汉科技大学 | 一种对查询友好的关联数据压缩方法 |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
CN107016053A (zh) * | 2017-03-02 | 2017-08-04 | 中国科学院信息工程研究所 | 一种并行的数据差分方法 |
CN107180017A (zh) * | 2016-03-11 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 一种样本序列化方法和装置 |
CN107220361A (zh) * | 2017-06-07 | 2017-09-29 | 北京策腾教育科技有限公司 | 一种英语在线学习中各种资源的组织与存储方法 |
CN107291541A (zh) * | 2017-06-23 | 2017-10-24 | 安徽大学 | 面向Key‑Value系统的compaction粗粒度进程级并行优化方法及系统 |
CN107317584A (zh) * | 2017-06-28 | 2017-11-03 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN107565972A (zh) * | 2017-09-19 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种lz编码的压缩方法、装置、设备及存储介质 |
CN107977442A (zh) * | 2017-12-08 | 2018-05-01 | 北京希嘉创智教育科技有限公司 | 日志文件压缩及解压缩方法、电子设备和可读存储介质 |
CN108494408A (zh) * | 2018-03-14 | 2018-09-04 | 电子科技大学 | 基于哈希字典的随钻密度测井仪井下高速实时压缩方法 |
CN108829872A (zh) * | 2018-06-22 | 2018-11-16 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、系统及存储介质 |
CN108933599A (zh) * | 2018-08-17 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
CN105553937B (zh) * | 2015-12-03 | 2018-12-07 | 华为技术有限公司 | 数据压缩的系统和方法 |
CN109062502A (zh) * | 2018-07-10 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种数据压缩方法、装置、设备及计算机可读存储介质 |
CN109189345A (zh) * | 2018-09-18 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种在线数据整理方法、装置、设备及存储介质 |
CN109889204A (zh) * | 2018-12-24 | 2019-06-14 | 医渡云(北京)技术有限公司 | 一种fpga及其压缩数据的方法、加速卡 |
CN111290697A (zh) * | 2018-12-07 | 2020-06-16 | 上海寒武纪信息科技有限公司 | 数据压缩方法、编码电路和运算装置 |
CN111384968A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN111382849A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩方法、处理器、数据压缩装置及存储介质 |
CN111382853A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111694800A (zh) * | 2020-04-30 | 2020-09-22 | 武汉达梦数据库有限公司 | 一种提升数据同步性能的方法和数据同步系统 |
CN111723059A (zh) * | 2020-05-25 | 2020-09-29 | 深圳市科楠科技开发有限公司 | 一种数据压缩方法、装置、终端设备及存储介质 |
CN111726117A (zh) * | 2019-03-20 | 2020-09-29 | 中国石油化工股份有限公司 | 数字岩心数据并行压缩编码方法及并行解压解码方法 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN112988871A (zh) * | 2021-03-23 | 2021-06-18 | 重庆飞唐网景科技有限公司 | 针对大数据中mpi数据接口的信息压缩传输方法 |
CN112995217A (zh) * | 2021-04-29 | 2021-06-18 | 深圳华锐金融技术股份有限公司 | 数据发送方法、系统 |
CN113630123A (zh) * | 2021-06-30 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
CN113824449A (zh) * | 2021-09-18 | 2021-12-21 | 山东云海国创云计算装备产业创新中心有限公司 | 一种静态霍夫曼并行编码方法、系统、存储介质及设备 |
WO2022199305A1 (zh) * | 2021-03-22 | 2022-09-29 | 中国人民大学 | 一种基于压缩数据直接计算的大数据处理方法 |
CN117394868A (zh) * | 2023-12-11 | 2024-01-12 | 深圳鲲云信息科技有限公司 | 数据处理方法和数据处理装置 |
CN117896778A (zh) * | 2024-03-14 | 2024-04-16 | 天津航天中为数据系统科技有限公司 | 一种基于北斗短报文的用电数据传输方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102498A (zh) * | 2007-07-26 | 2008-01-09 | 北京华纬讯电信技术有限公司 | 一种高清视频图像处理方法 |
CN101556546A (zh) * | 2009-05-27 | 2009-10-14 | 北京联合大学 | 一种基于计算机集群的压缩程序并行化的处理方法 |
US20100117874A1 (en) * | 2008-11-10 | 2010-05-13 | National Sun Yat-Sen University | Backward compression system and method |
-
2013
- 2013-06-06 CN CN201310223858.XA patent/CN103326730B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102498A (zh) * | 2007-07-26 | 2008-01-09 | 北京华纬讯电信技术有限公司 | 一种高清视频图像处理方法 |
US20100117874A1 (en) * | 2008-11-10 | 2010-05-13 | National Sun Yat-Sen University | Backward compression system and method |
CN101556546A (zh) * | 2009-05-27 | 2009-10-14 | 北京联合大学 | 一种基于计算机集群的压缩程序并行化的处理方法 |
Cited By (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997514A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种文件并行传输的方法及系统 |
CN105099460B (zh) * | 2014-05-07 | 2018-05-04 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN105099460A (zh) * | 2014-05-07 | 2015-11-25 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN106575260A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 采用数据压缩的高速缓存技术 |
WO2016062252A1 (en) * | 2014-10-21 | 2016-04-28 | Huawei Technologies Co., Ltd. | Parallel dictionary-based compression encoder |
US9407287B2 (en) | 2014-10-21 | 2016-08-02 | Huawei Technologies Co., Ltd. | Parallel history search and encoding for dictionary-based compression |
US9385748B2 (en) | 2014-10-21 | 2016-07-05 | Huawei Technologies Co., Ltd. | Parallel dictionary-based compression encoder |
US9647684B2 (en) | 2014-10-21 | 2017-05-09 | Huawei Technologies Co., Ltd. | Memory-based history search |
CN106852185B (zh) * | 2014-10-21 | 2019-10-25 | 华为技术有限公司 | 基于字典的并行压缩编码器 |
CN106852185A (zh) * | 2014-10-21 | 2017-06-13 | 华为技术有限公司 | 基于字典的并行压缩编码器 |
CN106294371A (zh) * | 2015-05-15 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 字符串值域切分方法及装置 |
CN106294371B (zh) * | 2015-05-15 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 字符串值域切分方法及装置 |
US10552441B2 (en) | 2015-05-15 | 2020-02-04 | Alibaba Group Holding Limited | Method and apparatus for multithreading extraction of data from a database |
CN105119970A (zh) * | 2015-07-16 | 2015-12-02 | 陈飞 | 一种多组并列参数转码传输的方法与系统 |
CN105553937B (zh) * | 2015-12-03 | 2018-12-07 | 华为技术有限公司 | 数据压缩的系统和方法 |
CN105743509A (zh) * | 2016-01-26 | 2016-07-06 | 华为技术有限公司 | 数据压缩装置及方法 |
CN105743509B (zh) * | 2016-01-26 | 2019-05-24 | 华为技术有限公司 | 数据压缩装置及方法 |
CN107180017A (zh) * | 2016-03-11 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 一种样本序列化方法和装置 |
CN105843933A (zh) * | 2016-03-30 | 2016-08-10 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
CN105843933B (zh) * | 2016-03-30 | 2019-01-29 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
CN106528829A (zh) * | 2016-11-14 | 2017-03-22 | 天津南大通用数据技术股份有限公司 | 一种海量数据的更新方法及装置 |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
CN106709006B (zh) * | 2016-12-23 | 2020-10-30 | 武汉科技大学 | 一种对查询友好的关联数据压缩方法 |
CN106709006A (zh) * | 2016-12-23 | 2017-05-24 | 武汉科技大学 | 一种对查询友好的关联数据压缩方法 |
CN107016053A (zh) * | 2017-03-02 | 2017-08-04 | 中国科学院信息工程研究所 | 一种并行的数据差分方法 |
CN107016053B (zh) * | 2017-03-02 | 2020-05-22 | 中国科学院信息工程研究所 | 一种并行的数据差分方法 |
CN107220361A (zh) * | 2017-06-07 | 2017-09-29 | 北京策腾教育科技有限公司 | 一种英语在线学习中各种资源的组织与存储方法 |
CN107291541A (zh) * | 2017-06-23 | 2017-10-24 | 安徽大学 | 面向Key‑Value系统的compaction粗粒度进程级并行优化方法及系统 |
CN107291541B (zh) * | 2017-06-23 | 2020-07-10 | 安徽大学 | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 |
CN107317584A (zh) * | 2017-06-28 | 2017-11-03 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN107565972A (zh) * | 2017-09-19 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种lz编码的压缩方法、装置、设备及存储介质 |
CN107977442A (zh) * | 2017-12-08 | 2018-05-01 | 北京希嘉创智教育科技有限公司 | 日志文件压缩及解压缩方法、电子设备和可读存储介质 |
CN107977442B (zh) * | 2017-12-08 | 2020-08-07 | 北京希嘉创智教育科技有限公司 | 日志文件压缩及解压缩方法、电子设备和可读存储介质 |
CN108494408B (zh) * | 2018-03-14 | 2021-07-13 | 电子科技大学 | 基于哈希字典的随钻密度测井仪井下高速实时压缩方法 |
CN108494408A (zh) * | 2018-03-14 | 2018-09-04 | 电子科技大学 | 基于哈希字典的随钻密度测井仪井下高速实时压缩方法 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN112514270B (zh) * | 2018-06-06 | 2022-09-13 | 吴英全 | 数据压缩 |
CN108829872B (zh) * | 2018-06-22 | 2021-03-09 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、系统及存储介质 |
CN108829872A (zh) * | 2018-06-22 | 2018-11-16 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、系统及存储介质 |
CN109062502A (zh) * | 2018-07-10 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种数据压缩方法、装置、设备及计算机可读存储介质 |
CN108933599A (zh) * | 2018-08-17 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
CN109189345B (zh) * | 2018-09-18 | 2022-03-04 | 郑州云海信息技术有限公司 | 一种在线数据整理方法、装置、设备及存储介质 |
CN109189345A (zh) * | 2018-09-18 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种在线数据整理方法、装置、设备及存储介质 |
CN111290697B (zh) * | 2018-12-07 | 2022-01-28 | 上海寒武纪信息科技有限公司 | 数据压缩方法、编码电路和运算装置 |
CN111290697A (zh) * | 2018-12-07 | 2020-06-16 | 上海寒武纪信息科技有限公司 | 数据压缩方法、编码电路和运算装置 |
CN109889204A (zh) * | 2018-12-24 | 2019-06-14 | 医渡云(北京)技术有限公司 | 一种fpga及其压缩数据的方法、加速卡 |
CN111382853A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111382849A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩方法、处理器、数据压缩装置及存储介质 |
CN111382853B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111384968A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN111382849B (zh) * | 2018-12-28 | 2022-11-22 | 上海寒武纪信息科技有限公司 | 数据压缩方法、处理器、数据压缩装置及存储介质 |
CN111384968B (zh) * | 2018-12-28 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN111726117A (zh) * | 2019-03-20 | 2020-09-29 | 中国石油化工股份有限公司 | 数字岩心数据并行压缩编码方法及并行解压解码方法 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN111694800B (zh) * | 2020-04-30 | 2023-03-24 | 武汉达梦数据库股份有限公司 | 一种提升数据同步性能的方法和数据同步系统 |
CN111694800A (zh) * | 2020-04-30 | 2020-09-22 | 武汉达梦数据库有限公司 | 一种提升数据同步性能的方法和数据同步系统 |
CN111723059A (zh) * | 2020-05-25 | 2020-09-29 | 深圳市科楠科技开发有限公司 | 一种数据压缩方法、装置、终端设备及存储介质 |
WO2022199305A1 (zh) * | 2021-03-22 | 2022-09-29 | 中国人民大学 | 一种基于压缩数据直接计算的大数据处理方法 |
CN112988871B (zh) * | 2021-03-23 | 2021-11-16 | 山东和同信息科技股份有限公司 | 针对大数据中mpi数据接口的信息压缩传输方法 |
CN112988871A (zh) * | 2021-03-23 | 2021-06-18 | 重庆飞唐网景科技有限公司 | 针对大数据中mpi数据接口的信息压缩传输方法 |
CN112995217B (zh) * | 2021-04-29 | 2021-08-17 | 深圳华锐金融技术股份有限公司 | 数据发送方法、系统 |
CN112995217A (zh) * | 2021-04-29 | 2021-06-18 | 深圳华锐金融技术股份有限公司 | 数据发送方法、系统 |
CN113630123A (zh) * | 2021-06-30 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
CN113630123B (zh) * | 2021-06-30 | 2023-08-18 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
CN113824449A (zh) * | 2021-09-18 | 2021-12-21 | 山东云海国创云计算装备产业创新中心有限公司 | 一种静态霍夫曼并行编码方法、系统、存储介质及设备 |
CN117394868A (zh) * | 2023-12-11 | 2024-01-12 | 深圳鲲云信息科技有限公司 | 数据处理方法和数据处理装置 |
CN117394868B (zh) * | 2023-12-11 | 2024-04-09 | 深圳鲲云信息科技有限公司 | 数据处理方法和数据处理装置 |
CN117896778A (zh) * | 2024-03-14 | 2024-04-16 | 天津航天中为数据系统科技有限公司 | 一种基于北斗短报文的用电数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103326730B (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103326730A (zh) | 数据并行压缩方法 | |
CN107111623B (zh) | 用于基于词典的压缩的并行历史搜索和编码 | |
Das et al. | A scalable decoder micro-architecture for fault-tolerant quantum computing | |
US20180285014A1 (en) | Data storage method and apparatus | |
RU2629440C2 (ru) | Устройство и способ для ускорения операций сжатия и распаковки | |
US20130282677A1 (en) | Data compression system for dna sequence | |
CN107682016B (zh) | 一种数据压缩方法、数据解压方法及相关系统 | |
US11126594B2 (en) | Delta compression | |
JP7047228B2 (ja) | データ照会方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム | |
CN101771879A (zh) | 基于cabac的并行归一化编码实现电路及编码方法 | |
CN108628898A (zh) | 数据入库的方法、装置和设备 | |
US20180041224A1 (en) | Data value suffix bit level compression | |
WO2016130091A1 (en) | Methods of encoding and storing multiple versions of data, method of decoding encoded multiple versions of data and distributed storage system | |
Chengyan et al. | DCE-miner: an association rule mining algorithm for multimedia based on the MapReduce framework | |
Lenhardt et al. | Gipfeli-high speed compression algorithm | |
Ozsoy et al. | Optimizing LZSS compression on GPGPUs | |
Nandi et al. | Modified compression techniques based on optimality of LZW code (MOLZW) | |
CN111178490A (zh) | 数据输出方法、获取方法、装置和电子设备 | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
Wu et al. | A feature-based intelligent deduplication compression system with extreme resemblance detection | |
US12001237B2 (en) | Pattern-based cache block compression | |
GB2524515A (en) | Method to improve compression ratio for a compression engine | |
Jeong et al. | Characterization of data compression in datacenters | |
Stauffer et al. | Dictionary Compression on the PRAM | |
CN104268034A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |