메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

최첨단 XML 압축 기술 조사

XML을 인식하거나(또는 인식하지 못하거나) 쿼리할 수 있는(또는 쿼리할 수 없는) 데이터 압축 프로그램 검토

Sherif Sakr, 연구원, National ICT Australia
Sherif Sakr 박사는 오스트레일리아 시드니의 NICTA(National ICT Australia)에서 소프트웨어 시스템 그룹의 연구원이다. 그는 뉴사일스웨일즈대학교(UNSW, University of New South Wales)의 컴퓨터 과학 및 공학부(CSE, School of Computer Science and Engineering) 전임강사도 맡고 있다. 그는 2007년에 독일 콘스탄츠대학교(Konstanz University)에서 컴퓨터 과학 박사 학위를 받았고, 2000년과 2003년에 이집트 카이로대학교(Cairo University)의 컴퓨터정보학부 정보시스템학과에서 각각 컴퓨터 과학 학사 및 석사 학위를 받았다. 2011년, Sakr 박사는 미국 워싱턴주 레드먼드 소재 Microsoft Research의 XCG(eXtreme Computing Group)에서 객원연구원으로 초빙되었다.

요약:  XML은 월드 와이드 웹에서의 데이터 표시와 교환을 위한 표준으로 간주됩니다. XML은 유연성이 뛰어나고 널리 사용되고 있지만, 한 가지 결점은 XML 문서의 크기가 크다는 점입니다. 따라서 XML 형식으로 전송, 처리, 저장 및 쿼리하는 정보의 양이 다른 데이터 형식으로 된 정보의 양보다 큰 경우가 많습니다. 여러 가지 XML 압축 기술 중에서 원하는 기술을 선택하여 이런 문제에 대처할 수 있습니다. 이 기사에서는 현재 사용되는 다양한 XML 압축 기술에 대한 개요를 설명합니다.

기사 게재일:  2011 년 10 월 11 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (253KB | 18 pages)Get Adobe® Reader®
페이지뷰:  1736 회
의견:  


소개

자주 사용하는 약어

  • CDATA: Character data
  • DTD: Document Type Definition
  • GPS: Global positioning system
  • HTML: HyperText Markup Language
  • PPM: Prediction by Partial Match
  • SAX: Simple API for XML
  • W3C: World Wide Web Consortium
  • XML: Extensible Markup Language

XML은 HTML과 월드 와이드 웹이 얻고 있는 엄청난 대중성의 결과로서 등장한 가장 유용하고 중요한 기술 중 하나이다. XML은 다양한 아키텍처 간에 중립적인 데이터 표시 기능을 제공하고, 최소한의 노력으로 소프트웨어 시스템 간의 격차를 해소하고, 대량의 반구조적 데이터를 저장하므로, 수많은 문제점을 해결해준다.

XML은 문서에 있는 각각의 레코드에 대해 스키마가 반복되도록 설계되어 있으므로, 종종 자기 기술적 데이터로 불린다. 이런 자기 기술적 특성으로 인해 XML은 유연성이 매우 뛰어나지만, 자세한 정보를 많이 담고 있어 XML 문서 크기가 지나치게 커지는 문제점도 발생한다. XML 사용이 계속 증가하고 XML 문서의 큰 저장소가 현재 너무 만연되어 있기 때문에, 효율적인 XML 압축 도구에 대한 요구가 거세다.

그림 1은 네트워크를 통해 XML 데이터를 전송하는 비용을 줄이기 위해 XML 압축 프로그램을 사용할 때의 장점을 보여준다. 큰 XML 문서의 크기 문제점을 해결하기 위해, 여러 가지 XML 인식 압축 프로그램에서는 잘 알려진 XML 문서의 구조를 이용해 일반적인 텍스트 압축 프로그램보다 나은 압축비를 달성한다. XML 압축 도구의 수많은 이점 중에는 데이터 교환에 필요한 네트워크 대역폭 감소, 저장에 필요한 디스크 공간 감소, XML 문서 처리 및 쿼리의 기본 메모리 요구사항 최소화가 포함된다.


그림 1. 네트워크를 통해 XML 데이터를 전송할 때 XML 압축 프로그램을 사용하는 이점을 보여주는 예
네트워크를 통해 XML 데이터를 전송할 때 XML 압축 프로그램을 사용하는 이점의 사례를 보여주는 다이어그램

