페이지

2011년 11월 9일 수요일

최첨단 XML 압축 기술 조사

요즘 시스템들간의 통신 또는 클라이언트/서버 통신에서 XML 데이터를 많이 사용한다.
XML이 표준기술이라 장점이 많지만, xml tag로 인한 데이터 크기가 커진다는 단점도 많다.
실제로 2010년 차세대 시스템 오픈 후 반년간 500 error 로 고생한적 있다.
그때의 상황을 보면 오류나는 PC에서도 데이터 크기가 큰 이벤트에 대해서만 500 오류가 발생했었다.
여러 대안방법을 시도해 보았었다.
PC의 레지스트리를 조작하여 PC-랜선 간의 패킷 크기도 조정해 보았고,
네트워크 구간의 공유장비를 교체해서 해결한 적도 있다.
또한, 방화벽의 설정을 변경해 오류 확률을 낮춘적도 있었다.
그러나 Application Side 에서의 대안방법을 찾아내지는 못했었다.
오늘도 우연히 서핑하다 Application Side 에서의 대안방법도 있음을 인지하게 되었다.
일찍 알았더라면 6개월간 쫒아다니며 그 고생을 하지는 않았을것을....


자주 사용하는 약어

  • 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 압축 프로그램은 최고의 압축비를 달성하는 것이 주 목적이므로 압축된 형식에 대해 어떤 쿼리도 처리할 수 없다. 이 섹션에서는 다음과 같이 이 그룹의 두 가지 주 클래스의 대표적 압축 프로그램에 대해 설명한다.
  • 스키마에 독립적인 압축 프로그램
  • 스키마에 종속적인 압축 프로그램
이 클래스의 압축 스킴에서는 인코딩 및 디코딩 프로세스에 대한 스키마 정보의 가용성이 필수적이지 않다. 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 압축 프로그램의 압축비보다 낮다. 이런 유형의 압축 프로그램은 모바일 디바이스 및 GPS 시스템과 같이 자원이 한정된 컴퓨팅 디바이스에 호스트되어 있는 수많은 애플리케이션에 매우 중요하다. 이 섹션에서는 다음과 같이 이 그룹의 두 가지 주 클래스의 대표적 압축 프로그램에 대해 설명한다.
  • 준동형 압축 프로그램
  • 비 준동형 압축 프로그램
이 클래스의 압축 프로그램은 압축된 형식으로 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 문서의 구조와 다르고 압축 풀기 프로세스 중 다른 방식으로 구문 분석되어야 한다. 하지만, 더 높은 압축비를 달성할 수 있다. 예를 들어, 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 압축 프로그램에 대한 확실한 구현은 공개적으로 제공되지 않는다. 이 두 가지 영역은 추가적인 연구와 개발을 위한 다양하고 흥미로운 접근 수단을 제공한다.


자료출처 : IBM(원문)

댓글 없음: