CN103198127A - 大文件排序方法及系统 - Google Patents
大文件排序方法及系统 Download PDFInfo
- Publication number
- CN103198127A CN103198127A CN2013101235936A CN201310123593A CN103198127A CN 103198127 A CN103198127 A CN 103198127A CN 2013101235936 A CN2013101235936 A CN 2013101235936A CN 201310123593 A CN201310123593 A CN 201310123593A CN 103198127 A CN103198127 A CN 103198127A
- Authority
- CN
- China
- Prior art keywords
- character
- class
- new
- field
- control word
- 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
Abstract
本发明公开了一种大文件排序方法,包括如下步骤:(a)压缩:将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;(b)排序:将所述新文件所包括的新数据记录使用DFSORT工具进行排序;(c)解压:将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。本发明还公开了一种大文件排序系统,用于对包括海量数据记录的大文件进行排序处理。本发明的有益效果在于:通过压缩,缩小了参与排序的数据记录以及由这些数据记录组成的文件的大小,降低了CPU及内存开销,提高了排序速度。
Description
技术领域
本发明涉及一种大文件排序方法及系统,主要用于解决IBM大型机环境、z/OS操作系统下海量的顺序文件(QSAM文件)排序的性能问题。
背景技术
在使用IBM大型机(z/OS操作系统)环境下进行批量处理的过程中,为了提高处理效率,往往会采用DFSORT工具对海量的顺序文件进行排序处理。DFSORT工具是IBM研发的排序工具软件,在业界被广泛地使用,它可以有效地提高批量处理速度。但在处理海量数据时,IBM的DFSORT工具仍显不足,排序处理的时间过长,不能够满足应用要求。例如,某银行的一个中等规模的分行客户资料包括13227038条客户数据记录,每条数据记录多达2576字节,采用DFSORT工具对该文件进行排序的时间高达29.48分钟。排序步骤所用的时间较长,影响了批处理的效率,成为制约批处理速度的关键环节。
发明内容
针对现有技术的上述问题,本发明要解决的技术问题是提供一种利用DFSORT工具对包含有海量的数据记录的大文件的进行快速排序的方法和系统。
为了解决上述技术问题,本发明提供了大文件排序方法,所述大文件包括海量数据记录,包括如下步骤:
(a)压缩:将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;
(b)排序:将所述新文件所包括的新数据记录使用DFSORT工具进行排序;
(c)解压:将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。
作为优选,其中,所述压缩步骤进一步包括:
(a1)拆分:将每一条所述原始数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段;
(a2)分类赋值:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,根据字符类别的不同分别赋予不同的字符类别代码:如果该字符段全部为空格,定义为第一类字符段,赋予第一字符类别代码;如果字符段全部为数字0,定义为第二类字符段,赋予第二字符类别代码;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段,赋予第三字符类别代码;
(a3)按顺序生成所述新数据记录:其中由第一类字符段和第二类字符段生成的第一类新字符串和第二类新字符串分别只包括与其对应的控制字,由第三类字符段生成的第三类新字符串包括与其对应的控制字和位于该控制字后的该字符段自身;
其中,所述解压步骤进一步包括:
(c1)根据控制字将新数据记录拆分为多个所述新字符串;
(c2)根据控制字中的字符类别代码对新字符串进行分类处理:如果是第一类新字符串和第二类新字符串,根据控制字的字符类别代码及字符长度还原为相应的由空格和数字0组成的字符段,如果是第三类新字符串,提出位于第三类字符串的控制字之后的字符,还原为原始的字符段;
(c3)按顺序还原成所述原始数据记录;将新字符串对应的原始的字符按顺序组合,还原为所述原始数据记录。
进一步地,其中步骤(a2)和(a3)之间还包括:如果相邻的两个或多个字符段属于相同的字符类别,则将其合并为一个字符段。
作为优选,其中所述固定的字节数为四。
本发明还提供了一种大文件排序系统,包括:
压缩模块:用于将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;
排序模块:用于将所述新文件所包括的新数据记录使用DFSORT工具进行排序;
解压模块:用于将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。
作为优选,所述压缩模块进一步包括:
拆分模块:用于将每一条所述原始数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段;
赋值模块:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,每一类别的字符段分别赋予一个字符类别代码,其中字符类别按如下规则进行分类:如果该字符段全部为空格,定义为第一类字符段;如果字符段全部为数字0,定义为第二类字符段;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段;
组合模块:将由各个字符段生成的新字符串进行组合,其中由第一类字符段和第二类字符段生成的新字符串分别只包括与其对应的控制字,由第三类字符段生成的新字符串则包括与其对应的控制字和位于该控制字之后的该字符段自身。
进一步地,所述大文件排序系统还包括预组合模块,用于将属于相同字符类别的两个或多个相邻的字符段合并为一个字符段。
与现有技术相比,本发明的有益效果在于:通过压缩,缩小了参与排序的数据记录以及由这些数据记录组成的文件的大小,降低了CPU及内存开销,提高了排序速度。
附图说明
图1为本发明的一个实施例的大文件排序方法的流程图。
图2为本发明的大文件排序方法的压缩过程的详细流程示意图。
图3为采用本发明的大文件排序方法对一条数据记录进行压缩后生成新的数据记录与原始数据记录的对应图。
图4为本发明的一个实施例的大文件排序系统的组成框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细描述,但不作为对本发明的限定。
在本申请文件中,数据记录对应于数据源(文件)中的一组完整的信息,是进行数据处理的基本单位。大文件指的是包括海量的数据记录的数据文件,由于其包括的数据记录的条数特别多,一般在百万级以上设置多达上亿条数据记录,因此其所占据的存储空间也较大。
图1为本发明的一个实施例的大文件排序方法的流程图。如图1所示,本发明的大文件排序方法,包括如下步骤:
(a)压缩:将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;
(b)排序:将所述新文件所包括的新数据记录使用DFSORT工具进行排序;
(c)解压:将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。
本发明的大文件排序方法对所采用的压缩方法的要求是,对大文件所包括的每一条原始数据记录分别进行压缩,而不是对大文件整体进行压缩。经过压缩后的数据记录所占用的存储空间减少,而且在排序过程中所消耗的内存与CPU等资源也较少,从而提高了整体的处理效率。
图2为本发明的大文件排序方法的压缩过程的详细流程示意图。图3为采用本发明的大文件排序方法对一条数据记录进行压缩后生成新的数据记录与原始数据记录的对应图。为了尽可能地提高排序效率,在减少数据记录所占的存储空间的同时不能影响后续的排序操作,本实施例采用独特的压缩方法。如图2所示,本实施例中,压缩步骤进一步包括:
(a1)拆分:将每一条原始数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段;
(a2)分类赋值:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,根据字符类别的不同分别赋予不同的字符类别代码:如果该字符段全部为空格,定义为第一类字符段,赋予第一字符类别代码;如果字符段全部为数字0,定义为第二类字符段,赋予第二字符类别代码;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段,赋予第三字符类别代码;
(a3)按顺序生成新数据记录:其中由第一类字符段和第二类字符段生成的第一类新字符串和第二类新字符串分别只包括与其对应的控制字,由第三类字符段生成的第三类新字符串包括与其对应的控制字和位于该控制字后的该字符段自身。
虽然图2中未示出解压步骤,但参照图2所示的压缩步骤可以帮助理解解压步骤,与上述的压缩步骤相对应(解压步骤是压缩步骤的逆过程),所述解压步骤进一步包括:(c1)根据控制字将新数据记录进行拆分,分为多个新字符串;(c2)根据控制字中的字符类别代码对新字符串进行分类处理:如果是第一类新字符串和第二类新字符串,根据控制字的字符类别代码及字符长度分别还原为相应的由空格和数字0组成的字符段,如果是第三类新字符串,提出位于第三类字符串的控制字之后的字符,还原为原始的由空格和数字0之外的普通字符组成的字符段;(c3)按顺序还原成原始的数据记录;将新字符串对应的原始的字符按顺序组合,还原为原始的数据记录。
以下以图3中所示的数据记录并参照图2所示的流程图来说明本实施例的大文件排序方法,其中“ABCDEFGH”代表参与排序的字符,是不能压缩的普通字符,“S”代表空格,“0”代表数字0,都是可压缩的字符。
压缩处理以一个WORD(字,即4个字节)为单位,主要考虑到IBM大型机的很多指令是以WORD为处理单位,这样可以提高处理效率。图3所示的数据记录被拆分为八个字符段,每段字符段都会被赋予一个字长的控制字,其中高2位字节的X’0001’、X’0002’、X’0003’(均为十六进制),分别表示空格、数字0、普通字符,低2位字节表示相应的字符段的长度。作为优选处理,为了提高压缩效率,如果相邻的两个或多个字符段属于相同的字符类别,则将其合并为一个字符段。例如在图3中,将“ABCDEFGH”合并为一个字符段,将四个字长的16个S合并为一个字符段,将2个字长的数字0合并为一个字符段。如图3所示,对于普通字符段,也就是除了全部为空格的第一类字符段和全部为数字0的第二类字符段的第三类字符段,例如“ABCDEFGH”,被压缩后,生成的第三类新字符串为“X’00030008’ABCDEFGH”,其中的控制字“X’0003’”为字符类别代码,即说明其代表的是普通字符,“X’0008”代表字符长度,即普通字符有8位。其中,字符类别代码可以根据实际需要进行赋值,只要不同的字符类别对应不同的代码即可。在解压缩时,如果一个新字符串中的控制字的字符类别代码表示其为由普通字符段生成的第三类字符串,则提出位于第三类字符串的控制字之后的字符,还原为原始的字符段。
对于全部由空格组成的第一类字符段,则仅生成控制字即可,即图3所示的16个空格对应“X’00010010’”,其中“X’0001’”表示此处为空格,“X’0010’”表示空格长度为16。在解压时,只需还原为对应长度的空格即可。同理,对于全部由数字0组成的第二类字符段,比如图3所示的8个0,生成为“X’00020008’”,其中“X’0002”表示此处为数字0,“X’0008’”表示有8个0。在解压缩时采用与此相反的方式从各个控制字得到原始的字符段。
与上文所述的对大文件进行排序的相对应,如图4所示,本发明实施例的对大文件进行排序的系统,包括:
压缩模块1:用于对所述大文件的每一条原始数据记录均进行压缩处理生成对应的新数据记录,将所有的新数据记录组成一个新文件;
排序模块2:用于将新文件所包括的所有的新数据记录使用DFSORT工具进行排序;
解压模块3:用于将排序后的每一条新数据记录进行解压处理,还原为原始数据记录。
如图4所示,所述压缩模块1进一步包括:
拆分模块11:用于将每一条数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段。
为了尽可能地压缩每一条数据记录,还包括预组合模块12,在拆分模块之后赋值模块还未工作之前,用于将属于相同字符类别的两个或多个相邻的字符段合并为一个字符段。
赋值模块13:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,每一类别的字符段分别赋予一个字符类别代码,其中字符类别按如下规则进行分类:如果该字符段全部为空格,定义为第一类字符段;如果字符段全部为数字0,定义为第二类字符段;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段。
组合模块14:将由各个字符段生成的新字符串进行组合,其中由第一类字符段和第二类字符段生成的新字符串分别只包括与其对应的控制字,由第三类字符段生成的新字符串则包括与其对应的控制字和位于该控制字之后的该字符段自身。
本发明的排序方法主要适用于包含有大量的连续空格和/或连续d数字0的文件。采用本实施例的排序方法对背景技术所述的包括13227038条数据记录,每条数据记录多达2576字节的大文件进行处理时,其压缩的速度达到400万条记录/分钟。经过测试,原文件大小为31.73G的客户资料,压缩后大小为6.70G,压缩率为21.1%。在同样的硬件和软件环境下,采用本发明的方法对原文件进行排序的运行时间,在采用DFSORT工具直接排序的运行时间的30-40%之间。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (7)
1.大文件排序方法,所述大文件包括海量数据记录,其特征在于,
包括如下步骤:
(a)压缩:将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;
(b)排序:将所述新文件所包括的新数据记录使用DFSORT工具进行排序;
(c)解压:将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。
2.根据权利要求1所述的大文件排序方法,其特征在于,其中,
所述压缩步骤进一步包括:
(a1)拆分:将每一条所述原始数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段;
(a2)分类赋值:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,根据字符类别的不同分别赋予不同的字符类别代码:如果该字符段全部为空格,定义为第一类字符段,赋予第一字符类别代码;如果字符段全部为数字0,定义为第二类字符段,赋予第二字符类别代码;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段,赋予第三字符类别代码;
(a3)按顺序生成所述新数据记录:其中由第一类字符段和第二类字符段生成的第一类新字符串和第二类新字符串分别只包括与其对应的控制字,由第三类字符段生成的第三类新字符串包括与其对应的控制字和位于该控制字后的该字符段自身;
其中,所述解压步骤进一步包括:
(c1)根据控制字将新数据记录拆分为多个所述新字符串;
(c2)根据控制字中的字符类别代码对新字符串进行分类处理:如果是第一类新字符串和第二类新字符串,根据控制字的字符类别代码及字符长度还原为相应的由空格和数字0组成的字符段,如果是第三类新字符串,提出位于第三类字符串的控制字之后的字符,还原为原始的字符段;
(c3)按顺序还原成所述原始数据记录;将新字符串对应的原始的字符按顺序组合,还原为所述原始数据记录。
3.根据权利要求2所述的大文件排序方法,其特征在于,其中步骤(a2)和(a3)之间还包括:
如果相邻的两个或多个字符段属于相同的字符类别,则将其合并为一个字符段。
4.根据权利要求2或3所述的大文件排序方法,其特征在于,其中所述固定的字节数为四。
5.大文件排序系统,其特征在于,包括:
压缩模块:用于将所述大文件包括的每一条原始数据记录均进行压缩处理生成对应的新数据记录,并将所有新数据记录组成一个新文件;
排序模块:用于将所述新文件所包括的新数据记录使用DFSORT工具进行排序;
解压模块:用于将排序后的每一条新数据记录进行解压处理,还原为所述原始数据记录。
6.如权利要求5所述的对大文件进行排序的系统,其特征在于,所述压缩模块进一步包括:
拆分模块:用于将每一条所述原始数据记录的字符从高位到低位以固定的字节数为单位按顺序拆分成多个字符段;
赋值模块:为每一字符段赋予一个控制字,所述控制字包括字符类别代码和字符长度,每一类别的字符段分别赋予一个字符类别代码,其中字符类别按如下规则进行分类:如果该字符段全部为空格,定义为第一类字符段;如果字符段全部为数字0,定义为第二类字符段;如果该字符段既不全部为空格也不全部为数字0,定义为第三类字符段;
组合模块:将由各个字符段生成的新字符串进行组合,其中由第一类字符段和第二类字符段生成的新字符串分别只包括与其对应的控制字,由第三类字符段生成的新字符串则包括与其对应的控制字和位于该控制字之后的该字符段自身。
7.如权利要求6所述的对大文件进行排序的系统,其特征在于,还包括预组合模块,用于将属于相同字符类别的两个或多个相邻的字符段合并为一个字符段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310123593.6A CN103198127B (zh) | 2013-04-10 | 2013-04-10 | 大文件排序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310123593.6A CN103198127B (zh) | 2013-04-10 | 2013-04-10 | 大文件排序方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198127A true CN103198127A (zh) | 2013-07-10 |
CN103198127B CN103198127B (zh) | 2016-03-30 |
Family
ID=48720684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310123593.6A Active CN103198127B (zh) | 2013-04-10 | 2013-04-10 | 大文件排序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198127B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577559A (zh) * | 2013-10-23 | 2014-02-12 | 华为技术有限公司 | 数据排序方法和装置 |
CN110955637A (zh) * | 2019-11-27 | 2020-04-03 | 集奥聚合(北京)人工智能科技有限公司 | 一种基于低内存实现超大文件的排序方法 |
CN111723053A (zh) * | 2020-06-24 | 2020-09-29 | 北京航天数据股份有限公司 | 一种数据的压缩方法及装置、解压方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770150A (zh) * | 2004-11-03 | 2006-05-10 | 北京神舟航天软件技术有限公司 | 数据库压缩及解压缩方法 |
CN1928850A (zh) * | 2006-08-11 | 2007-03-14 | 白杰 | 基于数据字典的数据压缩方法、装置 |
-
2013
- 2013-04-10 CN CN201310123593.6A patent/CN103198127B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770150A (zh) * | 2004-11-03 | 2006-05-10 | 北京神舟航天软件技术有限公司 | 数据库压缩及解压缩方法 |
CN1928850A (zh) * | 2006-08-11 | 2007-03-14 | 白杰 | 基于数据字典的数据压缩方法、装置 |
Non-Patent Citations (1)
Title |
---|
黄鹏: "基于列存储数据库的数据压缩研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577559A (zh) * | 2013-10-23 | 2014-02-12 | 华为技术有限公司 | 数据排序方法和装置 |
CN110955637A (zh) * | 2019-11-27 | 2020-04-03 | 集奥聚合(北京)人工智能科技有限公司 | 一种基于低内存实现超大文件的排序方法 |
CN111723053A (zh) * | 2020-06-24 | 2020-09-29 | 北京航天数据股份有限公司 | 一种数据的压缩方法及装置、解压方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103198127B (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bassiouni | Data compression in scientific and statistical databases | |
US7689630B1 (en) | Two-level bitmap structure for bit compression and data management | |
US9852169B2 (en) | Compression of tables based on occurrence of values | |
US20130141259A1 (en) | Method and system for data compression | |
CN112800008A (zh) | 日志消息的压缩、搜索和解压缩 | |
WO2007095516A2 (en) | Compression system and method for accelerating sparse matrix computations | |
CN104331269A (zh) | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 | |
CN107729406B (zh) | 一种数据分类存储方法及装置 | |
CN115630343B (zh) | 一种电子文档信息的处理方法、装置及设备 | |
CN103198127B (zh) | 大文件排序方法及系统 | |
Dinklage et al. | Practical wavelet tree construction | |
JP2016134100A (ja) | 文書処理プログラム、情報処理装置および文書処理方法 | |
Andrzejewski et al. | GPU-PLWAH: GPU-based implementation of the PLWAH algorithm for compressing bitmaps | |
CN115438114B (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
Kärkkäinen et al. | Engineering external memory LCP array construction: Parallel, in-place and large alphabet | |
Yao et al. | Parallel compression for large collections of genomes | |
CN112527753B (zh) | Dns解析记录无损压缩方法、装置、电子设备及存储介质 | |
Kärkkäinen et al. | Better external memory LCP array construction | |
Bharathi et al. | A plain-text incremental compression (pic) technique with fast lookup ability | |
CN109660262A (zh) | 一种应用于电子邮箱地址的字符编码方法及系统 | |
CN111488439B (zh) | 保存和分析日志数据的系统和方法 | |
US11397586B1 (en) | Unified and compressed statistical analysis data | |
Elahresh | Utilizing ASCII codes redundancy for data compression | |
CN100345120C (zh) | 一种利用编解码输出信息的方法 | |
US6373409B1 (en) | Method and computer program product for implementing text conversion table compression |
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 |