원칙적으로, XML 압축 프로그램은 두 가지 기본 특성을 기준으로 분류할 수 있다. 그림 2는 XML 문서의 구조에 대한 인식을 바탕으로 하는 첫 번째 분류를 나타낸 것이다. 이 분류에 따르면, 압축 프로그램은 다음 두 가지 기본 그룹으로 나뉜다.

  • 일반 텍스트 압축 프로그램. XML 데이터는 텍스트 파일로 저장되기 때문에, XML 문서를 압축하기 위한 첫 번째 논리적 접근 방법은 기존의 범용 텍스트 압축 도구(예: gzip, bzip2)를 사용하는 것이었다. 이 그룹의 XML 압축 프로그램은 XML을 인식하지 못하는 압축 프로그램이다. 즉, 이런 프로그램은 XML 문서를 일반 텍스트 문서로 취급하므로 기존의 텍스트 압축 기술을 적용한다.
  • XML 인식 압축 프로그램. 이 그룹의 압축 프로그램은 XML 문서 구조를 인식하여 일반적인 텍스트 압축 프로그램보다 높은 압축비를 달성하도록 설계되었다. 이 그룹에 속하는 압축 프로그램은 다음과 같이 XML 문서의 스키마 정보 가용성에 대한 종속성에 따라 더 세부적으로 분류할 수 있다.
    • 스키마 종속적 압축 프로그램. 인코더와 디코더 모두 압축 프로세스를 완료하기 위해 문서 스키마 정보에 대한 액세스 권한이 있어야 한다(예: rngzip).
    • 스키마 독립적 압축 프로그램. 인코딩 및 디코딩 프로세스를 완료하는 데 스키마 정보의 가용성이 필수적이지 않다(예: XMill, SCMPPM).

그림 2. XML 문서의 구조에 대한 인식 여부에 따른 XML 압축 프로그램의 분류
XML 문서의 구조에 대한 인식 여부에 따른 XML 압축 프로그램의 분류를 보여주는 다이어그램

그림 3은 다음과 같이 쿼리 지원 능력을 바탕으로 하는 XML 압축 프로그램의 두 번째 분류 방법을 보여준다.

  • 쿼리 불가능한(아카이브) XML 압축 프로그램. 이 그룹에 속하는 XML 압축 프로그램에서는 압축된 형식에 대해 어떤 쿼리도 처리할 수 없다(예: gzip, bzip2, XMill). 이 그룹의 기본 목적은 최고의 압축비를 달성하는 것이다. 기본적으로, 범용 텍스트 압축 프로그램은 쿼리 불가능한 그룹의 압축 프로그램에 속한다.
  • 쿼리 가능한 XML 압축 프로그램. 이 그룹에 속하는 XML 압축 프로그램에서는 압축된 형식에 대한 쿼리를 처리할 수 있다. 이 그룹의 압축비는 보통 아카이브 XML 압축 프로그램의 압축비보다 낮다. 하지만, 이 그룹의 기본 목적은 쿼리 실행 중 전체 문서의 압축이 풀리지 않도록 하는 것이다. 사실, 압축된 XML 형식에 대해 직접 쿼리를 수행하는 능력은 모바일 디바이스 및 GPS 시스템과 같이 자원이 한정된 컴퓨팅 디바이스에 호스트되어 있는 수많은 애플리케이션에 중요하다. 기본적으로, 쿼리 가능한 모든 압축 프로그램은 XML도 인식한다. XML 문서의 구조 및 데이터 파트를 인코드하는 방식을 기준으로, 다음과 같이 이 그룹의 압축 프로그램을 더 세분화할 수 있다.
    • 준동형 압축 프로그램. XML 문서의 원본 구조는 그대로 유지되고, 원본 형식(예: XGrind)과 같은 방법으로 압축된 형식에 액세스하여 구문 분석할 수 있다.
    • 비 준동형 압축 프로그램. XML 문서의 인코딩 프로세스가 데이터 파트에서 구조 파트를 분리한다(예: XQueC). 따라서 압축된 형식의 구조가 원본 XML 문서의 구조와 다르다.

그림 3. 쿼리 실행의 지원 여부에 따른 XML 압축 프로그램의 분류
쿼리 실행의 지원 여부에 따른 XML 압축 프로그램의 분류를 보여주는 다이어그램

일반 텍스트 압축 프로그램

XML은 트리 구조의 데이터를 텍스트로 표시한다. XML 문서를 압축하기 위한 간단한 논리적 접근 방법은 기존의 범용 텍스트 압축 도구를 사용하는 것이다. 지난 수십 년간에 걸쳐 텍스트 데이터를 효율적으로 압축하기 위해 수많은 알고리즘이 고안되었다. 이 그룹에 속하는 압축 프로그램 중 가장 대중적이고 효율적인 대표적 프로그램은 gzip, bzip2 및 PPM 압축 프로그램이다.

