CN106649859A - 用于对基于字符串的文件进行压缩的方法和装置 - Google Patents
用于对基于字符串的文件进行压缩的方法和装置 Download PDFInfo
- Publication number
- CN106649859A CN106649859A CN201611263881.1A CN201611263881A CN106649859A CN 106649859 A CN106649859 A CN 106649859A CN 201611263881 A CN201611263881 A CN 201611263881A CN 106649859 A CN106649859 A CN 106649859A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- compressed
- compression
- character string
- data block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请涉及对基于字符串的文件进行压缩的方法和装置,其中,该方法包括以下步骤:(a)将该文件切分成一个或多个数据块;(b)针对该一个或多个数据块的每个数据块,获得由该数据块中的所有初始字符串的坐标形成的压缩坐标集合;(c)对压缩坐标集合中的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标;(d)迭代进行步骤(c),直到压缩坐标集合中的坐标不能再进行压缩操作为止;(e)获得与该数据块对应的压缩字典;(f)根据压缩字典对数据块进行压缩,形成压缩包;(g)将与一个或多个数据块对应的各个压缩包拼装成压缩文件。
Description
技术领域
本申请涉及数据压缩领域,更具体地,涉及用于对MongoDB数据库文件进行压缩的方法和装置。
背景技术
MongoDB基于BSON的数据存取方式由于具有很大的灵活性而受到越来越多软件开发者的喜欢,但更大灵活性的代价是需要更大的应用空间。BSON字段名在每个文档中被定义,在允许的情况下使用较短的字段名,但是太短的字段名,如单字母字段名或代码会使得字段名很难被理解和阅读,其数据也较难被使用。
发明内容
根据本申请的一个方面,提供了一种对基于字符串的文件进行压缩的方法,包括以下步骤:(a)将该文件切分成一个或多个数据块;(b)针对该一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;(c)对压缩坐标集合中具有相同行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标;(d)迭代进行步骤(c),直到压缩坐标集合中的坐标不能再进行压缩操作为止;(e)获得与压缩坐标集合中的各个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于阈值的字符串录入压缩字典;(f)根据压缩字典对数据块进行压缩,形成压缩包;(g)将与一个或多个数据块对应的各个压缩包拼装成压缩文件。
根据本申请的另一方面,提供了一种对基于字符串的文件进行压缩的装置,该装置包括:分解模块,被配置为将数据库文件切分成一个或多个数据块;压缩坐标集合获得模块,被配置为针对一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;迭代模块,被配置为执行以下压缩替换操作:对压缩坐标集合中具有相同行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标;迭代模块还被配置为迭代地执行上述压缩替换操作,直到压缩坐标集合中的坐标不能再进行压缩操作为止;压缩字典获得模,被配置为获得与压缩坐标集合中的每个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于阈值的字符串录入压缩字典;压缩模块,被配置为根据压缩字典对数据块进行压缩,形成压缩包;以及组装模块,被配置为将与一个或多个数据块对应的各个压缩包拼装成压缩文件。
根据本申请实施例的用于对基于字符串的文件进行压缩的方法将数据块中重复出现的字符串替换为较简单的编号,有利地减少了数据库文件所占用的存储空间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出根据本发明的实施例的对MongoDB数据库文件进行压缩的方法的流程图。
图2示出根据本发明的实施例的数据块在坐标系中的示出。
图3示出根据本发明的实施例对数据块进行压缩的方法的流程图。
图4示出根据本发明的实施例的用于对MongoDB数据库文件进行压缩的装置的框图。
图5示出能够实现根据本发明实施例的用于对MongoDB数据库文件进行压缩的方法和装置的计算设备的示例性硬件架构的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明更全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中,为了清晰,可能夸大了区域和层的厚度。在图中相同的附图标记表示相同或类似的结构,因而将省略它们的详细描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、材料等。在其它情况下,不详细示出或描述公知结构、材料或者操作以避免模糊本发明的主要技术创意。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。本文以MongoDB数据库文件为例示出对基于字符串的文件进行压缩的方法。
传统的数据压缩方法是数据块压缩——一种将数据块中的重复值(确切的值以及形式)进行压缩以减少空间总量的方法。MongoDB在推出3.0版本时对Wired Tiger存储引擎引入了压缩功能,其原理是基于压缩数据中的重复值对MongoDB进行压缩。但该基于MongoDB数据库文件的重复值的压缩方法的压缩效率依赖于重复值的数量,导致压缩效果有限,很难满足海量数据文件的压缩需求。
图1示出根据本发明的实施例的对MongoDB数据库文件进行压缩的方法的流程图。该图仅是示例,其不应不适当地限制权利要求的范围。本领域的技术人员可以在该图的基础上进行适应性地变化、替代和修改。
如图1所示,对MongoDB数据库文件进行压缩的方法包括:S102,将数据库文件切分成一个或多个数据块;S104,针对该一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;S106,对压缩坐标集合中具有相同的行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标;S108,迭代地进行步骤S106,直到压缩坐标集合中的坐标不能再进行压缩操作为止;S110,获得与压缩坐标集合中的各个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于阈值的字符串录入压缩字典;S112,根据压缩字典对数据块进行压缩,形成压缩包;S114,将与上述一个或多个数据块对应的各个压缩包拼装成压缩文件。
在一些实施例中,将MongoDB数据库文件切分成一个或多个数据块可以包括根据MongoDB数据库中数据表的分类对MongoDB数据库文件进行切分。例如,可将user类的数据表切分成一个数据块。根据数据表的分类对数据库文件进行切分的优点在于,因为相同类型的表里数据的相似度比较高,使得压缩效率比较高。在另一些实施例中,也可以根据文件进行切分。例如,将同一个文件夹里的所有文件切分为一个数据块。根据文件进行切分的优点在于解压较为方便。
在一个实例中,对MongoDB数据库进行分解后得到的数据块中的其中一个数据块B1如下所示:
{
title:"MongoDB",
last_editor:"192.168.1.122",
last_modified:new Data("27/06/2011"),
body:"The MongoDB introduction",
categories:["Database","NoSQL","BSON"],
revieved:false
}
在一些实施例中,阈值N可根据以下方程式来计算:
例如,在上述数据库B1中,总的字符为168个,出现最多的字符是",其出现次数为14次,则可以取在另一些实施例中,阈值N可以是根据数据库文件的大小设定的预定值。
在一些实施例中,对数据块进行压缩包括对所获得的压缩字典中的字符串进行编号,并用该编号来替代相应数据块中与该编号相对应的字符串。该处理的具体流程见下文参考图3的描述。这样,在数据块中重复出现多次的较长的字符串被替换为较短的编号,从而节省存储空间,实现压缩的目的。
例如,在上述数据块B1中,字符串MongoDB的长度为7,且该字符串在数据块B1中出现2次,该字符串总共占用14个字符的存储空间。假设该字符串的编号为I,用该编号来替代数据块B1中的字符串MongoDB,则编号I占用的总存储空间仅为2个字符。
在一些实施例中,压缩字典中字符串的编号的长度可大于字符串的长度,则从压缩字典中删除该字符串,因为在这种情形下用编号替换字符串没有任何意义,达不到节省存储空间的目的。
例如,如果压缩字典中的字符串较多,字符串MongoDB的编号为00126688,容易看出此时编号占用的字符长度反而大于字符串的长度,此时无需对字符串MongoDB进行压缩,因此从压缩字典中删除字符串MongoDB。
初始字符串是字符数大于等于2的字符串。初始字符串的长度(即,字符数)可用于控制进行压缩操作的最短字符,并从而可影响压缩字典中字符串的数目。例如,如果不希望压缩字典中的字符串的数目过多,从而使得编号过多,进而出现编号的字符长度大于字符串的长度的情形,则可以将初始字符串的长度设置为较大。
下面示出采用图1中示出的方法得到压缩字典的具体示例。
仍以上述数据块B1为例,数据块B1在坐标系中的示出见图2。
为描述简便,设阈值N为预定值2。数据块B1中出现次数大于等于阈值2的所有长度为2的字符串的集合为{:",",,,",Mo,on,ng,go,oD,DB,d:,la,as,st,t_,od},该集合中的每个字符串在数据块中出现的坐标如下表所示:
其中Li表示字符串中的字符的行坐标为i,Cj,k表示该字符串中的字符的列坐标分别为j和k。先根据行坐标进行排序,行坐标相同的坐标则根据列坐标排序,则得到压缩坐标集合为:{(L2,C6,7),(L2,C8,9),(L2,C9,10),(L2,C10,11),(L2,C11,12),(L2,C12,13),(L2,C13,14),(L2,C15,16),(L3,C1,2),(L3,C2,3),(L3,C3,4),(L3,C4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2),(L4,C2,3),(L4,C3,4),(L4,C4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12),(L5,C12,13),(L5,C13,14),(L5,C14,15),(L5,C15,16),(L5,C16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23),(L6,C23,24),(L6,C30,31),(L6,C31,32),(L7,C8,9)}。
对压缩坐标集合中的每个坐标与其后的行坐标相同且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合。例如,坐标(L2,C8,9)对应行坐标均为2、列坐标分别为8和9的字符串,(L2,C9,10)对应行坐标均为2、列坐标分别为8和9的字符串,坐标(L2,C9,10)在坐标(L2,C8,9)之后,其行坐标与(L2,C8,9)相同,列坐标与(L2,C8,9)的交集为9,因此可对坐标(L2,C8,9)与坐标(L2,C9,10)进行压缩操作,得到坐标(L2,C8,9,10)。类似地,坐标(L2,C9,10)对应行坐标均为2、列坐标分别为9和10的字符串,(L2,C10,11)对应行坐标均为2、列坐标分别为10和11的字符串,坐标(L2,C10,11)在坐标(L2,C9,10)之后,其行坐标与(L2,C9,10)相同,列坐标与(L2,C9,10)的交集为10,因此可对坐标(L2,C9,10)与坐标(L2,C10,11)进行压缩操作,得到坐标(L2,C9,10,11)。依次对上述压缩坐标集合中的坐标进行类似的压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标,则经过上述压缩和替换操作后压缩坐标集合为{(L2,C6,7),(L2,C8,9,10),(L2,C9,10,11),(L2,C10,11,12),(L2,C11,12,13),(L2,C12,13,14),(L2,C15,16),(L3,C1,2,3),(L3,C2,3,4),(L3,C3,4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2,3),(L4,C2,3,4),(L4,C3,4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12,13),(L5,C12,13,14),(L5,C13,14,15),(L5,C14,15,16),(L5,C15,16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23,24),(L6,C30,31,32),(L7,C8,9)}。
再次对对压缩坐标集合中的每个坐标与其后的行坐标相同且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标,则经过上述压缩和替换操作后压缩坐标集合为{(L2,C6,7),(L2,C8,9,10,11),(L2,C9,10,11,12),(L2,C10,11,12,13),(L2,C11,12,13,14),(L2,C15,16),(L3,C1,2,3,4),(L3,C2,3,4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2,3,4),(L4,C2,3,4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12,13,14),(L5,C12,13,14,15),(L5,C13,14,15,16),(L5,C14,15,16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23,24),(L6,C30,31,32),(L7,C8,9)}。
再次对对压缩坐标集合中的每个坐标与其后的行坐标相同且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标,则经过上述压缩和替换操作后压缩坐标集合为{(L2,C6,7),(L2,C8,9,10,11,12),(L2,C9,10,11,12,13),(L2,C10,11,12,13,14),(L2,C15,16),(L3,C1,2,3,4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2,3,4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12,13,14,15),(L5,C12,13,14,15,16),(L5,C13,14,15,16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23,24),(L6,C30,31,32),(L7,C8,9)}。
再次对对压缩坐标集合中的每个坐标与其后的行坐标相同且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标,则经过上述压缩和替换操作后压缩坐标集合为{(L2,C6,7),(L2,C8,9,10,11,12,13),(L2,C9,10,11,12,13,14),(L2,C15,16),(L3,C1,2,3,4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2,3,4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12,13,14,15,16),(L5,C12,13,14,15,16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23,24),(L6,C30,31,32),(L7,C8,9)}。
再次对对压缩坐标集合中的每个坐标与其后的行坐标相同且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标,则经过上述压缩和替换操作后压缩坐标集合为{(L2,C6,7),(L2,C8,9,10,11,12,13,14),(L2,C15,16),(L3,C1,2,3,4,5),(L3,C12,13),(L3,C27,28),(L4,C1,2,3,4,5),(L4,C7,8),(L4,C13,14),(L5,C2,3),(L5,C5,6),(L5,C11,12,13,14,15,16,17),(L5,C23,24),(L5,C29,30),(L5,C31,32),(L6,C5,6),(L6,C22,23,24),(L6,C30,31,32),(L7,C8,9)}。此时压缩坐标集合中的坐标不能再进行压缩操作,停止迭代。
与该压缩坐标集合中的坐标一一对应的字符串的集合为{:",MongoDB,",,last_,:",",,last_,od,d:,od,:",MongoDB,od,on,",,go,",",",",d:},其中该集合中各字符串出现的次数如下所示:
:" | MongoDB | last_ | ", | od | d: | on | go | "," |
3 | 2 | 2 | 3 | 3 | 2 | 1 | 1 | 2 |
将在该集合中出现次数大于等于阈值2的字符串录入压缩字典,即与数据块B1相对应的压缩字典为{:",MongoDB,last_,",,od,d:,","}。
图3示出根据本发明的实施例对数据块进行压缩的方法的流程图。该图仅是示例,其不应不适当地限制权利要求的范围。本领域的技术人员可以在该图的基础上进行适应性地变化、替代和修改。
如图3中所示出的,在S302处,将压缩字典中的字符串长度乘以这个字符串在数据块中出现的次数,获得字符串的压缩值;在S304处,将压缩字典中的字符串按照压缩值从大到小排序,并对字符串进行编号;在S306处,删除压缩字典中字符串字节长度小于所对应编号名称字节长度的字符串,如果不存在字符串字节长度小于所对应编号名称字节长度的情形,则不执行该步骤,流程直接前进到S308;在S308处,用字符串的编号替换数据块中的字符串,形成压缩后的文件;在S310处,将压缩字典和压缩后的文件进行组装,形成压缩包。
以参考图2的示例得到的压缩字典{:",MongoDB,last_,",,od,d:,","}为例,计算该压缩字典中的字符串的压缩值,并根据压缩值对字符串进行排序和编号,得到下表:
按照字典中的顺序,循环用字符串的编号替换数据块中相互对应的字符串,形成压缩后的文件:
{
titleⅢⅠⅤ
ⅡeditorⅢ192.168.1.122Ⅴ
ⅡmⅣifieⅦnew Data("27/06/2011"),
bⅣyⅢTheⅠintrⅣuctionⅤ
categories:["DatabaseⅥNoSQLⅥBSON"],
revieveⅦfalse
}
图4示出根据本发明的实施例的用于对MongoDB数据库文件进行压缩的装置400的框图。如图中所示,装置400包括分解模块402、压缩坐标集合获得模块404、迭代模块406、压缩字典获得模块408、压缩模块410、以及组装模块412。其中,分解模块402被配置为将数据库文件切分成一个或多个数据块;压缩坐标集合获得模块404被配置为针对一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;迭代模块406被配置为执行以下压缩替换操作:对压缩坐标集合中具有相同行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换压缩坐标集合中受到压缩操作的所有坐标;迭代模块406还被配置为迭代地执行上述压缩替换操作,直到压缩坐标集合中的坐标不能再进行压缩操作为止;压缩字典获得模408被配置为获得与压缩坐标集合中的每个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于阈值的字符串录入压缩字典;压缩模块410被配置为根据压缩字典对数据块进行压缩,形成压缩包;并且组装模块412被配置为将与一个或多个数据块对应的各个压缩包拼装成压缩文件。装置400中各模块的功能与图1中的示例相似,在此不再详细描述。
结合图1至图3描述的用于执行标签聚类的方法和装置可以由计算设备实现。图5是示出能够实现根据本发明实施例的用于对MongoDB数据库文件进行压缩的方法和装置的计算设备的示例性硬件架构的结构图。如图5所示,计算设备500包括输入设备501、输入接口502、中央处理器503、存储器504、输出接口505、以及输出设备506。其中,输入接口502、中央处理器503、存储器504、以及输出接口505通过总线510相互连接,输入设备501和输出设备506分别通过输入接口502和输出接口505与总线510连接,进而与计算设备500的其他组件连接。具体地,输入设备501接收输入信息(例如,数据库文件),并通过输入接口502将输入信息传送到中央处理器503;中央处理器503基于存储器504中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器504中,然后通过输出接口505将输出信息传送到输出设备506;输出设备506将输出信息输出到计算设备500的外部供用户使用。
也就是说,图4所示的用于对MongoDB数据库文件进行压缩的装置也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1描述的用于对MongoDB数据库文件进行压缩的方法和装置。这里,处理器可以基于输入信息执行计算机可执行指令,从而实现结合图1描述的用于对MongoDB数据库文件进行压缩的方法和装置。
虽然已经以MongoDB数据库文件为例描述了本发明的实施例,但是本领域技术人员能够理解,上述方法和装置同样适用于对基于字符串的其他类型文件进行压缩。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
本发明可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的算法可以被修改,而系统体系结构并不脱离本发明的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本发明的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本发明的范围之中。
Claims (14)
1.一种对基于字符串的文件进行压缩的方法,包括:
(a)将所述文件切分成一个或多个数据块;
(b)针对所述一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;
(c)对所述压缩坐标集合中具有相同的行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换所述压缩坐标集合中受到压缩操作的所有坐标;
(d)迭代进行步骤(c),直到所述压缩坐标集合中的坐标不能再进行压缩操作为止;
(e)获得与所述压缩坐标集合中的各个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于所述阈值的字符串录入压缩字典;
(f)根据所述压缩字典对所述数据块进行压缩,形成压缩包;
(g)将与所述一个或多个数据块对应的各个压缩包拼装成压缩文件。
2.如权利要求1所述的方法,其中,所述阈值等于
3.如权利要求1所述的方法,其中,所述阈值是预定数值。
4.如权利要求1所述的方法,其中,所述初始字符串是字符数大于等于2的字符串。
5.如权利要求1所述的方法,其特征在于,所述文件包括数据库文件,所述方法还包括根据所述数据库文件中的数据表的分类对所述数据库文件进行切分。
6.如权利要求1所述的方法,其中,所述对数据块进行压缩还包括:对所述压缩字典中的字符串进行编号,并在所述数据块中用该编号来替代与该编号相对应的字符串。
7.如权利要求6所述的方法,所述压缩操作还包括从所述压缩字典中删除字符串字节长度小于所对应的编号的字节长度的字符串。
8.一种对基于字符串的文件进行压缩的装置,包括:
分解模块,被配置为将所述文件切分成一个或多个数据块;
压缩坐标集合获得模块,被配置为针对所述一个或多个数据块的每个数据块,获得由该数据块中出现次数大于等于阈值的所有初始字符串在该数据块中出现的坐标形成的压缩坐标集合,其中坐标包括行坐标和列坐标;
迭代模块,被配置为执行以下压缩替换操作:对所述压缩坐标集合中具有相同的行坐标且列坐标有交集的坐标进行压缩操作,得到经压缩的坐标集合,并用该经压缩的坐标集合中的所有坐标替换所述压缩坐标集合中受到压缩操作的所有坐标;所述迭代模块还被配置为迭代地执行所述压缩替换操作,直到所述压缩坐标集合中的坐标不能再进行压缩操作为止;
压缩字典获得模块,被配置为获得与所述压缩坐标集合中的各个坐标一一对应的字符串的集合,将在该集合中出现次数大于等于所述阈值的字符串录入压缩字典;
压缩模块,被配置为根据所述压缩字典对所述数据块进行压缩,形成压缩包;以及
组装模块,被配置为将与所述一个或多个数据块对应的各个压缩包拼装成压缩文件。
9.如权利要求8所述的装置,其中,所述阈值等于
10.如权利要求8所述的装置,其中,所述阈值是预定数值。
11.如权利要求8所述的装置,其中,所述初始字符串是字符数大于等于2的字符串。
12.如权利要求8所述的装置,所述分解模块还被配置为根据所述数据库文件中的数据表的分类对所述数据库文件进行切分。
13.如权利要求8所述的装置,其中,所述压缩模块还被配置为对所述压缩字典中的字符串进行编号,并在所述数据块中用该编号来替代与该编号相对应的字符串。
14.如权利要求13所述的装置,所述压缩模块还被配置为从所述压缩字典中删除字符串字节长度小于所对应的编号的字节长度的字符串。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611263881.1A CN106649859B (zh) | 2016-12-30 | 2016-12-30 | 用于对基于字符串的文件进行压缩的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611263881.1A CN106649859B (zh) | 2016-12-30 | 2016-12-30 | 用于对基于字符串的文件进行压缩的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649859A true CN106649859A (zh) | 2017-05-10 |
CN106649859B CN106649859B (zh) | 2019-10-29 |
Family
ID=58837792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611263881.1A Active CN106649859B (zh) | 2016-12-30 | 2016-12-30 | 用于对基于字符串的文件进行压缩的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649859B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274720A (zh) * | 2018-08-24 | 2019-01-25 | 网宿科技股份有限公司 | 一种传输数据的方法和系统 |
WO2022170569A1 (zh) * | 2021-02-10 | 2022-08-18 | 华为技术有限公司 | 数据处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140081930A1 (en) * | 2001-03-05 | 2014-03-20 | Sap Ag | Compression scheme for improving cache behavior in database systems |
CN104025088A (zh) * | 2012-01-06 | 2014-09-03 | 国际商业机器公司 | 将数据块分离成多个流以用于压缩 |
CN104408192A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 字符串类型列的压缩处理方法及装置 |
CN104753540A (zh) * | 2015-03-05 | 2015-07-01 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
CN105574021A (zh) * | 2014-10-14 | 2016-05-11 | 北京神州泰岳软件股份有限公司 | 一种数据库的数据压缩方法和装置 |
-
2016
- 2016-12-30 CN CN201611263881.1A patent/CN106649859B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140081930A1 (en) * | 2001-03-05 | 2014-03-20 | Sap Ag | Compression scheme for improving cache behavior in database systems |
CN104025088A (zh) * | 2012-01-06 | 2014-09-03 | 国际商业机器公司 | 将数据块分离成多个流以用于压缩 |
CN105574021A (zh) * | 2014-10-14 | 2016-05-11 | 北京神州泰岳软件股份有限公司 | 一种数据库的数据压缩方法和装置 |
CN104408192A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 字符串类型列的压缩处理方法及装置 |
CN104753540A (zh) * | 2015-03-05 | 2015-07-01 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274720A (zh) * | 2018-08-24 | 2019-01-25 | 网宿科技股份有限公司 | 一种传输数据的方法和系统 |
CN109274720B (zh) * | 2018-08-24 | 2022-04-22 | 网宿科技股份有限公司 | 一种传输数据的方法和系统 |
WO2022170569A1 (zh) * | 2021-02-10 | 2022-08-18 | 华为技术有限公司 | 数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106649859B (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dhulipala et al. | Compressing graphs and indexes with recursive graph bisection | |
KR101515660B1 (ko) | 두 번의 패스를 통한 텍스트 스트링의 해시 추출 | |
CN103064970B (zh) | 优化译员的检索方法 | |
US20130141259A1 (en) | Method and system for data compression | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
CN112116436B (zh) | 一种智能推荐方法、装置、计算机设备及可读存储介质 | |
CN101807208A (zh) | 视频指纹快速检索方法 | |
EP2487630A1 (en) | Relevancy filter for new data based on underlying files | |
US20240078330A1 (en) | A method and system for lossy compression of log files of data | |
WO2020000486A1 (zh) | 数据处理方法及装置 | |
CN111507090A (zh) | 摘要提取方法、装置、设备及计算机可读存储介质 | |
CN112364625A (zh) | 文本筛选方法、装置、设备及存储介质 | |
CN106649859A (zh) | 用于对基于字符串的文件进行压缩的方法和装置 | |
CN115408350A (zh) | 日志压缩、日志还原方法、装置、计算机设备和存储介质 | |
CN104217016B (zh) | 网页搜索关键词统计方法及装置 | |
CN112883704A (zh) | 一种大数据相似文本去重预处理方法、装置及终端设备 | |
Granados et al. | Discovering data set nature through algorithmic clustering based on string compression | |
CN115130043B (zh) | 基于数据库的数据处理方法、装置、设备及存储介质 | |
CN110472205A (zh) | 文件差异化的比对方法及装置、存储介质和电子装置 | |
CN106571909A (zh) | 数据加密方法及装置 | |
CN108228759B (zh) | 记录集的存储处理方法、装置、计算机设备和存储介质 | |
CN107612554B (zh) | 数据压缩处理方法 | |
CN104408188A (zh) | 数据处理方法和装置 | |
CN108090095B (zh) | 批量重建数据库的方法和装置 | |
CN114971556A (zh) | 文件信息汇总方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |