역인덱스 리스트 재페어 압축

역인덱스 리스트 재페어 압축

초록

본 논문은 역인덱스 리스트의 차이값을 기존의 가변길이 코딩이 아닌 Re‑Pair 압축으로 인코딩하는 방식을 제안한다. Re‑Pair는 사전 구축 단계에서 빈번히 등장하는 심볼 쌍을 새로운 비단말 심볼로 교체해 압축률과 임의 접근성을 동시에 제공한다. 저자들은 기본 Re‑Pair에 리스트 교차 연산에 최적화된 변형을 추가하고, 다양한 교차 알고리즘과 최신 압축 기법들과 비교 실험을 수행하였다. 실험 결과, 제안된 변형은 메모리 사용량과 처리 속도 사이에서 유연한 트레이드오프를 제공하지만, 현재 수준에서는 최첨단 방법을 완전히 앞서는 데는 부족함을 보였다.

상세 분석

이 논문은 정보 검색 시스템에서 핵심적인 역할을 하는 역인덱스 리스트의 압축 방식을 재고한다. 전통적으로는 리스트 내 연속 문서 ID 간 차이를 가변길이 부호화(예: Gamma, Delta, Variable‑Byte)하거나 블록 기반 PForDelta, SIMD‑Accelerated 방식으로 압축한다. 이러한 방법은 작은 차이값에 대해 높은 압축률을 달성하지만, 압축된 스트림을 임의 위치에서 해독하려면 앞부분을 순차적으로 디코딩해야 하는 경우가 많아 교차 연산 시 병목이 된다.

Re‑Pair는 문자열 압축 기법으로, 전체 시퀀스에서 가장 빈번히 등장하는 심볼 쌍을 새로운 비단말 심볼로 교체하는 과정을 반복한다. 이 과정에서 생성된 규칙 집합은 트리 형태의 사전으로 저장되며, 압축된 시퀀스는 규칙 인덱스만으로 표현된다. 중요한 점은 규칙이 계층적으로 정의되므로, 특정 위치에 대한 직접 접근이 가능하다는 것이다. 저자들은 이러한 특성을 역인덱스 리스트의 차이값 시퀀스에 적용한다.

기본 Re‑Pair 적용만으로도 압축률은 기존 가변길이 코딩과 비슷하거나 약간 우수한 편이다. 그러나 교차 연산을 위해서는 두 리스트의 공통 구간을 빠르게 찾는 “스킵” 메커니즘이 필요하다. 이를 위해 저자들은 두 가지 변형을 제안한다. 첫 번째는 각 규칙에 대해 해당 구간의 최소·최대 문서 ID를 메타데이터로 저장해, 규칙 단위로 범위 검사를 수행하도록 한다. 두 번째는 규칙 트리를 평탄화하여 일정 깊이 이하에서는 직접 인코딩된 차이값을, 그 이상에서는 규칙 인덱스만을 사용해 메모리 접근을 최소화한다. 이러한 설계는 리스트 교차 시 불필요한 디코딩을 회피하고, 메모리 캐시 효율을 높인다.

실험에서는 다양한 리스트 길이와 빈도 분포를 가진 실제 웹 컬렉션을 사용해, 기본 Re‑Pair, 변형 Re‑Pair, 그리고 최신 압축 기법(VarByte, PForDelta, SIMD‑BP128 등)을 비교하였다. 결과는 변형 Re‑Pair가 중간 규모 리스트에서는 압축률과 교차 속도 모두에서 경쟁력을 보였으나, 매우 짧은 리스트에서는 오버헤드가 커져 기존 방법에 뒤처진다는 점을 보여준다. 또한, 메인 메모리와 SSD 기반 2차 저장소 모두에서 동일한 트레이드오프가 관찰되었다.

결론적으로, Re‑Pair 기반 압축은 임의 접근성과 압축 효율을 동시에 제공하는 장점이 있으나, 현재 구현에서는 규칙 관리와 메타데이터 비용이 전체 성능을 제한한다. 향후 연구에서는 규칙 선택 전략을 리스트 특성에 맞게 동적으로 조정하거나, 하드웨어 가속을 활용한 규칙 디코딩 파이프라인을 설계함으로써 현 상태의 한계를 극복할 가능성이 있다.