gzip 압축 프로그램은 LZ77 알고리즘과 호프만 압축 코딩의 조합을 사용하는 DEFLATE 무손실 데이터 압축 알고리즘을 기반으로 한다. LZ77 알고리즘에서는 데이터 압축을 위해 이미 인코더와 디코더를 모두 통과한 데이터와 일치하는 참조로 데이터 부분을 대체한다. 호프만 압축 코딩에서는 각 기호에 대한 표시를 선택하기 위해 특정 메소드를 사용하며, 이때 공통 소스 기호를 줄이기 위해 더 짧은 비트 문자열을 사용하는 가장 공통적인 문자가 사용된다.

bzip2 압축 프로그램에서는 Burrows-Wheeler 변환을 사용하여 자주 되풀이되는 문자 시퀀스를 같은 문자로 구성된 문자열로 변환한 다음, MTP(move-to-front) 변환을 적용하고, 마지막으로 호프만 압축 코딩을 적용한다. Burrows-Wheeler 변환에서는 원래 문자열에 자주 나오는 하위 문자열이 여러 개 있는 경우 변환된 문자열에 단일 문자가 한 행에 여러 번 반복되는 곳이 여러 군데 있는 식으로, 문자들의 순서가 변경된다. 이 접근 방법은 반복되는 문자들이 이어지는 문자열을 쉽게 압축하는 데 도움이 되므로 압축에 유용하게 사용된다. 실제로, bzip2 압축은 gzip을 이용한 압축보다 높은 압축비로 파일을 압축하지만, 성능은 더 낮다.

PPM은 컨텍스트 모델링 및 예측을 바탕으로 한 적응형 통계 데이터 압축 기술이다. PPM에서는 순서가 고정된 여러 가지 컨텍스트 모델을 함께 조합하여 입력 시퀀스에서 다음 문자를 예측하는 유한 컨텍스트 통계 모델링 기술을 사용한다. 이 모델의 각 컨텍스트에 대한 예측 확률은 빈도 개수로부터 계산된다. 이는 적절히 업데이트됩니다. 실제로 나타나는 기호는 산술 코딩을 사용하여 예측한 분포와 상대적으로 인코드된다. PPM은 간단하고 지금까지 제시한 압축 프로그램 중에서 가장 효율적이지만, 계산에 따른 비용이 가장 많이 들기도 한다.

실제로는, 아카이브 목적으로 또는 데이터 교환 프로세스 중의 네트워크 대역폭 감소를 위해 일반 텍스트 압축 프로그램이 사용된다. 일반적으로, 압축비와 압축/압축 풀기 시간이라는 두 가지 기본 메트릭의 측면에서 이런 압축 프로그램 간에 절충점이 있다. 한편으로는, PPM 압축이 압축비는 가장 높은 반면 gzip은 압축비가 가장 낮다. 다른 한편으로는, gzip이 압축/압축 풀기 시간 면에서 최고의 성능을 발휘하는 반면 PPM의 압축/압축 풀기 시간은 훨씬 오래 걸린다. bzip2는 두 메트릭에 대해 중간 위치를 차지한다. 따라서 사용자는 이 두 가지 메트릭을 기준으로 주로 사용 시나리오의 요구사항에 따라 사용할 압축 프로그램을 선택하게 된다.


쿼리 불가능한(아카이브) XML 압축 프로그램

이 그룹에 속하는 XML 압축 프로그램은 최고의 압축비를 달성하는 것이 주 목적이므로 압축된 형식에 대해 어떤 쿼리도 처리할 수 없다. 이 섹션에서는 다음과 같이 이 그룹의 두 가지 주 클래스의 대표적 압축 프로그램에 대해 설명한다.

  • 스키마에 독립적인 압축 프로그램
  • 스키마에 종속적인 압축 프로그램

스키마에 독립적인 압축 스킴

이 클래스의 압축 스킴에서는 인코딩 및 디코딩 프로세스에 대한 스키마 정보의 가용성이 필수적이지 않다. XMill은 XML 문서의 구조를 데이터에서 분리하고 트리에서 데이터 값의 상대 경로와 데이터 유형을 바탕으로 데이터 값을 같은 유형의 컨테이너로 그룹화한다는 새로운 아이디어를 도입한 XML 인식 압축 프로그램을 최초로 구현한 것이다.

XMill에서는 원본 XML 문서의 구조 및 데이터 값 파트가 모두 수집되고 따로 압축된다. 구조 파트에서는 XML 태그 및 속성이 사전 기반 방식으로 인코드된 후 백엔드 일반 텍스트 압축 스킴으로 인코딩을 전달한다. XMill의 구조적 인코딩 스킴은 각각의 개별 요소와 속성 이름에 정수 코드를 지정하며, 이 코드는 요소 및 속성 이름 사전에 대한 키 역할을 한다. 데이터 파트에서는 데이터 값이 경로와 데이터 유형에 따라 유형이 같고 시맨틱상 관련된 컨테이너로 그룹화된다. 그런 다음 각각의 컨테이너는 이 컨테이너의 데이터 유형에 이상적인 전문 압축 프로그램을 사용하여 따로 압축된다. 이 그룹화 조작을 통해 반복을 현지화하므로 압축비가 향상된다.

