💡 핵심 인사이트
컬럼 기반 저장소는 데이터를 디스크에 저장할 때, 한 행(Row)씩 저장하지 않고 같은 속성(Column)끼리 모아서 연속적으로 저장하는 방식입니다.
대량의 데이터를 집계하고 통계를 내는 데이터 웨어하우스(OLAP) 환경에서 압도적인 검색 속도와 뛰어난 데이터 압축률을 자랑합니다.
Ⅰ. 로우(Row) 스토어와의 구조적 차이
전통적인 RDBMS(Oracle, MySQL 등)는 데이터를 삽입(INSERT)할 때 행(Row) 단위로 디스크 블록에 기록합니다.
[ 데이터 테이블 ]
ID | 이름 | 나이 | 부서
---|------|------|-----
1 | 킴 | 30 | 영업
2 | 리 | 25 | 개발
3 | 박 | 35 | 영업
[ 로우 스토어(Row Store) 디스크 저장 형태 ]
블록 1: [ 1, 킴, 30, 영업 ] [ 2, 리, 25, 개발 ]
블록 2: [ 3, 박, 35, 영업 ] ...
➔ 한 사람의 모든 정보가 모여 있음.
[ 컬럼 스토어(Column Store) 디스크 저장 형태 ]
블록 1(ID) : [ 1, 2, 3 ]
블록 2(이름) : [ 킴, 리, 박 ]
블록 3(나이) : [ 30, 25, 35 ]
블록 4(부서) : [ 영업, 개발, 영업 ]
➔ 같은 컬럼(속성) 데이터끼리 모여 있음.
Ⅱ. 컬럼 스토어의 핵심 장점 (왜 분석에 강한가?)
데이터 웨어하우스(DW)나 빅데이터 환경에서는 "영업부서 직원의 평균 나이는?" 같은 통계 질의(Query)가 주를 이룹니다.
1. 극단적인 디스크 I/O 감소 (필요한 열만 읽기)
위의 통계 질의를 실행할 때, 로우 스토어는 디스크 블록 전체를 메모리로 퍼올려야 합니다(필요 없는 '이름' 데이터까지 다 읽어야 함).
반면 컬럼 스토어는 디스크에서 오직 블록 3(나이)과 블록 4(부서)만 정확히 타겟팅하여 읽어 들입니다. 읽어야 할 데이터의 양이 1/10~1/100 수준으로 급감하므로 속도가 혁신적으로 빨라집니다.
2. 압도적인 데이터 압축률
비슷한 데이터가 연속해서 저장되므로 압축 효율이 엄청납니다.
예를 들어 성별 컬럼 블록에는 [남, 남, 여, 여, 남, 여...]만 들어있습니다. 이를 RLE(Run-Length Encoding)이나 딕셔너리 압축을 사용하면 용량을 원본의 10% 수준으로 줄일 수 있습니다. 용량이 줄면 메모리에 더 많은 데이터를 올려놓고 분석할 수 있습니다.
Ⅲ. 컬럼 스토어의 단점과 활용처
단점: 트랜잭션(OLTP) 처리의 비효율성
"신입사원 '최, 28세, 기획팀'을 추가하라(INSERT)"라는 명령이 들어오면 치명적인 약점이 드러납니다. 데이터를 쪼개어 각각 다른 블록(ID 블록, 이름 블록, 나이 블록...)을 찾아다니며 하나씩 기록해야 하므로, 빈번한 INSERT, UPDATE, DELETE 환경에서는 성능이 최악입니다.
주로 사용되는 솔루션
대규모 집계와 읽기(Read) 작업이 99%를 차지하는 분석 시스템에 쓰입니다.
- 클라우드 데이터 웨어하우스: Amazon Redshift, Google BigQuery, Snowflake
- 빅데이터 생태계의 파일 포맷: Apache Parquet, Apache ORC
- 인-메모리 DB: SAP HANA
📢 섹션 요약 비유: 로우 스토어가 도서관에서 책을 **"분야 상관없이 입고된 순서대로 꽂아두는 방식"**이라면(책 한 권 찾기는 편함), 컬럼 스토어는 **"소설책은 소설책 코너에, 역사책은 역사책 코너에 몰아서 꽂아두는 방식"**입니다. "도서관에 역사책이 몇 권이나 있지?"를 셀 때 압도적으로 유리합니다.