행 기반 DB vs 열 기반 DB
데이터를 물리적으로 행 단위로 저장하는지, 열 단위로 저장하는지에 따라 나뉘는 데이터베이스 저장 방식입니다.
행 기반 데이터베이스 (Row-oriented)
같은 행에 속한 컬럼 값들을 디스크에 연속으로 저장합니다. PostgreSQL, MySQL 등 일반적인 RDB가 대표적이며, 행 단위 읽기·쓰기(INSERT, UPDATE)에 최적화돼 있어 트랜잭션 처리(OLTP)에 적합합니다.
[Atom, 2024-01-23] [Prin, 2024-02-01] [Gosmdochee, 2024-02-03]
열 기반 데이터베이스 (Column-oriented)
같은 컬럼에 속한 값들을 디스크에 연속으로 저장합니다. BigQuery, Redshift, Snowflake가 대표적이며, 데이터 분석(OLAP)에 주로 사용됩니다.
[Atom, Prin, Gosmdochee] [2024-01-23, 2024-02-01, 2024-02-03]
- 조회 시 필요한 컬럼만 로드하면 되므로 디스크 I/O를 줄일 수 있습니다.
- 같은 종류의 데이터가 연속적으로 저장되어 압축 효율이 높습니다.
- 반대로 행 전체를 다뤄야 하는 INSERT/UPDATE는 여러 컬럼 파일에 흩어 써야 해서 비효율적입니다.
사용 예
| 구분 | 저장 단위 | 최적화 대상 | 대표 제품 |
|---|---|---|---|
| 행 기반 | 행 | 트랜잭션 처리(OLTP) | MySQL, PostgreSQL |
| 열 기반 | 열 | 대용량 집계·분석(OLAP) | BigQuery, Redshift, Snowflake |
주의사항
열 기반 데이터베이스는 NoSQL의 Column Family DB(Cassandra 등)와는 다른 개념입니다. Column Family DB는 로우 키 기반으로 컬럼을 그룹화해 저장하는 비관계형 데이터 모델이고, 여기서 다루는 열 기반 데이터베이스는 관계형/비정형 데이터를 물리적으로 컬럼 단위로 저장하는 스토리지 엔진 방식입니다.
핵심 정리
행 기반은 행 단위 CRUD가 잦은 서비스성 트랜잭션 처리에, 열 기반은 특정 컬럼만 읽어 대량 데이터를 집계·분석하는 워크로드에 적합합니다.