최신 버전의 XMill 소스 배포에서는 gzip, bzip2 및 PPM의 세 가지 대체 백엔드 범용 압축 프로그램 중 하나로 압축된 형식의 중간 2진 데이터가 전달될 수 있다. 그림 4는 XML 구문 분석기, 구조 및 데이터 컨테이너, 하나 이상의 압축 스킴, 압축된 XML 파일(압축된 구조와 압축된 데이터가 있음)을 포함한 XMill 압축 프로그램의 일반적인 아키텍처 개요를 나타낸 것이다.


그림 4. XMill 압축 프로그램의 일반적인 아키텍처
XMill 압축 프로그램의 일반적인 아키텍처를 보여주는 다이어그램

그림 5는 XML 파일을 구조 및 데이터 컨테이너로 분할하는 예를 보여준다. 요소 및 속성 테이블은 XML 문서의 구조 컨테이너를 저장한다. 각 고유 경로의 값(요소 또는 속성)은 별도의 테이블(컨테이너)에 저장된다. 따라서 각 컨테이너의 값은 같은 유형이 되어 더욱 효율적으로 압축될 수 있다. 이런 예로는 별개의 요소(customers, customers/customer, customers/customer/firstName, customers/customer/lastName, customers/customer/invoice, customers/customer/invoice/items, customers/customer/invoice/items/item) 및 속성(customers/customer/@id, customers/customer/invoice/@total) 테이블이 포함된다.


그림 5. XML 파일을 구조 및 데이터 컨테이너로 분할하는 예
XML 파일을 구조 및 데이터 컨테이너로 분할하는 예를 보여주는 다이어그램

그림 6은 XMill 압축 프로그램의 명령행 옵션을 나타낸 것이다.


그림 6. XMill 압축 프로그램의 명령행 옵션
XMill 압축 프로그램의 명령행 옵션 화면 캡처

그림 7은 XMill 압축 프로그램을 사용하여 XML 문서(tpc.xml, 크기는 282KB)를 압축한 효과를 보여주는 것으로, 출력된 압축 파일(tpc.xmi, 크기는 41KB) 크기가 원본 XML 파일 크기의 15%에 해당하는 것을 알 수 있다.


그림 7. XMill 압축 프로그램을 사용하여 XML 파일을 압축한 결과물
XMill 압축 프로그램을 사용하여 XML 파일을 압축한 결과물의 화면 캡처

XMLPPM은 MHM이라는 멀티플렉싱된 계층 구조 PPM 모델을 사용하는 스트리밍 XML 압축 프로그램이다. XMLPPM은 부분 일치 압축 스킴(PPM)에 의해 일반적인 용도로 예측한 결과에 따라 조정된 것으로 간주된다. XMLPPM에서는, 우선 SAX 구문 분석기를 사용하여 XML 파일을 구문 분석하여 SAX 이벤트 스트림을 생성한다. 각각의 이벤트는 ESAX(인코드된 SAX)라는 바이트코드 표시를 사용하여 인코드된다. ESAX 바이트코드는 구문 구조(요소, 문자, 속성 및 기타 기호)를 바탕으로 여러 가지 멀티플렉싱된 PPM 모델 중 하나를 사용하여 인코드된다. XMLPPM 압축 프로그램의 변형으로서 SCMPPM 압축 프로그램이 제안되었다. SCMPPM은 구조 컨텍스트 모델링(SCM)이라는 기술을 PPM 압축 스킴과 결합한 것이다. SCMPPM은 별도의 모델을 사용하여 각 요소 기호 아래에서 텍스트 컨텐츠를 압축하므로 XMLPPM보다 더 큰 PPM 모델 세트를 사용한다.

XMill과 XMLPPM의 압축비 및 압축/압축 풀기 시간은 백엔드 범용 압축 프로그램(gzip, bzip2 또는 PPM)에 매우 종속적이며 관련이 깊다. 따라서 이들도 범용 백엔드 압축 프로그램과 같은 절충 사항이 있다.

스키마에 종속적인 압축 스킴

