CN107766564B - 记录式数据压缩方法、装置、电子设备、存储介质 - Google Patents
记录式数据压缩方法、装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN107766564B CN107766564B CN201711086239.5A CN201711086239A CN107766564B CN 107766564 B CN107766564 B CN 107766564B CN 201711086239 A CN201711086239 A CN 201711086239A CN 107766564 B CN107766564 B CN 107766564B
- Authority
- CN
- China
- Prior art keywords
- data
- area
- index
- quasi
- storing
- 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.)
- Active
Links
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种记录式数据压缩方法、装置、电子设备、存储介质,所述压缩方法包括:构建数据缓冲区和准值域区,数据缓冲区包括准数据头和索引区;遍历多个记录式数据,对每个记录式数据:判断该记录式数据是否命中准值域区中储存的记录式数据,若未命中则执行下一步骤;将该记录式数据储存至准值域区中,获取该记录式数据在准值域区中的索引;将该记录式数据的数据类型与索引关联地储存在索引区中;更新准数据头;依次对准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区;将准数据头更新为数据头,数据头用于储存数据区及索引区的数据大小;压缩数据缓冲区。本发明提供的方法及装置减少数据冗余存储。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种记录式数据压缩方法、装置、电子设备、存储介质。
背景技术
在对海量用户行为数据的处理中,需要将用户行为数据归集成session,session是一个用户行为的集合。一个用户session可能在达到几十兆,而单条数据的内容都是大同小异。面对一天数十亿的数据,处理的过程中对数据的存储需要很大的存储空间,而且大数据量的数据传输很有可能在短时间内将占满网络带宽,影响数据的传输性能。所以十分有必要对数据进行数据的压缩,以减少数据的体积。对于这种数据结构相同,数据内容大体一致,采用例如JSON的记录式的方式。
JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。JSON易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
虽然JSON有以上几个优点,但是其数据重复度依然比较高,文件越大,KEY值及VALUE值重复次数越多,在移动互联网应用中传输数据消耗的流量越大,储存需求越大。
发明内容
本发明为了克服上述现有技术存在的缺陷,提供一种记录式数据压缩方法、装置、电子设备、存储介质,以减少数据冗余存储。
根据本发明的一个方面,提供一种记录式数据压缩方法,包括:步骤S110:构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据;步骤S120:遍历多个记录式数据,对每个记录式数据:步骤S121:判断该记录式数据是否命中准值域区中储存的记录式数据,若命中则处理下一记录式数据,若未命中则执行下一步骤;步骤S122:将该记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引;步骤S123:将该记录式数据的数据类型与所述索引关联地储存在所述索引区中;步骤S124:更新所述准数据头;步骤S130:依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区;步骤S140:将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小;步骤S150:释放所述准值域区,并压缩所述数据缓冲区。
可选地,所述将该记录式数据的数据类型与所述索引关联地储存在所述索引区中包括:判断该记录式数据的数据类型是否为集合类型;若否,则直接将该记录式数据的数据类型与所述索引关联地储存在所述索引区;若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中。
可选地,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:将该记录式数据的数据类型及数据大小与所述索引关联地储存在所述索引区中。
可选地,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:将该集合中的多个元素的数据大小依序与所述索引关联地储存在所述索引区中。
可选地,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:遍历该集合中的多个元素,对每个元素:判断该元素是否命中经处理的元素,若命中则自所述准值域区中删除该元素并处理下一元素,若未命中则执行下一步骤;将该元素的数据类型与所述索引关联地储存在所述索引区中。
可选地,在步骤S120中,所述步骤S122之前,所述步骤S121之后,包括:获取该记录式数据的数据大小及索引和数据类型的数据大小;预更新所述准数据头,并判断所述准数据头中,所述准值域区及所述索引区的数据大小之和是否达到预定阈值;若是,则保留暂未处理的多个键值,执行步骤S130至步骤S150,将经压缩的数据缓冲区存入内存中,执行步骤S110重新构建数据缓冲区和准值域区,并对保留的暂未处理的多个键值执行步骤S120;若否,则继续执行下一步骤。
可选地,所述获取该记录式数据的数据大小及索引和数据类型的数据大小还包括:判断该记录式数据的数据类型是否为集合类型;若否,则直接获取该记录式数据的数据大小及索引和数据类型的数据大小;若是,则遍历该集合中的多个元素以多该集合中的多个元素进行去重,并根据去重后的多个元素获取该记录式数据的数据大小及索引和数据类型的数据大小。
可选地,所述将该记录式数据的数据类型与所述索引关联地储存在所述索引区中包括:将该记录式数据的数据大小与所述索引关联地储存在所述索引区中。
可选地,所述记录式数据包括一个或多个键值对。
可选地,依次对所述准值域区中的多个记录式数据编码包括:依次对所述准值域区中的多个记录式数据进行ASCII编码,以序列化该多个记录式数据。
可选地,所述索引区和所述准值域区之间;和/或所述索引区和所述数据区之间,具有间隔位。
根据本发明的又一方面,还提供一种记录式数据压缩装置,包括:构建模块,用于构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据;遍历模块,用于遍历多个记录式数据,包括:判断模块,用于判断每个记录式数据是否命中准值域区中储存的记录式数据;索引获取模块,用于当判断模块判断未命中时,将每个记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引;储存模块,用于将每个记录式数据的数据类型与所述索引关联地储存在所述索引区中;更新模块,用于更新所述准数据头;编码模块,用于依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区;数据头模块,用于将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小;压缩模块,用于释放所述准值域区,并压缩所述数据缓冲区。
根据本发明的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本发明的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
相比现有技术,本发明通过设置准值域区和缓冲数据区及设置索引的方式以进行记录式数据的去重。本发明还通过准数据头和数据头进一步记录记录式数据处理过程中以及编码后的数据大小,以防止数据处理过程中设备故障或终端。本发明进一步通过压缩缓冲数据区实现数据大小的进一步减小。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的记录式数据压缩方法的流程图。
图2至图5示出了根据本发明实施例的准值域区及数据缓冲区的示意图。
图6示出了根据本发明实施例的记录式数据压缩装置的示意图。
图7示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
图8示意性示出本公开示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
为了解决现有技术的缺陷,减少数据冗余存储,本发明提供一种记录式数据压缩方法、装置、电子设备、存储介质。在本发明的各个实施例中,记录式数据可以是JSON格式的数据,其包括键值对或键值对的集合。各键值对可以包括key(表示value的属性)和/或value。
图1示出了根据本发明实施例的记录式数据压缩方法的流程图。图1示出了如下步骤:
步骤S110:构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据。
步骤S120:遍历多个记录式数据,对每个记录式数据执行下述入步骤S121至步骤S124。
步骤S121:判断该记录式数据是否命中准值域区中储存的记录式数据,若命中则执行步骤S125处理下一记录式数据,若未命中则执行下一步骤。
步骤S122:将该记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引。
步骤S123:将该记录式数据的数据类型与所述索引关联地储存在所述索引区中。
步骤S124:更新所述准数据头。
在一个具体实施例中,上述步骤S121至步骤S125可以如图2所示,数据缓冲区210包括数据头211和索引区212。数据头211例如共8个字节,并储存准值域区220及所述索引区212的数据大小。准值域区220用于储存多个记录式数据221。下面以记录式数据“sfa”、“ccc”、“sfa”(仅仅是示意性的)为例。
步骤S121首先判断第一个记录式数据“sfa”未命中准值域区220中储存的记录式数据(未处理记录式数据时,准值域区220为空)。然后步骤S122:将该记录式数据“sfa”储存至所述准值域区220中,获取该记录式数据“sfa”在所述准值域区中的索引“1”。然后,步骤S123将该记录式数据“sfa”的数据类型(例如自定义数据类型“11”表示字符串)与所述索引“1”关联地储存在所述索引区212中218和219的位置。通过步骤S124更新准数据头。
处理完记录式数据“sfa”后,同样的方式处理记录式数据“ccc”。然后处理记录式数据“ccc”后的记录式数据“sfa”,步骤S121判断该记录式数据“sfa”命中准值域区220中储存的记录式数据,则执行步骤S125跳至下一记录式数据。
在一些变化例中,若步骤S121判断该记录式数据“sfa”命中准值域区220中储存的记录式数据,则直接提取第一个记录式数据“sfa”的索引和数据类型,依序储存在索引区212中。
在一些具体实施例中,上述准值域区220紧接在索引区212之后,并由间隔位间隔。
在一些实施例中,上述索引218表示记录式数据在准值域区220中的位置。在另一些实施例中,上述索引218表示记录式数据在准值域区220中的储存顺序(遍历顺序),并通过各记录式数据的数据大小以确定记录式数据在准值域区220中的位置。在又一些实施例中,在索引区220中储存第一个记录式数据的位置,然后将各记录式数据的数据大小作为索引,以确定记录式数据在准值域区220中的位置(索引与准值域区220中的记录式数据顺序相同)。
在一个具体实施例中,步骤S123包括如下步骤:
判断该记录式数据的数据类型是否为集合类型(集合例如是list或map)。若否,则直接将该记录式数据的数据类型与所述索引关联地储存在所述索引区。若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中。
在一些实施例中,若记录式数据的数据类型为集合类型,则将该记录式数据的数据大也与所述索引关联地储存在所述索引区(如图3所示,记录式数据221为集合类型并包括多个元素221,标号218表示记录式数据索引,标号219表示记录式数据数据类型,标号217表示记录式数据数据大小,标号216表示各元素的数据类型)
在又一些实施例中,若记录式数据的数据类型为集合类型,将该集合中的多个元素的数据大小也依序与所述索引关联地储存在所述索引区中(如图4所示,记录式数据221为集合类型并包括多个元素221,标号218表示记录式数据索引,标号219表示记录式数据数据类型,标号216表示各元素的数据类型,标号215表示各元素的数据大小)。在这样的实施例中,可不储存记录式数据的数据大小。
在上述各个实施例中,若判断记录式数据的数据类型是集合类型,则执行如下步骤:遍历该集合中的多个元素,对每个元素:判断该元素是否命中经处理的元素,若命中则自所述准值域区中删除该元素并处理下一元素,若未命中则执行下一步骤;将该元素的数据类型(或者和数据大小一起)与所述索引关联地储存在所述索引区中以进一步实现集合类型的记录式数据的元素去重。
进一步地,在步骤S120中,所述步骤S122之前,所述步骤S121之后,还可以包括确定数据缓冲区和准值域区的大小是否达到预定阈值,若达到预定阈值,可对当前的数据缓冲区和准值域区以生成一数据块。根据记录式数据的数量和大小可形成多个数据块,由此可便于记录式数据的读写。具体而言,本实施例包括如下步骤:获取该记录式数据的数据大小及索引和数据类型(可选地,若记录该记录式数据的数据大小,则还需获取该记录该数据大小所占用的储存大小)的数据大小;预更新所述准数据头(及将当前准数据头与获取的数据在相应的位置相加),并判断所述准数据头中,所述准值域区及所述索引区的数据大小之和是否达到预定阈值;若是,则保留暂未处理的多个键值,执行步骤S130至步骤S150,将经压缩的数据缓冲区存入内存中以形成一数据块,然后执行步骤S110重新构建数据缓冲区和准值域区,并对保留的暂未处理的多个键值执行步骤S120至步骤S150以生成下一数据块;若否,则继续执行下一步骤。
在上述实施例的一个具体实现中,所述获取该记录式数据的数据大小及索引和数据类型的数据大小还包括:判断该记录式数据的数据类型是否为集合类型。若否,则直接获取该记录式数据的数据大小及索引和数据类型的数据大小。若是,则遍历该集合中的多个元素以多该集合中的多个元素进行去重,并根据去重后的多个元素获取该记录式数据的数据大小及索引和数据类型的数据大小以预更新准数据头。
可以理解,准数据头的更新可用于记录当前处理的记录式数据的量,同时当系统处理过程中中断时,可以利用准数据头来确定中断前的执行。
上述各步骤中的命中可以指完全匹配、模糊匹配等。在一些完全匹配的实施例中,可通过计算两个记录式数据(或元素)的MD5(消息摘要算法第五版)值,并确定MD5值是否相等,来确定记录式数据(或元素)是否命中。
步骤S130:依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区。
具体而言,步骤S130可以包括依次对所述准值域区中的多个记录式数据进行ASCII编码,以序列化该多个记录式数据。
步骤S140:将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小。
步骤S130和步骤S140,可如图5所示,准值域区编码后形成标号213的数据区,数据区213紧接在索引区212之后。准数据头更新为数据头214。在步骤S140之后,数据头214、索引区212和数据区213共同形成数据缓冲区。在一些具体实施例中,上述数据区213和索引区212之间由间隔位间隔。
步骤S150:释放所述准值域区,并压缩所述数据缓冲区。
可选地,步骤S150可以采用诸如LZ4,LZF等的数据压缩算法,对数据缓冲区进行压缩。具体而言,LZ4是一种非常快速无损压缩算法,它能达到单核400MB/s的压缩速度,在多核处理器上性能易扩展。同时它有十分强大的解压性能,单核能达到GB/s的解压速度。通常可以在多核系统上达到RAM速度限制;LZF是一个非常小的数据压缩库。它只有两个.c和两个.h文件并且很容易合并到程序中。压缩算法非常非常快,但仍然用便携式C编写。最重要的是,它可以自由使用,与GPL(General Public License,通用公共许可证)下的大多数其他压缩库不同,这个库使用了一个bsd(Berkeley Software Distribution,伯克利软件套件)类型的许可证,所以可以在程序中包含它而不用担心。
以上仅仅是示意性的描述本发明的实施例,本发明并非以此为限。
下面参见图6,图6示出了根据本发明实施例的记录式数据压缩装置的示意图。
记录式数据压缩装置400包括构建模块410、遍历模块420、编码模块430、数据头模块440及压缩模块450。
构建模块410用于构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据。遍历模块420用于遍历多个记录式数据。遍历模块420包括判断模块421、索引获取模块422、储存模块423及更新模块424。判断模块421用于判断每个记录式数据是否命中准值域区中储存的记录式数据。索引获取模块422用于当判断模块判断未命中时,将每个记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引。储存模块423用于将每个记录式数据的数据类型与所述索引关联地储存在所述索引区中。更新模块424用于更新所述准数据头。编码模块430用于依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区。数据头模块440用于将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小。压缩模块450用于释放所述准值域区,并压缩所述数据缓冲区。
图6仅仅是示意性地示出各个模块,可以理解,这些模块可以虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本发明的保护范围之内。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述电子处方流转处理方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本公开的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述电子处方流转处理方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图8来描述根据本发明的这种实施方式的电子设备600。图8显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述电子处方流转处理方法。
相比现有技术,本发明通过设置准值域区和缓冲数据区及设置索引的方式以进行记录式数据的去重。本发明还通过准数据头和数据头进一步记录记录式数据处理过程中以及编码后的数据大小,以防止数据处理过程中设备故障或终端。本发明进一步通过压缩缓冲数据区实现数据大小的进一步减小。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (13)
1.一种记录式数据压缩方法,其特征在于,所述记录式数据包括一个或多个键值对,所述方法包括:
步骤S110:构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据;
步骤S120:遍历多个记录式数据,对每个记录式数据:
步骤S121:判断该记录式数据是否命中准值域区中储存的记录式数据,若命中则处理下一记录式数据,若未命中则执行下一步骤;
步骤S122:将该记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引;
步骤S123:将该记录式数据的数据类型与所述索引关联地储存在所述索引区中;
步骤S124:更新所述准数据头;
步骤S130:依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区;
步骤S140:将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小;
步骤S150:释放所述准值域区,并压缩所述数据缓冲区。
2.如权利要求1所述的记录式数据压缩方法,其特征在于,所述步骤S123包括:
判断该记录式数据的数据类型是否为集合类型;
若否,则直接将该记录式数据的数据类型与所述索引关联地储存在所述索引区;
若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中。
3.如权利要求2所述的记录式数据压缩方法,其特征在于,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:
将该记录式数据的数据类型及数据大小与所述索引关联地储存在所述索引区中。
4.如权利要求2所述的记录式数据压缩方法,其特征在于,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:
将该集合中的多个元素的数据大小依序与所述索引关联地储存在所述索引区中。
5.如权利要求2所述的记录式数据压缩方法,其特征在于,若是,则将该记录式数据的数据类型与所述索引关联地储存在所述索引区,并将该集合中的多个元素的数据类型依序与所述索引关联地储存在所述索引区中包括:
遍历该集合中的多个元素,对每个元素:
判断该元素是否命中经处理的元素,若命中则自所述准值域区中删除该元素并处理下一元素,若未命中则执行下一步骤;
将该元素的数据类型与所述索引关联地储存在所述索引区中。
6.如权利要求1所述的记录式数据压缩方法,其特征在于,在步骤S120中,所述步骤S122之前,所述步骤S121之后,包括:
获取该记录式数据的数据大小及索引和数据类型的数据大小;
预更新所述准数据头,并判断所述准数据头中,所述准值域区及所述索引区的数据大小之和是否达到预定阈值;
若是,则保留暂未处理的多个键值,执行步骤S130至步骤S150,将经压缩的数据缓冲区存入内存中,执行步骤S110重新构建数据缓冲区和准值域区,并对保留的暂未处理的多个键值执行步骤S120;
若否,则继续执行下一步骤。
7.如权利要求6所述的记录式数据压缩方法,其特征在于,所述获取该记录式数据的数据大小及索引和数据类型的数据大小还包括:
判断该记录式数据的数据类型是否为集合类型;
若否,则直接获取该记录式数据的数据大小及索引和数据类型的数据大小;
若是,则遍历该集合中的多个元素以多该集合中的多个元素进行去重,并根据去重后的多个元素获取该记录式数据的数据大小及索引和数据类型的数据大小。
8.如权利要求1所述的记录式数据压缩方法,其特征在于,所述将该记录式数据的数据类型与所述索引关联地储存在所述索引区中包括:
将该记录式数据的数据大小与所述索引关联地储存在所述索引区中。
9.如权利要求1至8任一项所述的记录式数据压缩方法,其特征在于,依次对所述准值域区中的多个记录式数据编码包括:
依次对所述准值域区中的多个记录式数据进行ASCII编码,以序列化该多个记录式数据。
10.如权利要求1至8任一项所述的记录式数据压缩方法,其特征在于,所述索引区和所述准值域区之间;和/或所述索引区和所述数据区之间,具有间隔位。
11.一种记录式数据压缩装置,其特征在于,所述记录式数据包括一个或多个键值对,所述装置包括:
构建模块,用于构建数据缓冲区和准值域区,所述数据缓冲区包括准数据头和索引区,所述准数据头用于储存所述准值域区及所述索引区的数据大小,所述准值域区用于储存记录式数据;
遍历模块,用于遍历多个记录式数据,包括:
判断模块,用于判断每个记录式数据是否命中准值域区中储存的记录式数据;
索引获取模块,用于当判断模块判断未命中时,将每个记录式数据按所述遍历的顺序储存至所述准值域区中,获取该记录式数据在所述准值域区中的索引;
储存模块,用于将每个记录式数据的数据类型与所述索引关联地储存在所述索引区中;
更新模块,用于更新所述准数据头;
编码模块,用于依次对所述准值域区中的多个记录式数据编码,将编码后的准值域区作为数据区,紧接在所述索引区之后以加入所述数据缓冲区;
数据头模块,用于将所述准数据头更新为数据头,所述数据头用于储存所述数据区及所述索引区的数据大小;
压缩模块,用于释放所述准值域区,并压缩所述数据缓冲区。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如权利要求1至10任一项所述的方法。
13.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711086239.5A CN107766564B (zh) | 2017-11-07 | 2017-11-07 | 记录式数据压缩方法、装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711086239.5A CN107766564B (zh) | 2017-11-07 | 2017-11-07 | 记录式数据压缩方法、装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766564A CN107766564A (zh) | 2018-03-06 |
CN107766564B true CN107766564B (zh) | 2020-02-21 |
Family
ID=61272668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711086239.5A Active CN107766564B (zh) | 2017-11-07 | 2017-11-07 | 记录式数据压缩方法、装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766564B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916171A (zh) * | 2010-07-16 | 2010-12-15 | 中国科学院计算技术研究所 | 一种并发层次式的重复数据消除方法和系统 |
CN103136243A (zh) * | 2011-11-29 | 2013-06-05 | 中国电信股份有限公司 | 基于云存储的文件系统去重方法及装置 |
CN104754055A (zh) * | 2015-04-03 | 2015-07-01 | 易云捷讯科技(北京)有限公司 | 一种多云环境下的安全云存储方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626373B2 (en) * | 2012-10-01 | 2017-04-18 | Western Digital Technologies, Inc. | Optimizing data block size for deduplication |
KR101956031B1 (ko) * | 2012-10-15 | 2019-03-11 | 삼성전자 주식회사 | 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템 |
-
2017
- 2017-11-07 CN CN201711086239.5A patent/CN107766564B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916171A (zh) * | 2010-07-16 | 2010-12-15 | 中国科学院计算技术研究所 | 一种并发层次式的重复数据消除方法和系统 |
CN103136243A (zh) * | 2011-11-29 | 2013-06-05 | 中国电信股份有限公司 | 基于云存储的文件系统去重方法及装置 |
CN104754055A (zh) * | 2015-04-03 | 2015-07-01 | 易云捷讯科技(北京)有限公司 | 一种多云环境下的安全云存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107766564A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243915B2 (en) | Method and apparatus for data deduplication | |
US10089338B2 (en) | Method and apparatus for object storage | |
CN107229420B (zh) | 数据存储方法、读取方法、删除方法和数据操作系统 | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN106788468B (zh) | 一种纠删码更新方法及装置,电子设备 | |
US10911066B2 (en) | Method and system of content based dynamic data compression | |
US20220405020A1 (en) | Method for writing data in append mode, device and storage medium | |
US11899624B2 (en) | System and method for random-access manipulation of compacted data files | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN104579356A (zh) | 在存在重现的霍夫曼树的情况下加速解压缩的方法和系统 | |
CN109918352B (zh) | 存储器系统和存储数据的方法 | |
US10802719B2 (en) | Method and system for data compression and data storage optimization | |
CN110413413A (zh) | 一种数据写入方法、装置、设备及存储介质 | |
US10262007B2 (en) | Systems and methods for automatically passing hints to a file system | |
US20200133583A1 (en) | Method, apparatus and computer program product for storing data | |
CN107766564B (zh) | 记录式数据压缩方法、装置、电子设备、存储介质 | |
CN114065704A (zh) | 数据压缩方法、电子设备和计算机程序产品 | |
US11943294B1 (en) | Storage medium and compression for object stores | |
CN110704372B (zh) | 数据恢复方法和装置 | |
CN111967001A (zh) | 一种基于双容器的解码与编码安全隔离方法 | |
US11500590B2 (en) | Method, device and computer program product for data writing | |
CN113553333A (zh) | 一种数据库的数据操作方法、装置、设备及介质 | |
CN113568576A (zh) | 数据处理方法及装置、存储介质、电子设备 | |
WO2021163496A1 (en) | Method for compressing sequential records of interrelated data fields | |
CN116775588A (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 |