Learning
토픽 158 / 201·NewSQL 및 특수 목적 DB

Columnar Storage (컬럼 저장소)

Columnar Storage (컬럼 저장소)

데이터를 행(Row) 단위가 아닌 열(Column) 단위로 연속 저장하는 데이터베이스 저장 방식으로, 분석 쿼리에서 필요한 컬럼만 읽어 I/O를 줄이고 동일 타입 데이터 연속 저장으로 높은 압축률을 달성하며 OLAP 워크로드에 최적화

목적: 분석 쿼리 최적화, I/O 감소, 높은 압축률, 집계 연산 가속, OLAP 성능 향상

특징: 컬럼 단위 저장, 높은 압축률, 벡터화 처리 용이, 선택적 컬럼 읽기, 대용량 스캔 최적화

저장 방식 비교

  • Row Store: 행 단위 연속 저장, OLTP 최적화, INSERT/UPDATE 빠름, 단일 행 조회 효율
  • Column Store: 열 단위 연속 저장, OLAP 최적화, 집계/스캔 빠름, 압축 효율

장점

  • I/O 감소: 필요 컬럼만 읽기(SELECT col1, col2 FROM 100컬럼 테이블 → 2% I/O)
  • 높은 압축률: 동일 타입 연속 저장(10~20배 압축), Run-Length, Dictionary Encoding
  • 벡터화 처리: CPU SIMD 명령어 활용, 배치 처리, 캐시 효율
  • 집계 최적화: SUM, AVG, COUNT 등 컬럼 전체 스캔 빠름

단점

  • 단일 행 조회 비효율(전체 컬럼 분산 저장)
  • INSERT/UPDATE 느림(컬럼별 분산 쓰기)
  • OLTP 부적합

압축 기법

  • Run-Length Encoding: 연속 동일 값 압축, 정렬된 데이터 효과적
  • Dictionary Encoding: 문자열을 정수 매핑, 카디널리티 낮은 컬럼
  • Bit-Packing: 작은 정수 비트 단위 압축
  • Delta Encoding: 연속 값 차이만 저장, 시계열

대표 제품: ClickHouse, Vertica, Amazon Redshift, Google BigQuery, Apache Parquet(파일 포맷)

적용사례: 데이터 웨어하우스, OLAP 분석, 대시보드, Ad-hoc 쿼리, 로그 분석

기술요소: Column Store, 압축(RLE, Dictionary), 벡터화, 파티셔닝, Zone Map

비교: Column Store(OLAP/압축/스캔) vs Row Store(OLTP/단일행/트랜잭션)

연관: OLAP, 데이터 웨어하우스, Parquet, ORC, 벡터화 실행, ClickHouse