이 클래스의 압축 프로그램에서는 인코딩 및 디코딩 프로세스 중에 XML 문서 스키마 정보의 가용성이 필수적이다. 예를 들어, XAUST XML 압축 프로그램은 DTC에 있는 각 요소에 대해 하나씩, DTD의 스키마 정보를 결정적 유한 오토마톤(DFA) 세트로 변환한다. 그런 다음, 각각의 전환은 요소별로 레이블이 지정되고 전환과 연관된 조치는 그 전환에 레이블을 지정하는 요소에 대한 DFA의 시뮬레이터에 대한 호출이다. XAUST는 동일 요소에 대한 모든 데이터를 단일 컨테이너로 그룹화하고, 산술 4차 압축 프로그램에 대해 단일 모델을 사용하여 이 컨테이너를 점진적으로 압축한다. XAUST는 DTD 스키마 정보를 사용하여 문서의 구조를 추적하고 예상되는 기호를 정확히 예측할 수 있다. 예상되는 기호가 고유한 경우에는 디코더가 DTD에서 같은 모델을 생성하고 따라서 고유의 예상 기호를 생성할 수 있으므로 기호를 인코드할 필요가 전혀 없다.

RNGzip XML 도구는 주어진 Relax NG 스키마를 준수하는 XML 문서를 압축한다. RNGzip에서는 송신자와 수신자가 정확히 같은 스키마에 대해 미리 합의해야 한다. 이런 점에서, 스키마는 암호화 및 복호화를 위한 공유 키와 같다. RNGzip에서는 Relax NG 스키마 유효성 검증기를 사용하여 지정된 스키마에서 결정적 트리 오토마톤을 빌드한다. 그런 다음, XML 문서가 지정되면 오토마톤에서 XML을 허용하는지 확인한다. 이 오토마톤이 주어지면, 수신자가 아주 약간의 정보를 전송하여 전체 XML 문서를 다시 생성할 수 있다. 오토마톤에 선택 지점이 있는 경우 RNGzip은 선택된 전환만 전송하고, 텍스트 전환이 있는 경우에는 일치하는 텍스트가 전송된다.

이론적으로, 스키마에 종속적인 압축 프로그램은 스키마에 독립적인 압축 프로그램보다 압축비가 약간 더 높을 수 있다. 그러나 XML 문서의 스키마 정보를 항상 사용할 수 있는 것은 아니며 그에 따라 반구조적 데이터를 표시할 수 있는 XML의 유연성이 지닌 이점을 잃게 되므로 이런 압축 프로그램을 선호하지 않거나 흔히 사용하지는 않는다. 이 유형의 압축 프로그램은 미리 정의된 스키마로 XML 문서를 압축하는 데 사용될 때만 효과적일 수 있다.


쿼리 가능한 XML 압축 프로그램

쿼리 가능한 XML 압축 프로그램의 주요 목적은 전체 문서의 압축을 풀지 않고 압축된 형식에 대해 쿼리를 직접 평가할 수 있도록 하는 것이다. 이 그룹의 압축비는 보통 아카이브 XML 압축 프로그램의 압축비보다 낮다. 이런 유형의 압축 프로그램은 모바일 디바이스 및 GPS 시스템과 같이 자원이 한정된 컴퓨팅 디바이스에 호스트되어 있는 수많은 애플리케이션에 매우 중요하다. 이 섹션에서는 다음과 같이 이 그룹의 두 가지 주 클래스의 대표적 압축 프로그램에 대해 설명한다.

  • 준동형 압축 프로그램
  • 비 준동형 압축 프로그램

준동형 쿼리 가능 XML 압축 프로그램

이 클래스의 압축 프로그램은 압축된 형식으로 XML 문서의 원래 구조를 유지하므로, 원본 형식과 같은 방식으로 액세스 및 구문 분석할 수 있다. XGrind는 압축된 XML 문서의 압축을 완전히 풀 필요 없이 쿼리를 지원하는 최초의 XML 인식 압축 스킴이다. XGrind는 구조에서 데이터를 분리하지 않는다. 그래서 XML 문서의 원래 구조가 유지된다.

XGrind 압축 형식의 준동 특성 덕분에 XGrind에서 다음과 같이 다양하고 흥미로운 기능을 사용할 수 있다.

  • 압축된 XML 문서는 태그와 해당 인코딩으로 대체된 요소/속성 값을 가진 원본 XML 문서로 볼 수 있다. 그러므로 XGrind를 확장된 SAX 구문 분석기로 간주할 수 있다.
  • XML 인덱싱 기술은 일반 XML 문서에서 빌드할 수 있는 것과 유사한 방법으로 압축된 문서에서 빌드할 수 있다. XGrind에서는 요소 및 속성 이름이 사진 기반 인코딩 스킴을 사용하여 인코드되고 문자 데이터는 반 적응형 호프만 압축 코딩을 사용하여 압축된다. XGrind의 쿼리 프로세서는 압축된 값에 대한 정확한 일치 및 접두부 일치 쿼리와 압축이 풀린 값에 대한 부분 일치 및 범위 쿼리만 처리할 수 있다. 그러나 XGrind에서는 압축된 도메인에서의 비 동등 선택과 같은 여러 가지 조작을 지원하지 않는다. 따라서 XGrind는 결합, 집계, 중첩된 쿼리 또는 생성 조작을 수행할 수 없다.

