Skip to main content
QUICK REVIEW

[논문 리뷰] Fast and Simple Compact Hashing via Bucketing

Dominik Köppl, Simon J. Puglisi|arXiv (Cornell University)|2020. 01. 01.
Algorithms and Data Compression인용 수 4
한 줄 요약

이 논문은 별도의 체이닝과 압축 해싱을 결합하여 이격된 데이터를 저장하지 않으면서도 높은 메모리 효율성과 빠른 삽입을 달성하는 컴팩트 해시 테이블을 제안한다. 버킷으로 동적 배열을 사용하고 키와 값을 별도로 저장함으로써 메모리 오버헤드를 줄이며, 현대 아키텍처에서 대규모 서지테일 데이터를 처리할 때 기존의 컴팩트 해시 테이블보다 공간과 삽입 속도에서 뛰어난 성능을 발휘한다.

ABSTRACT

Compact hash tables store a set S of n key-value pairs, where the keys are from the universe U = {0,…,u-1}, and the values are v-bit integers, in close to B(u, n) + nv bits of space, where {b(u, n)} = log₂ binom(u,n) is the information-theoretic lower bound for representing the set of keys in S, and support operations insert, delete and lookup on S. Compact hash tables have received significant attention in recent years, and approaches dating back to Cleary [IEEE T. Comput, 1984], as well as more recent ones have been implemented and used in a number of applications. However, the wins on space usage of these approaches are outweighed by their slowness relative to conventional hash tables. In this paper, we demonstrate that compact hash tables based upon a simple idea of bucketing practically outperform existing compact hash table implementations in terms of memory usage and construction time, and existing fast hash table implementations in terms of memory usage (and sometimes also in terms of construction time). A related notion is that of a compact Hash ID map, which stores a set Ŝ of n keys from U, and implicitly associates each key in Ŝ with a unique value (its ID), chosen by the data structure itself, which is an integer of magnitude O(n), and supports inserts and lookups on Ŝ, while using close to B(u,n) bits. One of our approaches is suitable for use as a compact Hash ID map.

연구 동기 및 목표

  • 기본 해시 테이블이 공간 낭비(오픈 어드레싱) 또는 추가 포인터 사용(별도의 체이닝)으로 인해 메모리 효율성이 떨어지는 문제를 해결하기 위해.
  • 압축 해싱에서 일반적으로 오픈 어드레싱 기반으로 키를 재구성하기 위해 필요로 하는 이격 정보의 필요성을 제거하기 위해.
  • 구축 과정에서 높은 성능을 유지하면서도 메모리 프로파일을 최소화하는 컴팩트 해시 테이블을 설계하기 위해.
  • 최신 캐시 하이어라키에 최적화된 경우 별도의 체이닝이 컴팩트 해싱에서 경쟁 가능한 접근 방식이 될 수 있음을 보여주기 위해.

제안 방법

  • 버킷으로 동적 배열을 사용하고, 키와 값을 별도로 저장하며 크기가 같은 배열을 사용하여 캐시 국소성을 향상시킨다.
  • 키를 몫-나머지 쌍으로 매핑하기 위해 단사 함수를 적용하며, 몫은 해시 테이블에 저장되고 나머지는 키에서 유도된다.
  • 버킷 크기에 임계값 bmax를 설정하여 버킷이 용량에 도달하면 테이블 크기를 두 배로 늘리고 요소들을 재분배한다.
  • 이중 단계 구축: 첫 번째 단계에서는 bmax에 도달할 때까지 요소들을 버킷에 삽입하고, 두 번째 단계에서는 버킷 수가 두 배인 새로운 테이블을 생성하고 요소들을 이관한다.
  • 버킷을 캐시 라인에 정렬하고 키 및 값 배열을 분리하여 검색 시 데이터 국소성을 향상시킨다.
  • SIMD 스타일 비트 조작을 사용하여 압축 표현에서 몫 검색을 가속화하는 비트 병렬 연산을 활용한다.

실험 결과

연구 질문

  • RQ1오픈 어드레싱 기반으로 이격 정보를 저장할 필요가 있는 것처럼, 별도의 체이닝을 사용할 때도 압축 해싱에서 이격된 데이터를 저장하지 않고도 메모리 효율성을 확보할 수 있는가?
  • RQ2기존의 컴팩트 해시 테이블과 비교했을 때, 별도의 체이닝 기반 컴팩트 해시 테이블의 삽입 속도와 메모리 사용량에서의 성능은 어떠한가?
  • RQ3동적 리사이징에서 메모리 오버헤드와 성능 간의 균형을 고려할 때 최적의 버킷 크기 임계값 bmax는 무엇인가?
  • RQ4키와 값을 별도의 배열에 저장하면 컴팩트 해시 테이블에서 캐시 효율성 향상과 검색 시간 단축에 기여하는가?
  • RQ5비트 병렬 기법을 사용할 경우, 해시 테이블의 압축 표현에서 몫 검색 속도를 얼마나 가속화할 수 있는가?

주요 결과

  • 현대 컴퓨터 아키텍처에서 충분히 큰 서지테일 데이터를 저장할 경우, 이전에 알려진 모든 컴팩트 해시 테이블보다 삽입 성능이 빠르거나 공간 사용이 적다.
  • 제안된 방법은 기존의 컴팩트 해시 테이블보다 구축 과정에서 더 낮은 메모리 프로파일을 달성하며, 포인터 및 메타데이터 오버헤드 감소로 인해 특히 유리하다.
  • 별도의 키 및 값 배열 사용은 데이터 국소성을 향상시켜 큰 값과 작은 키에 대해 성능 향상을 이룬다.
  • 이격 정보가 필요 없어지면서 데이터 구조가 단순화되고 복잡성이 감소한다.
  • 리사이징은 전체 버킷을 이관하는 방식으로 점진적으로 수행되어, 기존의 동적 배열에서 3m개 요소를 위한 공간을 사전 확보하는 것과 같은 메모리 피크를 피한다.
  • 요소 수가 충분히 많아 별도의 키 및 값 배열의 오버헤드를 감당할 수 있을 정도일 경우, 이 방법은 대규모 서지테일 데이터를 처리하는 응용 분야에 특히 효과적이다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.