KR101074010B1 - 블록 단위 데이터 압축 및 복원 방법 및 그 장치 - Google Patents

블록 단위 데이터 압축 및 복원 방법 및 그 장치 Download PDF

Info

Publication number
KR101074010B1
KR101074010B1 KR1020090083387A KR20090083387A KR101074010B1 KR 101074010 B1 KR101074010 B1 KR 101074010B1 KR 1020090083387 A KR1020090083387 A KR 1020090083387A KR 20090083387 A KR20090083387 A KR 20090083387A KR 101074010 B1 KR101074010 B1 KR 101074010B1
Authority
KR
South Korea
Prior art keywords
block
data
file
compressed
compression
Prior art date
Application number
KR1020090083387A
Other languages
English (en)
Other versions
KR20110025359A (ko
Inventor
오윤식
Original Assignee
(주)이스트소프트
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by (주)이스트소프트 filed Critical (주)이스트소프트
Priority to KR1020090083387A priority Critical patent/KR101074010B1/ko
Priority to US13/380,751 priority patent/US8593312B2/en
Priority to JP2012522770A priority patent/JP2013500535A/ja
Priority to PCT/KR2010/005717 priority patent/WO2011027989A2/en
Publication of KR20110025359A publication Critical patent/KR20110025359A/ko
Application granted granted Critical
Publication of KR101074010B1 publication Critical patent/KR101074010B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

블록 단위 데이터 압축 및 복원 방법 및 그 장치가 제공된다. 본 발명에 의한 데이터 압축 장치는 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록 설정부, 상기 블록 설정부에 의해 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 압축부 및 상기 블록 설정부에 의해 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 압축파일 생성부를 포함하되, 상기 블록 바디는 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함한다.
압축, 대용량, 블록, 유니코드, 효율

Description

블록 단위 데이터 압축 및 복원 방법 및 그 장치{Block unit data compression and decompression method and apparatus thereof}
본 발명은 블록 단위 데이터 압축 및 해제 방법 및 그 장치에 관한 것이다. 더욱더 자세하게는, 원본 파일을 압축하여 압축 파일을 생성하고, 압축 파일의 압축을 복원하는 방법 및 장치에 있어서, 원본 파일을 둘 이상의 블록으로 구분하여 각 블록 별로 압축을 하거나 압축된 데이터를 복원하는 방법 및 장치에 관한 것이다.
데이터 압축 기술은 데이터를 전송하거나 기억시키는 경우 불필요한 부분을 제거하여 전송시간의 단축이나 기억 공간(space)의 절약을 꾀하는 기술을 말한다. 예를 들면, 팩시밀리로 서류를 전송하는 경우 문자와 문자 사이나 행간의 공백부분까지 함께 보내게 되면 시간이 걸린다. 이 때문에 공백부분의 위치나 크기를 다른 간략화 한 신호로 전송하거나 반복하여 나오는 데이터를 간략화함으로써 데이터를 압축하여 전송시간을 단축한다. 자기 테이프나 디스크에 데이터를 기억시킬 때 이 기술을 쓰면 기억매체가 절약된다.
데이터를 압축함에 있어서, 원본 데이터에 특정 압축 알고리즘을 적용한 후, 압축 알고리즘의 종류를 식별할 수 있는 정보를 포함하여 압축 데이터를 생성하는 기술이 널리 쓰이고 있다. 상기 원본 데이터는 컴퓨터 시스템의 파일 시스템 저장 단위인 파일(file) 단위로 지정되는 것이 일반적이다. 즉, 하나 이상의 파일을 지정한 후, 상기 지정된 파일에 대하여 압축 알고리즘을 지정하여 압축을 하게 된다. 상기 지정된 파일 각각에 대하여 각각 상이한 압축 알고리즘을 지정하는 것도 가능하다.
한편, 일부 파일 형식의 경우, 특정 영역의 데이터는 이미 압축되어 있어 더 이상의 압축이 무의미한 경우도 있다. 또한, 하나의 파일 내에서도 각각의 영역에 대해 최적화된 압축 성능이 발휘 될 수 있는 압축 알고리즘이 상이한 경우도 있다. 그러나, 이러한 경우에도 하나의 파일에 대하여는 하나의 압축 알고리즘 만이 사용될 수 있어, 파일 내부의 각 영역에 대하여 서로 상이한 압축 알고리즘을 적용하는 것이 불가능한 문제점이 있다.
또한, 일부 압축 알고리즘의 경우, 압축 가능한 데이터의 최대 길이가 제한되어 그 이상의 크기를 가지는 데이터를 압축하는 것이 불가능한 문제점이 있다. 예를 들어, 압축 대상 데이터의 길이를 4바이트 이내로 표현해야 하는 압축 알고리즘의 경우 4 기가 바이트(Giga Byte) 이상의 길이를 가지는 데이터를 압축하는 것이 불가능하다.
본 발명이 해결하고자 하는 기술적 과제는 하나의 파일을 두 개 이상의 블록으로 분할 하여 각 블록 별로 데이터를 압축하고, 상기 블록에 적용된 압축 알고리즘의 식별 정보 등의 압축 정보를 포함하는 블록 헤더 및 블록 바디를 포함하는 압축 파일을 생성하는 데이터 압축 장치 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 각 블록 별로 블록 헤더 및 블록 바디를 포함하는 압축 파일을 로딩하여 각 블록 별로 파싱 한 후, 각 블록 헤더에 포함된 해당 블록 바디의 압축 정보에 따라 대응하는 압축 알고리즘을 이용하여 압축을 복원하는 압축 데이터 복원 장치 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 압축 파일에 포함된 각각의 원본 파일에 대한 원본 파일 헤더에 해당 원본 파일의 파일 경로 형식이 인코딩 된 방식을 포함시킴으로써 압축 복원 시 파일 경로가 손상되는 것을 방지하는 압축 데이터 복원 장치 및 방법과 압축 데이터 복원 장치 및 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 태양에 따른 데이터 압축 장치는 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록 설정부, 상기 블록 설정부에 의해 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 압축부 및 상기 블록 설정부에 의해 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 압축파일 생성부를 포함하되, 상기 블록 바디는 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 태양에 따른 압축 데이터 복원 장치는 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하는 압축 파일 파싱부, 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 블록 압축 복원부 및 상기 블록 압축 복원부에 의해 압축이 복원된 상기 블록 바디를 연결하여 원본 파일을 생성하는 원본 파일 생성부를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 태양에 따른 데이터 압축 방법은 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하고, 상기 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 단계 및 상기 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 단 계를 포함한다. 다만, 상기 블록 바디는 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 태양에 따른 압축 데이터 해제 방법은 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하며, 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 단계 및 압축이 복원된 각각의 상기 블록 바디를 연결하여 원본 파일을 생성하는 단계를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 태양에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체는 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록을 설정하기 위한 기능, 상기 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 기능 및 상기 구분된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 기능을 실행할 수 있다. 다만, 상기 상기 블록 바디는 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함하는 데이터이다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 태양에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체는 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하는 기능, 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 기능 및 상기 압축이 복원된 각각의 블록 바디를 연결하여 원본 파일을 생성하는 기능을 실행할 수도 있다.
상기와 같은 본 발명에 따르면, 하나의 파일을 두 개 이상의 블록으로 구분 한 후, 각 블록에 대하여 해당 블록에 가장 적합한 압축 알고리즘을 선택하여 압축을 할 수 있는 효과가 있다.
또한, 파일의 일부에 대하여만 압축이 필요한 경우, 해당 부분만을 블록으로 지정하여 데이터를 압축할 수 있으며, 반대로 상기 압축 파일의 복원 시에는 압축된 부분만을 복원하여 원본 파일을 생성할 수 있는 효과가 있다.
또한, 압축 알고리즘이 지원하는 데이터 크기를 초과하는 파일에 대하여도 상기 압축 알고리즘이 지원하는 데이터 크기 내의 여러 개의 블록으로 분할 한 후 상기 압축 알고리즘을 이용하여 데이터를 압축함으로써, 압축 알고리즘을 그대로 사용하여 대용량 데이터를 압축 할 수 있는 효과가 있다.
또한, 압축 파일에 포함되는 원본 파일의 파일 경로의 언어 인코딩 방식이 원본 파일 헤더에 포함되고, 상기 압축 파일 복원 시 상기 원본 파일 헤더에 포함된 언어 인코딩 방식을 감안하여 파일 경로를 복원하기 때문에, 파일 경로가 압축 파일 복원 시 손상 되는 것을 방지할 수 있는 효과가 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 블록 단위 데이터 압축 및 복원 방법 및 그 장치를 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재 되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하, 본 발명의 일 실시예에 따른 데이터 압축 장치의 구성 및 동작을 도 1을 참조하여 설명하기로 한다. 도 1은 본 실시예에 따른 데이터 압축 장치의 구성도이다. 본 실시예에 따른 데이터 압축 장치는 범용 컴퓨터 시스템에 특정 기능을 수행하는 프로그램이 실행 중인 상태를 의미하는 것으로 이해될 수 있을 것이다.
도 1에 도시된 바와 같이, 본 실시예에 따른 데이터 압축 장치는 사용자 인터페이스(100), 제어부(102), 블록 설정부(104), 저장부(106), 압축부(108) 및 압축파일 생성부(110)를 포함한다.
사용자 인터페이스(100)는 데이터 압축 장치의 사용자로부터 압축 대상인 원본 파일을 지정 받아 상기 원본 파일의 정보를 제어부(102)에 제공한다. 이하, '원본 파일'은 압축하고자 하는 데이터 그룹을 지칭하는 용어로 사용되며, 범용 컴퓨터 시스템에서 데이터를 저장하는 단위로 사용하는 파일(file)과 동의어로 해석되어서는 안 된다는 것을 주의해야 한다. 즉, '원본 파일'은 한 그룹의 압축 대상 데이터를 의미하는 것이다. 상기 원본 파일은 예를 들면 운영 체제가 지원하는 파일 시스템(File System) 상의 저장 단위인 파일, 메모리에 임시로 저장된 데이터 일 수 있다.
제어부(102)는 블록 설정부(104)에 상기 원본 파일에 대한 정보를 전달한다. 제어부(102)는 블록 설정부(104)에 블록 설정 정보를 더 전달 할 수 있다. 상기 블록 설정 정보에는 블록 설정 기준이 포함될 수 있다.
블록 설정부(104)는 저장부(106)로부터 상기 원본 파일을 로딩하여, 상기 원본 파일의 데이터를 둘 이상의 블록으로 구분한다. 블록 설정부(104)는 상기 원본 파일을 로딩하여, 원본 파일의 헤더(header) 데이터를 제외한 바디(body) 데이터를 둘 이상의 블록으로 구분하는 것이 바람직하다.
저장부(106)는 원본 파일 및 압축파일 생성부(110)이 생성한 압축 파일을 저장한다. 저장부(106)는 캐쉬(Cache), 롬(Read Only Memory; ROM), 피롬(Programable ROM; PROM), 이피롬(Erasable Programmable ROM; EPROM), 이이피롬(Electrically Erasable Programmable ROM; EEPROM) 및 플래쉬 메모리(Flash memory)와 같은 비휘발성 메모리 소자, 램(Random Access Memory; RAM)과 같은 휘 발성 메모리 소자, 및 하드디스크 드라이브(Hard disk drive)와 같은 저장매체로 중 적어도 하나로 구현될 수 있으나 이에 한정되지는 않는다. 또한, 도 1에는 저장부(106)가 블록 설정부(104) 및 압축파일 생성부(110)와 직접 연결된 것으로 도시되어 있으나, 저장부(106)는 본 실시예에 따른 데이터 압축 장치와 분리되어 있으며, 네트워크를 통하여 블록 설정부(104) 및 압축파일 생성부(110)와 연결될 수 있다.
압축부(108)는 블록 설정부(104)에 의해 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성한다. 즉, 압축부(108)가 상기 원본 파일의 전 데이터를 압축하지는 않을 수도 있음을 유의해야 한다. 예를 들어, 블록 설정부(104)가 상기 원본 파일을 3개의 블록으로 구분 하고, 그 중 2번째 블록만을 압축부(108)가 압축할 수도 있다. 어떠한 블록을 압축할 것인지는 블록 설정부(104)가 지정하여 압축부(108)에 제공할 수도 있고, 압축부(108)가 압축 효율을 기준으로 자체 판정하여 압축 효율이 기준치 이상인 블록에 대하여만 압축할 수도 있다. 상기 압축 효율은 압축 후 데이터의 크기를 압축 전 데이터의 크기로 나눈 값으로 설정될 수 있다.
압축 대상 블록 정보는 사용자 인터페이스(100)를 통하여 입력되어 제어부(102), 블록 설정부(104)를 통해 압축부(108)에 제공 될 수 있다. 상기 압축 대상 블록 정보는 블록의 시작점 오프셋(offset) 및 블록의 종결점 오프셋(offset)을 포함할 수 있다.
압축파일 생성부(110)는 블록 설정부(104)에 의해 구분 된 각 블록 별로 블 록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성한다. 이 때, 상기 블록 바디는, 해당 블록이 압축부(108)에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 압축부(108)에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함한다.
상기 블록 헤더는 해당 블록의 블록 바디가 상기 블록 원본 데이터인 경우, 압축하지 않았음을 뜻하는 플래그가 설정된 상기 압축 알고리즘의 식별 정보를 포함할 수 있다. 또한, 상기 블록 헤더는 해당 블록의 블록 바디 데이터의 압축 전 데이터 사이즈 및 압축 후 데이터 사이즈를 포함할 수 있다. 상기 블록 바디 데이터의 압축 전 데이터 사이즈 및 압축 후 데이터 사이즈는 각각 4 바이트의 길이를 가짐으로써, 최대 4 바이트의 길이를 가지는 데이터만을 압축 할 수 있는 압축 알고리즘을 지원할 수 있다.
상기 압축 파일은 각각의 상기 원본 파일에 대한 정보를 포함하는 원본 파일 헤더를 상기 원본 파일 개수만큼 더 포함하되, 상기 원본 파일 헤더는 해당 원본 파일에 대한 상기 압축 파일 내 식별 정보 및 해당 원본 파일의 크기를 나타내는 데이터를 포함할 수 있다.
또한, 상기 압축 파일은 상기 원본 파일 헤더에 포함되지 않은 원본 파일에 대한 추가 정보를 포함하는 원본 파일 헤더 확장 필드를 더 포함하되, 상기 원본 파일 헤더 확장 필드는 상기 원본 파일의 경로(path), 상기 원본 파일에 대한 코멘트(comment), 운영체제 파일 시스템 기반의 파일 정보, 상기 원본 파일의 암호화 정보 중 적어도 하나의 데이터를 포함할 수 있다.
이때, 상기 원본 파일의 경로 데이터 및 상기 원본 파일에 대한 코멘트 데이터는 암호화 여부 및 문자 인코딩 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 원본 파일의 경로 데이터는 상기 원본 파일의 경로가 상대 경로로 기재되어 있는 지 절대 경로로 기재되어 있는지 여부에 대한 플래그 및 상기 원본 파일의 경로가 상대 경로로 기재되어 있는 경우, 부모 경로를 참조할 수 있는 원본 파일의 압축 파일 내 식별 정보를 포함할 수 있다.
이하, 도 2를 참조하여 압축파일 생성부(110)가 생성하는 압축 파일의 구성 및 본 실시예에 따른 데이터 압축 장치의 동작을 설명하기로 한다. 먼저, 압축파일 생성부(110)가 생성하는 압축 파일의 구성을 도 2를 참조하여 설명한다. 도 2는 본 실시예에 따른 데이터 압축 장치가 생성하는 압축 파일의 구성을 나타낸 도면이다. 다만, 도 2를 해석함에 있어서, 각 구성 데이터의 순서는 변경 될 수 있음을 유의해야 한다. 예를 들어 도 2에는 블록 헤더(208)가 블록 바디(212)의 앞에 위치하는 것으로 도시되어 있으나, 반대로 블록 바디(212)가 블록 헤더(208)의 앞에 위치할 수도 있다. 즉, 도 2는 본 실시예에 따른 데이터 압축 장치가 생성한 압축 파일의 구성의 하나의 예에 불과하다.
도 2에 도시된 바와 같이, 압축파일 생성부(110)가 생성하는 압축 파일은 압축 파일의 포맷을 식별 할 수 있는 정보를 포함하는 압축 파일 헤더(200), 본 압축 파일이 분할 압축 되었는지, 솔리드(solid) 압축 되었는지에 대한 정보를 포함할 수 있는 압축 파일 헤더 확장 필드(202), 본 압축 파일에 포함된 원본 파일에 대한 정보를 포함하는 원본 파일 헤더(204), 원본 파일 헤더(204)에 포함되지 않은 상기 원본 파일에 대한 추가 정보를 포함하는 원본 파일 헤더 확장 필드(206), 블록에 대한 정보를 포함하는 블록 헤더(208), 상기 블록에 대한 추가 정보가 포함될 수 있는 블록 헤더 확장 필드(210), 상기 블록의 데이터가 포함되는 블록 바디(212), 본 압축 파일에 대한 코멘트 또는 본 압축 파일이 종결 됨을 알리는 코드를 포함하는 종결 확장 필드(214)를 포함할 수 있다.
도 2를 해석함에 있어서 다음을 유의해야 한다. 압축 파일 헤더 확장 필드(202), 원본 파일 헤더 확장 필드(206), 블록 헤더 확장 필드(210)는 각각 압축 파일 헤더(200), 원본 파일 헤더(204), 블록 헤더(208)에 기재되지 못한 관련 내용을 기재하는 영역을 지칭한다. 따라서, 압축 파일 헤더 확장 필드(202), 원본 파일 헤더 확장 필드(206), 블록 헤더 확장 필드(210)에 각각 포함될 수 있는 정보는 도 2에 도시된 것에 국한되지 않으며, 도 2에 도시되지 않은 데이터를 새로 정의 하여 해당 영역에 위치 시킬 수 있다.
즉, 압축 파일 헤더(200), 원본 파일 헤더(204), 블록 헤더(208), 블록 바디(212), 분할 압축 정보, 솔리드 압축 정보 등의 경우, 미리 정의된 구성을 가진 데이터 유닛(unit)이며, 압축 파일 헤더 확장 필드(202), 원본 파일 헤더 확장 필드(206), 블록 헤더 확장 필드(210), 종결 확장 필드(214)는 상기 데이터 유닛이 위치 할 수 있는 영역을 지칭하는 것으로 이해할 수 있을 것이다.
다만, 각각의 확장 필드(202, 206, 210, 214)에 위치할 수 있는 상기 데이터 유닛은 미리 정해져 있는 것이 바람직하다. 예를 들어, 압축 파일 헤더 확장 필드(202)에 포함될 수 있는 분할 압축 정보라는 데이터 유닛은 원본 파일 헤더 확장 필드(206)에는 포함될 수 없는 것으로 미리 정해져 있을 수 있다. 또한, 각각의 확장 필드(202, 206, 210, 214)는 압축 파일의 구성에 있어서 필수적인 구성요소는 아니므로, 경우에 따라서는 확장 필드(202, 206, 210, 214)가 없는 압축 파일도 상정할 수 있다.
도 2를 해석함에 있어서 다음 사항 역시 유의해야 한다. 각 데이터 구성 요소의 오른쪽 셀에 도시된 숫자는 해당 데이터 구성 요소가 해당 압축 파일 내에 존재 할 수 있는 개수이다.
예를 들어, 원본 파일 헤더(204)는 각 원본 파일 마다 하나 존재 할 수 있으므로, 본 압축 파일 내에는 본 압축 파일의 압축을 복원하면 생성되는 원본 파일의 개수만큼의 원본 파일 헤더(204)가 존재 할 수 있다. 또한, 각각의 원본 파일은 하나 이상의 블록으로 구분될 수 있으므로, 하나의 원본 파일 헤더(204)에 연결되는 블록 헤더(208) 및 블록 바디(212)의 쌍은 상기 원본 파일 헤더 내에 존재하는 블록의 수만큼 존재할 수 있다. 다만, 상기 원본 파일이 폴더 내지는 디렉토리인 경우, 상기 원본 파일은 블록의 수가 0임을 주의해야 한다.
예를 들어, 압축 파일이 3개의 원본 파일, 즉 X 파일, Y 파일, Z 파일을 포함하고, X 파일은 가, 나 블록, Y 파일은 다, 라, 마 블록, Z 파일은 바 블록으로 각각 구성된다고 가정하면, 도 2의 압축 파일 구성 예에 따른 상기 압축 파일은 다음 순서로 구성될 수 있다. 압축 파일 헤더(200) -> X 원본 파일 헤더(204) -> 가 블록 헤더(208) -> 가 블록 바디(212) -> 나 블록 헤더(208) -> 나 블록 바디(212) -> Y 원본 파일 헤더(204) -> 다 블록 헤더(208) -> 다 블록 바디(212) -> 라 블록 헤더(208) -> 라 블록 바디(212) -> 마 블록 헤더(208) -> 마 블록 바디(212) -> Z 원본 파일 헤더(204) -> 바 블록 헤더(208) -> 바 블록 바디(212).
본 실시예에 따른 데이터 압축 장치는 하나의 파일을 두 개 이상의 블록으로 구분 한 후, 각 블록에 대하여 해당 블록에 가장 적합한 압축 알고리즘을 선택하여 압축을 할 수 있음을 이해 할 수 있을 것이다. 상기 설시 한 예에서, 압축부(108)가 X 파일의 가 블록은 A 알고리즘을 사용하여 압축하고, 나 블록은 B 알고리즘을 사용하여 압축할 수 있다. 즉, 하나의 원본 파일에 속한 데이터에 대하여도 서로 다른 압축 알고리즘을 사용하여 압축 파일을 생성할 수도 있다. 각 블록에 대하여 압축에 사용된 알고리즘에 대한 식별 정보는 블록 헤더(208)에 포함될 수 있다. 본 실시예에 따른 블록 헤더(208)의 구성 예는 도 3에 도시되어 있다.
도 3에 도시된 바와 같이, 블록 헤더(208)에는 해당 블록의 블록 바디(212) 데이터를 압축하는 데 적용한 압축 알고리즘에 대한 정보가 포함되어 있다. 압축 알고리즘의 식별 코드뿐만 아니라 해당 압축 알고리즘에 대한 힌트 정보도 포함될 수 있음을 유의한다. 상기 힌트 정보는 압축 파일의 복원 시 압축 알고리즘을 인식할 수 없는 경우 제시될 수 있다.
또한, 본 실시예에 따른 데이터 압축 장치는 파일의 일부에 대하여만 압축이 필요한 경우, 해당 부분만을 블록으로 지정하여 데이터를 압축할 수 있으며, 반대로 상기 압축 파일의 복원 시에는 압축된 부분만을 복원하여 원본 파일을 생성할 수 있는 효과가 있음을 이해할 수 있을 것이다. 상기 설시 한 예에서, 압축부(108)는 Y 파일의 다, 라, 마 블록 중 라 블록 만을 압축할 수 있다. 이 경우, 다 블록 및 마 블록의 블록 헤더(208)에 포함된 압축 알고리즘 식별 정보에는 압축하지 않았음을 뜻하는 플래그가 설정될 것이다. 또한, 다 블록 및 마 블록의 블록 바디(212)에는 원본 파일의 해당 영역의 데이터가 그대로 포함될 것이다.
상기 원본 파일이 JPEG(Joint Photographic Coding Experts Group)와 같은 이미지 파일인 경우, 데이터 중 일부 영역은 이미 JPEG 코덱에 의해 압축된 상태이므로, 압축 효과는 그리 크지 않을 것이다. 그런 경우에도 전체 파일에 대하여 압축을 하는 것은 효율적이지 않으므로, 이런 경우 일부 블록 만을 압축하는 것이 효율적이다. 특히, 데이터 크기가 큰 동영상 파일과 같은 경우, 본 실시예와 같이 일부 블록 만을 압축하는 것은 많은 시간 절감을 가져올 수 있는 효과가 있다.
본 실시예에 따른 데이터 압축 장치는 압축 알고리즘이 지원하는 데이터 크기를 초과하는 파일에 대하여도 상기 압축 알고리즘이 지원하는 데이터 크기 내의 여러 개의 블록으로 분할 한 후 상기 압축 알고리즘을 이용하여 데이터를 압축함으로써, 압축 알고리즘을 그대로 사용하여 대용량 데이터를 압축 할 수 있는 효과도 있다. 예를 들어, ZIP 형식의 압축 알고리즘은 최대 4 기가 바이트(Giga Byte)의 데이터를 압축 및 복원 할 수 있는데, 10 기가 바이트의 크기를 가진 원본 파일이 있는 경우, 본 실시예에 따른 데이터 압축 장치는 상기 원본 파일을 예를 들어 3 기가 바이트의 크기를 가진 A 블록, 3.5 기가 바이트의 크기를 가진 B 블록, 3.5 기가 바이트의 크기를 가진 C 블록으로 구분 한 후, 상기 각각의 블록에 대하여 상기 ZIP 압축 알고리즘을 적용하여 압축함으로써, 압축 가능한 크기를 초과하는 대용량 원본 파일에 대하여도 기존의 압축 알고리즘을 그대로 이용하여 압축할 수 있 는 효과가 있다. 도 4에 도시된 원본 파일 헤더(204)의 구성 예를 참조하면, 본 실시예에 따른 압축 파일 내의 원본 파일 헤더(204)는 원본 파일의 길이 필드를 4 바이트가 아닌 8 바이트로 지정하고 있기 때문에, 4기가 바이트를 초과하는 원본 파일에 대하여도 그 길이를 손실 없이 설정할 수 있다.
또한, 본 실시예에 따른 데이터 압축 장치는 압축 파일에 포함되는 원본 파일의 파일 경로의 언어 인코딩 방식이 원본 파일 헤더 확장 필드(206)에 위치하는 원본 파일 경로 데이터에 포함되고, 상기 압축 파일 복원 시 상기 파일 헤더 데이터에 포함된 언어 인코딩 방식을 감안하여 파일 경로를 복원하기 때문에, 파일 경로가 압축 파일 복원 시 손상 되는 것을 방지할 수 있는 효과가 있다.
도 2를 다시 참조하면, 원본 파일 헤더 확장 필드(206)에는 원본 파일의 경로에 대한 데이터 및 코멘트에 대한 데이터가 포함될 수 있다. 도 5에 도시된 상기 원본 파일 경로 데이터의 구성을 참조하여 본 실시예에 따른 데이터 압축 장치가 어떻게 파일 경로의 다국어 지원을 수행하는지 및 상대 경로 방식의 파일 경로 설정 기능을 설명하기로 한다.
도 5에 도시된 바와 같이, 상기 원본 파일 경로 데이터는 원본 파일의 경로가 어떤 방식으로 인코딩 되어 있는지에 대한 정보를 포함하는 Bit flag가 포함되어 있다. 도 5에는 1 바이트를 차지하는 플래그의 특정 비트(bit)의 unset, set 여부에 따라 원본 파일 경로 데이터의 암호화 여부, 인코딩 방식에 대한 정보, 상대 경로 사용여부에 대한 정보가 설정 되어 있다.
먼저, 원본 파일의 경로 데이터는 암호화 된 것일 수 있다. 도 5의 경우 Bit flag의 제 3 비트가 set 된 경우, 해당 원본 파일의 경로 데이터는 암호화 된 것임을 뜻한다. 상기 원본 파일의 경로 데이터가 암호화 된 경우, 원본 파일 헤더 확장 필드(206)에 포함될 수 있는 암호화 정보를 참조하여 상기 해당 원본 파일의 경로 데이터를 복호화 할 수 있다.
다음으로, Bit flag의 제 4 비트가 set 된 경우, 해당 원본 파일의 경로 데이터는 특정 코드 페이지(code page)에 의해 인코딩 된 것임을 뜻한다. 상기 Bit flag의 제 4 비트가 set 된 경우 상기 코드 페이지는 코드 페이지 필드에 설정된다. Bit flag의 제 4 비트가 unset 된 경우에는, 해당 원본 파일의 경로 데이터가 유니코드(Unicode) 즉, UTF-8 방식으로 인코딩 된 것임을 뜻한다.
다음으로, 원본 파일의 경로 데이터는 상대 경로 방식으로 설정된 것일 수 있다. 예를 들어, X 파일의 전체 경로가 'c:\\windows\data\movies\x' 라고 할 때 절대 경로는 'c:\\windows\data\movies\x' 인 반면, 부모 경로가 'c:\\windows\data\movies'로 된 상태의 상대 경로는 '\x'이다. 상대 경로 방식의 경로 데이터 지정은 절대 경로가 길고 하나의 디렉토리 안에 많은 수의 원본 파일이 저장 된 경우 높은 압축 효율을 가져오는 효과가 있다. Bit flag의 제 5 비트가 set 된 경우 해당 원본 파일의 경로 데이터는 상대 경로임을 뜻하고, 부모 경로는 Parent Path ID 필드에 지정된다. 상기 Parent Path ID 필드에 지정되는 값은 도 4에 도시된 원본 파일 헤더에 포함된 압축 파일 내 원본 파일의 식별 정보일 수 있다. 따라서, 상대 경로 방식으로 원본 파일 경로가 설정된 압축 파일을 복원 하는 경우, 상기 Parent Path ID 필드에 지정된 원본 파일의 경로에 상기 상대 경로를 연결하여 절대 경로를 생성한 후, 상기 절대 경로의 위치에 해당 원본 파일을 복원하면 된다.
이하, 본 발명의 다른 실시예에 따른 압축 데이터 복원 장치의 구성 및 동작을 도 6을 참조하여 설명하기로 한다. 도 6은 본 실시예에 따른 압축 데이터 복원 장치의 구성도이다. 본 실시예에 따른 압축 데이터 복원 장치는 상기 데이터 압축 장치에 의해 생성된 압축 파일을 복원할 수 있다. 본 실시예에 따른 압축 데이터 복원 장치는 도 1에 도시된 구성을 더 포함함으로써 상기 데이터 압축 장치의 기능도 수행할 수 있음을 이해할 수 있을 것이다.
도 6에 도시된 바와 같이, 본 실시예에 따른 압축 데이터 복원 장치는 사용자 인터페이스(600), 제어부(602), 압축 파일 파싱부(604), 저장부(606), 블록 압축 복원부(608) 및 원본파일 생성부(610)를 포함할 수 있다.
사용자 인터페이스(600)는 데이터 압축 장치의 사용자로부터 압축 복원 대상인 압축 파일을 지정 받아 상기 압축 파일의 정보를 제어부(602)에 제공한다.
제어부(602)는 압축 파일 파싱부(604)에 상기 압축 파일에 대한 정보를 전달한다.
압축 파일 파싱부(604)는 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 상기 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출한다.
저장부(606)는 압축 파일 및 원본파일 생성부(610)가 생성한 원본 파일을 저장한다.
블록 압축 복원부(608)는 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원한다. 상기 블록 헤더에는 해당 블록 바디의 압축에 사용된 압축 알고리즘에 대한 정보가 포함되어 있으므로, 블록 압축 복원부(608)는 상기 블록 헤더에 포함된 상기 압축 알고리즘의 식별 정보에 따른 압축 알고리즘에 대응하는 압축 복원 알고리즘을 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원할 수 있다.
상기 압축 파일에 포함된 원본 파일 중 적어도 하나가 일부 블록에 대하여만 압축이 된 경우, 즉, 적어도 하나의 상기 블록 헤더에 포함된 상기 압축 알고리즘의 식별 정보가 압축 되지 않았음을 뜻하는 플래그인 경우, 블록 압축 복원부(608)는 해당 블록 헤더와 쌍을 이루는 상기 블록 바디를 그대로 상기 원본 파일 생성부에 제공할 수 있다.
원본파일 생성부(610)는 상기 블록 압축 복원부에 의해 압축이 복원된 상기 블록 바디를 연결하여 원본 파일을 생성한다.
이하, 본 발명의 또 다른 실시예에 따른 데이터 압축 방법에 대하여 설명하기로 한다. 본 실시예에 따른 데이터 압축 방법은 상기 설명한 본 발명의 다른 실시예에 따른 데이터 압축 장치의 기술적 특징이 적용될 수 있음을 유의해야 한다.
먼저, 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분한다.
다음으로, 상기 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성한다.
다음으로, 상기 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성한다. 이때, 상기 블록 바디는, 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함한다. 또한, 상기 블록 헤더에는 해당 블록 바디의 압축에 적용된 압축 알고리즘의 식별 정보가 포함되는 것이 바람직하다. 또한, 상기 블록 헤더에는 해당 블록 바디가 압축된 것인지 여부를 나타내는 정보가 더 포함되는 것이 바람직하다.
이하, 본 발명의 또 다른 실시예에 따른 압축 데이터 복원 방법에 대하여 설명하기로 한다. 본 실시예에 따른 압축 데이터 복원 방법은 상기 설명한 본 발명의 다른 실시예에 따른 압축 데이터 복원 장치의 기술적 특징이 적용될 수 있음을 유의해야 한다.
먼저, 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩한다.
다음으로, 상기 로딩된 압축파일로부터 상기 블록 헤더 및 블록 바디를 추출한다.
다음으로, 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원한다. 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보는 해당 블록 바디의 압축에 적용된 압축 알고리즘의 식별 정보가 포함되는 것이 바람직하다. 또한, 상기 블록 헤더에는 해당 블록 바디가 압축된 것인지 여부를 나타내는 정보가 더 포함되는 것이 바람직하다. 상기 블록 헤더에 해당 블록 바디가 압축 되지 않았음을 나타내는 정보가 포함된 경우, 상기 블록 바디의 데이터는 압축을 복원하는 동작이 수행되지 않는 것이 바람직하다.
다음으로, 압축이 복원된 각각의 상기 블록 바디를 각각 연결하여 원본 파일을 생성한다. 예를 들어, X 알고리즘으로 압축된 A블록, 압축되지 않은 B블록, Y 알고리즘으로 압축된 C블록을 포함하는 압축 알고리즘의 경우, X 알고리즘에 대응하는 압축 복원 알고리즘을 이용하여 A블록을 복원한 A', Y 알고리즘에 대응하는 압축 복원 알고리즘을 이용하여 C블록을 복원한 C'를 A'BC'와 같이 연결함으로써 원본 파일을 생성할 수 있다.
이하, 본 발명의 또 다른 실시예에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 대하여 설명하기로 한다. 상기 설명한 본 발명의 다른 실시예에 따른 데이터 압축 장치 및 압축 데이터 복원 장치의 기술적 특징이 적용될 수 있음을 유의해야 한다.
상기 기록 매체는 캐쉬(Cache), 롬(Read Only Memory; ROM), 피롬(Programable ROM; PROM), 이피롬(Erasable Programmable ROM; EPROM), 이이피롬(Electrically Erasable Programmable ROM; EEPROM) 및 플래쉬 메모리(Flash memory)와 같은 비휘발성 메모리 소자, 램(Random Access Memory; RAM)과 같은 휘발성 메모리 소자, 및 하드디스크 드라이브(Hard disk drive)와 같은 저장매체로 중 적어도 하나일 수 있다.
본 실시예에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체는 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록을 설정하기 위한 기능, 상기 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 기능 및 상기 구분된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 기능을 실행할 수 있다. 다만, 상기 상기 블록 바디는 해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함하는 데이터이다.
본 실시예에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체는 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하는 기능, 상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 기능 및 상기 압축이 복원된 각각의 블록 바디를 연결하여 원본 파일을 생성하는 기능을 실행할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 압축 장치의 구성도이다.
도 2는 본 발명의 일 실시 예에 따른 데이터 압축 장치가 생성하는 압축 파일의 구성을 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 데이터 압축 장치가 생성하는 압축 파일의 구성 중 블록 헤더의 구성 예이다.
도 4는 본 발명의 일 실시 예에 따른 데이터 압축 장치가 생성하는 압축 파일의 구성 중 원본 파일 헤더의 구성 예이다.
도 5는 본 발명의 일 실시 예에 따른 데이터 압축 장치가 생성하는 압축 파일의 구성 중 원본 파일 경로 데이터의 구성 예이다.
도 6은 본 발명의 일 실시 예에 따른 압축 데이터 복원 장치의 구성도이다.

Claims (17)

  1. 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록 설정부;
    상기 블록 설정부에 의해 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 압축부; 및
    상기 블록 설정부에 의해 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 압축파일 생성부를 포함하되,
    상기 블록 바디는,
    해당 블록이 상기 압축부에 의해 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 상기 압축부에 의해 압축되지 않은 경우 상기 블록의 원본 데이터를 포함하며,
    상기 블록 헤더는,
    해당 블록의 블록 바디의 압축에 적용된 압축 알고리즘의 식별 정보를 포함하는 데이터 압축 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 블록 헤더는,
    해당 블록의 블록 바디가 상기 블록 원본 데이터인 경우, 압축하지 않았음을 뜻하는 플래그가 설정된 상기 압축 알고리즘의 식별 정보를 포함하는 데이터 압축 장치.
  4. 제 1 항에 있어서,
    상기 블록 헤더는,
    해당 블록의 블록 바디의 압축 전 데이터 사이즈 및 압축 후 데이터 사이즈를 포함하는 데이터 압축 장치.
  5. 제 1 항에 있어서,
    상기 블록 바디의 압축 전 데이터 사이즈 및 압축 후 데이터 사이즈를 나타내는 데이터는 각각 4 바이트의 길이를 가지는 데이터 압축 장치.
  6. 제 5 항에 있어서,
    상기 블록 설정부는,
    상기 원본 파일의 크기가 4 기가 바이트를 초과하는 경우 4 기가 바이트 이하의 2개 이상의 블록으로 상기 원본 파일을 구분하는 데이터 압축 장치.
  7. 제 1 항에 있어서,
    상기 압축 파일은,
    각각의 상기 원본 파일에 대한 정보를 포함하는 원본 파일 헤더를 상기 원본 파일 개수만큼 더 포함하되,
    상기 원본 파일 헤더는 해당 원본 파일에 대한 상기 압축 파일 내 식별 정보 및 해당 원본 파일의 크기를 나타내는 데이터를 포함하는 데이터 압축 장치.
  8. 제 7 항에 있어서,
    상기 압축 파일은,
    상기 원본 파일 헤더에 포함되지 않은 원본 파일에 대한 추가 정보를 포함하는 원본 파일 헤더 확장 필드를 더 포함하되,
    상기 원본 파일 헤더 확장 필드는 상기 원본 파일의 경로(path), 상기 원본 파일에 대한 코멘트(comment), 운영체제 파일 시스템 기반의 파일 정보, 상기 원본 파일의 암호화 정보 중 적어도 하나의 데이터를 포함하는 데이터 압축 장치.
  9. 제 8 항에 있어서,
    상기 원본 파일의 경로 데이터 및 상기 원본 파일에 대한 코멘트 데이터는,
    암호화 여부 및 문자 인코딩 정보 중 적어도 하나를 포함하는 데이터 압축 장치.
  10. 제 8 항에 있어서,
    상기 원본 파일의 경로 데이터는,
    상기 원본 파일의 경로가 상대 경로로 기재되어 있는 지 절대 경로로 기재되어 있는지 여부에 대한 플래그 및 상기 원본 파일의 경로가 상대 경로로 기재되어 있는 경우, 부모 경로를 참조할 수 있는 원본 파일의 압축 파일 내 식별 정보를 포함하는 데이터 압축 장치.
  11. 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하는 압축 파일 파싱부;
    상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 블록 압축 복원부; 및
    상기 블록 압축 복원부에 의해 압축이 복원된 상기 블록 바디를 연결하여 원본 파일을 생성하는 원본 파일 생성부를 포함하는 압축 데이터 복원 장치.
  12. 제 11 항에 있어서,
    상기 블록 헤더는,
    상기 블록 바디의 압축에 적용된 압축 알고리즘의 식별 정보를 포함하고,
    상기 블록 압축 복원부는,
    상기 블록 헤더에 포함된 상기 압축 알고리즘의 식별 정보에 따른 압축 알고리즘에 대응하는 압축 복원 알고리즘을 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 압축 데이터 복원 장치.
  13. 제 12 항에 있어서,
    상기 블록 압축 복원부는,
    상기 블록 헤더에 포함된 상기 압축 알고리즘의 식별 정보가 압축 되지 않았음을 뜻하는 플래그인 경우, 상기 블록 헤더와 쌍을 이루는 상기 블록 바디를 그대로 상기 원본 파일 생성부에 제공하는 압축 데이터 복원 장치.
  14. 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하고, 상기 구분 된 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 단계; 및
    상기 구분 된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 단계를 포함하되,
    상기 블록 바디는,
    해당 블록이 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 압축되지 않은 경우 상기 블록의 원본 데이터를 포함하는 데이터 압축 방법.
  15. 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하며, 상 기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 단계; 및
    압축이 복원된 각각의 상기 블록 바디를 연결하여 원본 파일을 생성하는 단계를 포함하는 압축 데이터 복원 방법.
  16. 적어도 하나의 원본 파일의 데이터를 둘 이상의 블록(block)으로 구분하는 블록을 설정하기 위한 기능;
    상기 블록 중 적어도 하나의 블록에 해당 하는 데이터에 대하여 압축 알고리즘을 적용하여 블록 압축 데이터를 생성하는 기능; 및
    상기 구분된 각 블록 별로 블록 헤더 및 상기 블록의 블록 바디를 포함하는 압축 파일을 생성하는 기능을 실행하되,
    상기 블록 바디는,
    해당 블록이 압축된 경우 상기 블록 압축 데이터를 포함하고, 해당 블록이 압축되지 않은 경우 상기 블록의 원본 데이터를 포함하는 데이터인 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  17. 블록 바디 및 상기 블록 바디에 대한 정보를 포함하는 블록 헤더의 쌍이 두 쌍 이상 포함된 압축파일을 로딩하여 상기 블록 헤더 및 블록 바디를 추출하는 기능;
    상기 블록 헤더에 포함된 상기 블록 바디에 대한 정보를 이용하여 상기 블 록 헤더와 쌍을 이루는 상기 블록 바디의 압축을 복원하는 기능; 및
    상기 압축이 복원된 각각의 블록 바디를 연결하여 원본 파일을 생성하는 기능을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020090083387A 2009-09-04 2009-09-04 블록 단위 데이터 압축 및 복원 방법 및 그 장치 KR101074010B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020090083387A KR101074010B1 (ko) 2009-09-04 2009-09-04 블록 단위 데이터 압축 및 복원 방법 및 그 장치
US13/380,751 US8593312B2 (en) 2009-09-04 2010-08-25 Method and apparatus for compressing and decompressing block unit data
JP2012522770A JP2013500535A (ja) 2009-09-04 2010-08-25 ブロック単位データ圧縮及び復元方法及びその装置
PCT/KR2010/005717 WO2011027989A2 (en) 2009-09-04 2010-08-25 Method and apparatus for compressing and decompressing block unit data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090083387A KR101074010B1 (ko) 2009-09-04 2009-09-04 블록 단위 데이터 압축 및 복원 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20110025359A KR20110025359A (ko) 2011-03-10
KR101074010B1 true KR101074010B1 (ko) 2011-10-17

Family

ID=43649755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090083387A KR101074010B1 (ko) 2009-09-04 2009-09-04 블록 단위 데이터 압축 및 복원 방법 및 그 장치

Country Status (4)

Country Link
US (1) US8593312B2 (ko)
JP (1) JP2013500535A (ko)
KR (1) KR101074010B1 (ko)
WO (1) WO2011027989A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017155201A1 (ko) * 2016-03-11 2017-09-14 주식회사 이디엄 열-지향 레이아웃 파일 생성 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101016776B1 (ko) * 2009-09-21 2011-02-25 (주)이스트소프트 상위 호환성 보장형 압축 및 복원 방법 및 장치
EP2552951A1 (en) * 2010-03-26 2013-02-06 Novo Nordisk A/S Novel glucagon analogues
US10090857B2 (en) 2010-04-26 2018-10-02 Samsung Electronics Co., Ltd. Method and apparatus for compressing genetic data
JP2013085071A (ja) * 2011-10-07 2013-05-09 Fujitsu Ltd データ圧縮装置、及び方法
GB2503711B (en) * 2012-07-05 2014-10-15 Quixel Holdings Ltd Video data communication
US8847798B2 (en) * 2012-12-17 2014-09-30 Maxeler Technologies, Ltd. Systems and methods for data compression and parallel, pipelined decompression
US9864536B2 (en) * 2013-10-24 2018-01-09 Qualcomm Incorporated System and method for conserving power consumption in a memory system
US10810281B2 (en) 2017-02-24 2020-10-20 Texas Instruments Incorporated Outer product multipler system and method
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10735023B2 (en) * 2017-02-24 2020-08-04 Texas Instruments Incorporated Matrix compression accelerator system and method
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
KR102122956B1 (ko) * 2018-01-11 2020-06-15 주식회사 넥슨코리아 프로그램 설치 장치 및 방법
CN110888851B (zh) * 2018-08-15 2023-06-20 阿里巴巴集团控股有限公司 压缩文件创建和解压的方法及装置、以及电子和存储设备
CN114128240A (zh) * 2019-02-28 2022-03-01 华为技术有限公司 实现内部网关协议的网络中的压缩数据传输
CN112148694B (zh) * 2019-06-28 2022-06-14 华为技术有限公司 一种用于电子设备的数据压缩、数据解压方法及电子设备
CN110738023B (zh) * 2019-10-17 2020-10-30 深圳旗鱼体育传播有限公司 一种将json天气数据转换为jpeg图片的***及方法
WO2022198483A1 (zh) * 2021-03-24 2022-09-29 深圳市大疆创新科技有限公司 数据压缩方法、装置、可移动平台及存储介质
WO2023017956A1 (ko) * 2021-08-07 2023-02-16 김정훈 데이터 압축 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100597513B1 (ko) * 1999-08-13 2006-07-10 후지쯔 가부시끼가이샤 파일 처리 방법, 데이터 처리 장치 및 기억 매체

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455629A (en) 1991-02-27 1995-10-03 Rca Thomson Licensing Corporation Apparatus for concealing errors in a digital video processing system
JPH04359315A (ja) * 1991-06-05 1992-12-11 Matsushita Electric Ind Co Ltd データ圧縮制御装置及びデータ復元制御装置
JPH05313904A (ja) 1992-05-13 1993-11-26 Kobe Nippon Denki Software Kk プログラムファイル圧縮方式
US5873097A (en) 1993-05-12 1999-02-16 Apple Computer, Inc. Update mechanism for computer storage container manager
US5579316A (en) 1994-05-02 1996-11-26 Adtran Communications technique for transmitting limited size digital data frames using macro headers to represent multiple header code patterns associated with encapsulation protocols and signal processing operations to which transmitted data are subjected
EP0716370A3 (en) 1994-12-06 2005-02-16 International Business Machines Corporation A disk access method for delivering multimedia and video information on demand over wide area networks
US6081262A (en) 1996-12-04 2000-06-27 Quark, Inc. Method and apparatus for generating multi-media presentations
JP3647200B2 (ja) * 1997-05-01 2005-05-11 オリンパス株式会社 情報再生システム
US7570645B2 (en) 2000-01-18 2009-08-04 Viasat, Inc. Frame format and frame assembling/disassembling method for the frame format
US6091772A (en) 1997-09-26 2000-07-18 International Business Machines, Corporation Black based filtering of MPEG-2 compliant table sections
US7933295B2 (en) 1999-04-13 2011-04-26 Broadcom Corporation Cable modem with voice processing capability
US6750918B2 (en) 2000-05-12 2004-06-15 Thomson Licensing S.A. Method and system for using single OSD pixmap across multiple video raster sizes by using multiple headers
EP1187416B1 (en) 2000-09-07 2005-03-23 Matsushita Electric Industrial Co., Ltd. Method and apparatus for transmitting data packets
EP1233522A1 (en) * 2001-02-14 2002-08-21 Siemens Aktiengesellschaft A data compression/decompression method and apparatus
KR100418349B1 (ko) 2001-09-05 2004-02-11 (주) 한국인프라 데이터 압축 및 복원 방법
US7076108B2 (en) 2001-12-11 2006-07-11 Gen Dow Huang Apparatus and method for image/video compression using discrete wavelet transform
US7969306B2 (en) 2002-01-11 2011-06-28 Sap Aktiengesellschaft Context-aware and real-time item tracking system architecture and scenarios
US6993196B2 (en) 2002-03-18 2006-01-31 Eastman Kodak Company Digital image storage method
JP4317403B2 (ja) 2002-08-09 2009-08-19 パナソニック株式会社 ヘッダ圧縮装置及びヘッダ圧縮方法
US7058783B2 (en) * 2002-09-18 2006-06-06 Oracle International Corporation Method and mechanism for on-line data compression and in-place updates
KR20040038271A (ko) 2002-10-31 2004-05-08 주식회사 현대시스콤 파일 압축 및 해제 방법
US7362780B2 (en) 2002-12-11 2008-04-22 Nokia Corporation Avoiding compression of encrypted payload
KR100584422B1 (ko) 2003-06-04 2006-05-26 삼성전자주식회사 영상데이터의 압축 장치 및 방법
JP3997428B2 (ja) 2003-09-25 2007-10-24 ソニー株式会社 記録装置、ファイル管理方法、ファイル管理方法のプログラム及びファイル管理方法のプログラムを記録した記録媒体
US7447365B2 (en) * 2004-02-06 2008-11-04 Sharp Laboratories Of America, Inc. Systems and methods for mixed raster conversion in direct printing
JP4347724B2 (ja) 2004-03-05 2009-10-21 富士フイルム株式会社 画像ファイル生成装置および方法ならびに画像ファイル再生装置および方法
US20050238008A1 (en) 2004-04-23 2005-10-27 Fraser Alexander G Method and apparatus for the encapsulation of control information in a real-time data stream
JP2006025249A (ja) * 2004-07-08 2006-01-26 Fujitsu Ltd 端末装置、そのデータバックアップシステム、そのデータバックアップ方法及びそのデータバックアッププログラム
KR100773539B1 (ko) 2004-07-14 2007-11-05 삼성전자주식회사 멀티채널 오디오 데이터 부호화/복호화 방법 및 장치
JP2007043595A (ja) 2005-08-05 2007-02-15 Nec Corp 可変長符号復号化方法および装置ならびにデータ伸長装置
US7701981B2 (en) 2005-10-27 2010-04-20 Qualcomm Incorporated System and method for improving robust header compression (ROHC) efficiency
US7307552B2 (en) 2005-11-16 2007-12-11 Cisco Technology, Inc. Method and apparatus for efficient hardware based deflate
JP4546387B2 (ja) * 2005-11-17 2010-09-15 富士通株式会社 バックアップシステム、方法及びプログラム
US7843823B2 (en) 2006-07-28 2010-11-30 Cisco Technology, Inc. Techniques for balancing throughput and compression in a network communication system
JP4415978B2 (ja) * 2006-08-02 2010-02-17 ソニー株式会社 画像信号処理装置、画像信号処理方法
US8102853B2 (en) 2006-08-09 2012-01-24 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed video having fixed size MAC header with an extension
KR100823287B1 (ko) * 2007-01-03 2008-04-21 삼성전자주식회사 전역 차이 벡터를 이용한 다시점 영상의 부호화, 복호화방법 및 장치
US20080310452A1 (en) 2007-06-14 2008-12-18 Texas Instruments Incorporated Data link layer headers
JP4976971B2 (ja) 2007-09-28 2012-07-18 コニカミノルタビジネステクノロジーズ株式会社 画像形成システム、画像形成装置及びプログラム
KR20090044077A (ko) 2007-10-31 2009-05-07 엘지전자 주식회사 전자제어장치의 리프로그램 방법
US8059651B2 (en) 2007-12-17 2011-11-15 Motorola Solutions, Inc. Method for recovering lost header
KR100938277B1 (ko) 2007-12-24 2010-01-21 (주)이스트소프트 압축포맷의 파일 압축과 복원 장치 및 방법
CA2722857A1 (en) 2008-04-28 2010-07-22 Xg Technology, Inc. Header compression mechanism for transmitting rtp packets over wireless links
CN101582067A (zh) 2008-05-15 2009-11-18 国际商业机器公司 解压压缩文件时减小存储需求的方法和***
KR101016776B1 (ko) 2009-09-21 2011-02-25 (주)이스트소프트 상위 호환성 보장형 압축 및 복원 방법 및 장치
CN101707616B (zh) 2009-11-27 2013-11-06 中兴通讯股份有限公司 一种用户数据报协议数据包压缩、解压缩的方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100597513B1 (ko) * 1999-08-13 2006-07-10 후지쯔 가부시끼가이샤 파일 처리 방법, 데이터 처리 장치 및 기억 매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017155201A1 (ko) * 2016-03-11 2017-09-14 주식회사 이디엄 열-지향 레이아웃 파일 생성 방법
KR101780652B1 (ko) * 2016-03-11 2017-09-21 주식회사 이디엄 열-지향 레이아웃 파일 생성 방법

Also Published As

Publication number Publication date
JP2013500535A (ja) 2013-01-07
US20120268298A1 (en) 2012-10-25
WO2011027989A3 (en) 2011-06-30
US8593312B2 (en) 2013-11-26
WO2011027989A2 (en) 2011-03-10
KR20110025359A (ko) 2011-03-10

Similar Documents

Publication Publication Date Title
KR101074010B1 (ko) 블록 단위 데이터 압축 및 복원 방법 및 그 장치
KR101016776B1 (ko) 상위 호환성 보장형 압축 및 복원 방법 및 장치
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
US8578058B2 (en) Real-time multi-block lossless recompression
US8698657B2 (en) Methods and systems for compressing and decompressing data
CN107506153B (zh) 一种数据压缩方法、数据解压方法及相关***
US8010704B2 (en) Method of efficient compression for measurement data
KR102275431B1 (ko) 저장된 데이터 유닛들의 동작 관리
US20130179413A1 (en) Compressed Distributed Storage Systems And Methods For Providing Same
CN101346883A (zh) 用于块模式访问存储的数据压缩的方法和***
CN112527736B (zh) 基于dna的数据存储方法、数据恢复方法及终端设备
CN104579356A (zh) 在存在重现的霍夫曼树的情况下加速解压缩的方法和***
US20110258163A1 (en) Dynamically created two-stage self extracting archives
US8549239B2 (en) Network message logging and archival
CN114337678A (zh) 数据压缩方法、装置、设备及存储介质
JP4960417B2 (ja) 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP2007537642A (ja) Xmlデータの構造化されたブロック単位の圧縮及び解凍方法及び装置
JP2022544763A (ja) 複数のデータのストリームを含む圧縮済み入力データを展開する展開エンジン
CN105704215A (zh) 文件共享***及相应的文件发送、接收方法及装置
JP5188348B2 (ja) データアクセス装置
US9496895B2 (en) Compression method and decompression method
US8725690B1 (en) Time and bandwidth efficient backups of space reduced data
KR20200121760A (ko) 인코딩된 데이터에 대한 조건부 트랜스코딩
JP2004258865A (ja) 情報処理方法
JP2005352561A (ja) データベースサーバ及びデータベースクライアント

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140925

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171011

Year of fee payment: 9