XPress는 특성의 조합을 사용하여 XML 데이터를 효율적으로 압축하고 검색하는 또 다른 준동형 쿼리 가능 XML 압축 프로그램이다. XML 문서의 레이블과 경로를 인코드하기 위해, XPress는 서로 다른 간격으로 역 산술 인코딩 방법을 사용한다. 간격 사이에 제약 관계를 사용하여 압축된 XML 데이터에 대해 경로 표현식이 평가된다. XPress의 압축 스킴은 입력 파일의 임시 스캔을 사용하여 통계 정보를 수집하는 반 적응형 스킴이고, 데이터에 대한 인코딩 규칙은 데이터의 위치에 상관없다. 또한, 이 스킴에서는 자동 유추 유형 정보를 바탕으로 데이터 값에 알맞은 인코더를 사용한다.

비 준동형 쿼리 가능 XML 압축 프로그램

이 클래스의 압축 프로그램은 XML 문서의 인코딩 프로세스 중에 데이터 파트에서 구조 파트를 분리한다. 따라서 준동형 클래스와는 달리, 압축된 형식의 구조는 원본 XML 문서의 구조와 다르고 압축 풀기 프로세스 중 다른 방식으로 구문 분석되어야 한다. 하지만, 더 높은 압축비를 달성할 수 있다. 예를 들어, XSeq는 문법 기반 쿼리 가능 XML 압축 스킴으로서, 유명한 문법 기반 텍스트 문자열 압축 알고리즘인 Sequitur를 적절히 조정한 것으로 간주된다.

XSeq에서는 입력 XML 파일의 토큰이 컨테이너 세트로 분리되고 그 각각은 Sequitur를 사용하여 압축된다. Sequitur 압축 알고리즘은 주어진 문자열 입력에 대해 컨텍스트가 없는 문법을 형성하는 선형 시간 온라인 알고리즘이다. XSeq는 정의된 컨텍스트가 없는 문법을 사용하여 부적절한 압축 데이터의 순차적 스캔을 피하고 주어진 쿼리에 의해 일치되는 데이터 값만 처리한다. 그 밖에도, XSeq는 컨텍스트가 없는 문법을 통해 전체 또는 부분적으로 압축을 풀지 않고 압축된 파일에 대해 직접 쿼리를 처리할 수 있다. 다른 컨테이너에 저장된 데이터 값을 연결하고 쿼리 평가 시간을 단축하기 위해, XSeq는 압축된 파일 내에 저장되고 메모리에 로드된 후 규칙 컨텐츠를 처리하는 인덱스 세트를 사용한다. 예를 들어, XSeq는 압축을 풀지 않고 컨테이너에 있는 각각의 데이터 값을 빠르게 찾을 수 있지만 헤더 인덱스에는 파일에 있는 각 컨테이너의 입구에 대한 포인터 목록이 있는 구조적 인덱스를 사용한다.

TREECHOP XML 압축 프로그램은 XML 문서의 SAX 기반 구문 분석을 수행하여 압축 프로세스를 시작하고 구문 분석된 토큰은 첫 번째 레벨의 깊이에 있는 압축 스트림에 작성되는 또 다른 쿼리 가능 XML 압축 프로그램이다. 각 노드에 대한 코드 워드에는 상위의 코드 워드가 접두부로 표시되고, XML 문서 트리에 있는 두 개의 노드가 같은 경로를 가진 경우 같은 코드 워드를 공유한다. 각각의 CDATA 섹션, 주석, 처리 명령어 및 리프가 아닌 노드에 2진 코드 워드가 지정된다. 이 코드 워드는 트리 노드의 경로를 바탕으로 고유하게 지정된다. 트리 노드 인코딩이 첫 번째 레벨의 깊이에서 압축 스트림에 작성되기 때문에, 압축 풀기 프로그램이 적응형 인코딩 정보를 점진적으로 사용하여 원본 XML 문서를 다시 생성할 수 있다. TREECHOP에서는 압축 스트림을 통해 단일 스캔을 사용하여 정확한 일치 및 범위 쿼리를 수행할 수 있다.

XQuec 시스템에서는 XML 문서 내부의 분리 구조 및 컨텐츠를 바탕으로 압축된 XML 문서에 대해 단편화 및 스토리지 모델을 사용한다. 그 밖에도, XQuec 시스템은 같은 그룹에 속한 컨테이너가 쿼리 조건부에도 함께 나타나도록 컨테이너를 그룹화하는 방법의 올바른 선택에 의존한다. 압축된 도메인 내에서 조건부의 평가를 수행하기 위해, 이 시스템에서는 조건부에서 관련된 컨테이너가 같은 그룹에 속하고 압축된 도메인에서 그 조건부를 지원하는 알고리즘으로 압축되도록 한다. 조건부에 대한 정보는 사용 가능한 쿼리 워크로드를 사용하여 유추된다. XQueC에서는 쿼리 워크로드 정보를 이용해 소스 모델에 따라 컨테이너를 세트로 파티션하고 가장 적합한 압축 알고리즘을 각 세트에 적절히 지정한다. XQueC는 XML 쿼리를 평가하기 위한 대수도 고안했다. 일반 연산자와 압축 인식 연산자를 자유롭게 혼합할 수 있는 비용 기반 최적화 프로그램에서 이 대수를 이용한다.


결론

개요를 설명하는 본 기사에서는 최첨단 XML 압축 기술에 대해 살펴보았다. 이 도메인에서 XMill에 의한 첫 번째 구현에서 XML 압축 메커니즘의 주요 혁신 기술이 제시되었다. 여기서는 데이터 파트에서 XML 문서의 구조 파트를 분리한 다음 따로 압축할 수 있는 같은 유형의 컨테이너로 관련 데이터 항목을 그룹화하는 개념을 도입했다. 중복 데이터를 더 쉽게 발견할 수 있기 때문에, 이런 분리를 통해 범용 압축 프로그램 또는 기타 압축 메커니즘으로 유형이 같은 이런 컨테이너를 압축하는 추가 단계를 개선할 수 있다.

나머지 XML 압축 프로그램은 대부분 이 아이디어를 다른 식으로 시뮬레이션했다. 압축 시간 및 압축 풀기 시간 메트릭은 여러 가지 XML 압축 기술을 구분하는 데 결정적인 역할을 한다. 원칙적으로, XML 문서의 스키마 정보를 항상 사용할 수 있는 것은 아니며 필요한 형식(DTD, XML 스키마, RElaxNG)으로 되어 있는 것도 아니기 때문에 실제로는 스키마에 종속적인 XML 압축 프로그램을 선호하지 않거나 흔히 사용하지는 않는다. 쿼리 가능 XML 압축 프로그램은 수많은 애플리케이션에 매우 중요하지만, 문법 기반 XML 압축 기술과 쿼리 가능 XML 압축 프로그램에 대한 확실한 구현은 공개적으로 제공되지 않는다. 이 두 가지 영역은 추가적인 연구와 개발을 위한 다양하고 흥미로운 접근 수단을 제공한다.


참고자료

교육

  • XML 1.0 Specification, W3C: XML 기능에 대한 구체적인 세부사항은 이 홈 페이지를 방문하면 확인할 수 있다.

  • The XML FAQ(편집자, Peter Flynn): XML 정보를 확인할 수 있는 또 다른 훌륭한 소스인 이 웹 사이트에서 XML에 대한 다양한 공통적 질문에 대한 해답을 찾을 수 있다.

  • XML DOM 튜토리얼(W3schools.com): XML 문서에 액세스하고 조작하는 표준적인 방법을 탐색해보자. 이 튜토리얼을 통해 브라우저에 어떤 XML 기반 인터페이스를 사용할 수 있는지, 어떤 브라우저에서 이런 인터페이스를 지원하는지 확인할 수 있다.

  • Understanding DOM(Nicholas Chase, developerWorks, 2007년 3월): 이 튜토리얼에서는 DOM 문서의 구조에 대해 학습할 수 있다.

  • XML and data compression: Optimize your XML information with data compression : 데이터 압축의 이론 및 실제 사용 시의 세부사항을 모두 소개하는 developerWorks 정보 웹 사이트이다.

  • Data compression using adaptive coding and partial string matching[John G. Cleary 및 Ian H. Witte, IEEE Trans. Commun. OM-32(4), 1984년]: 부분 문자열 일치가 어떻게 고차 Markov 모델과 이런 모델을 빠르게 형성할 필요성 간의 충돌을 해결하는지 알아보자.

  • Merging prediction by partial matching with structural contexts model. Proceedings of the Data Compression Conference[Joaquin Adiego, Pablo de la Fuente 및 Gonzalo Navarro(DCC), 미국 워싱턴 DC, 2004년]: 압축된 구조적 문서의 텍스트 구조를 고찰하고 기본적인 SCM 기술의 압축비를 개선할 방안을 알아보자.

  • Compressing XML documents using recursive finite state automata[Hariharan Subramanian 및 Priti Shankar, 제10차 국제 CIAA(Conference on Implementation and Application of Automata) 회보, Sophia Antipolis, 프랑스, 2005년]: DTC 스펙에서 XML 문서용 압축 프로그램을 자동으로 생성하는 방법에 대해 살펴보자.

  • XGRIND: A query-friendly XML compressor, in: [Pankaj M. Tolani 및 Jayant R. Haritsa, 제18차 국제 ICDE(International Conference on Data Engineering) 회보, 미국 워싱턴 DC, 2002년]: 표준 XML 기술의 재사용 및 쿼리를 지원하는 압축 도구에 대해 자세히 알아보자.

  • TREECHOP: A tree-based query-able compressor for XML, Technical report(Gregory Leighton, Tomasz Muldner 및 James Diamond, Jodrey School of Computer Science, Acadia University, 2005년): 전체 압축 풀기를 하지 않고 압축된 XML 데이터의 쿼리를 지원하는 무손실 XML 압축에 대해 알아보자.

  • Supporting efficient query processing on compressed XML files[Yongjing Lin, Youtao Zhang, Quanzhong Li 및 Jun Yang, ACM SAC(Symposium on Applied Computing) 회보, 미국 뉴욕, 2005년]: Sequitur 압축 알고리즘을 바탕으로 하는 XML 압축 스킴에 대해 읽어보자.

  • XPRESS: A queriable compression for XML data(Jun-Ki Min, Myung-Jae Park 및 Chin-Wan Chung, ACM SIGMOD 국제 데이터 관리 컨퍼런스 회보, 미국 캘리포니아, 2003년): 역 산술 인코딩을 기반으로 압축된 XML 데이터에 대한 쿼리의 직접적이고 효율적인 평가를 지원하는 XML 압축 프로그램을 확인해보자.

  • Compression and explanation using hierarchical grammars[Craig G. Nevill-Manning 및 Ian H. Witten, Computer Journal 40(2), 1997년]: 불연속적 기호의 시퀀스에서 계층 구조와 SEQUITUR에서 데이터 압축을 위해 그 정보를 사용하는 방법에 대해 알아보자.

  • XQueC: Pushing queries to compressed XML data[Andrei Arion, Angela Bonifati, Gianni Costa, Sandra D'Aguanno, Ioana Manolescu 및 Andrea Pugliese, 제29차 국제 VLDB(Very Large Data Bases) 컨퍼런스 회보, 독일 베를린, 2003년]: XML 데이터를 압축하고 이를 압축된 양식에서 최대한 많이 쿼리하는 XQueC 시스템에 대해 자세히 알아보자.

  • XML compression techniques: A survey and comparison[Sherif Sakr, JCSS(Journal of Computer System Science) 75(5), 2009년]: XML 압축 방법에 대한 조사 결과를 자세히 읽어보자.

  • XML 입문 XML을 배우는 데 필요한 참고자료를 얻자.

  • XML: DTD, 스키마 및 XSLT를 포함한 XML 분야의 스킬을 발전시키는 데 필요한 참고자료를 찾을 수 있다. XML 기술 자료에서 다양한 기술 관련 기사와 팁, 튜토리얼, 표준 및 IBM Redbook을 볼 수 있다.

  • IBM XML 인증: XML 및 관련 기술에 대한 IBM 인증 개발자가 되는 방법을 찾아볼 수 있다.

  • developerWorks 기술 행사 및 웹 캐스트: 이러한 세션에 참가하여 최신 기술에 대한 정보를 얻을 수 있다.

  • Twitter의 developerWorks 페이지: 오늘 가입하여 developerWorks 트윗을 팔로우하자.

  • developerWorks podcasts: 소프트웨어 개발자의 흥미로운 인터뷰와 토론을 확인할 수 있다.

  • developerWorks on-demand demos: 입문자를 위한 제품 설치 및 설정 과정에서 숙련된 개발자를 위한 고급 기능의 활용에 이르기까지 다양한 데모를 제공한다.

제품 및 기술

토론

  • XML 영역 토론 포럼: 여러 XML 관련 토론에 참여해 볼 수 있다.

  • developerWorks 커뮤니티: 개발자가 운영하고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.

필자소개

Sherif Sakr 박사는 오스트레일리아 시드니의 NICTA(National ICT Australia)에서 소프트웨어 시스템 그룹의 연구원이다. 그는 뉴사일스웨일즈대학교(UNSW, University of New South Wales)의 컴퓨터 과학 및 공학부(CSE, School of Computer Science and Engineering) 전임강사도 맡고 있다. 그는 2007년에 독일 콘스탄츠대학교(Konstanz University)에서 컴퓨터 과학 박사 학위를 받았고, 2000년과 2003년에 이집트 카이로대학교(Cairo University)의 컴퓨터정보학부 정보시스템학과에서 각각 컴퓨터 과학 학사 및 석사 학위를 받았다. 2011년, Sakr 박사는 미국 워싱턴주 레드먼드 소재 Microsoft Research의 XCG(eXtreme Computing Group)에서 객원연구원으로 초빙되었다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=XML, 오픈 소스
ArticleID=764335
ArticleTitle=최첨단 XML 압축 기술 조사
publish-date=10112011

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.