DB

[DB ]rowstore vs columnstore (row oriented db vs column oriented db)

Ray123 2024. 2. 4. 19:57

다음과 같은 테이블이 있다고 하자.

 

name gender age address
Jho male 27 seoul
Kim male 29 busan
Park female 30 suwon

 

 

이때 rowstore는 다음과 같이 데이터를 행 단위로 저장하는 것을 말한다.

 

Jho male 27 seoul Kim male 29 busan Park female

 

 

insert, update, delete를 수행할 경우 row단위로 묶어서 빠르게 처리를 해줄 수 있어서 효율적이다. 반면 모든 사람의 평균 나이처럼 특정 컬럼에 대한 집계가 필요한 경우는 필요없는 컬럼에 대한 read도 하게 되므로 비효율적이다.

 

즉, rowstore는 OLTP에 좀 더 적합하다.

 

 

 

colomnstore는 다음과 같이 열 단위로 저장하는 것을 말한다.

 

Jho Kim Park male male female 27 29 30 seoul

 

 

특정 컬럼(들)에 대한 집계가 필요할 시 필요한 컬럼들이 담긴 디스크 블록들만 읽을 수 있으므로(즉 disk I/O가 감소) 효율적이다. 또한 각 블록들이 가지고 있는 값들은 같은 타입이기 때문에 큰 압축률을 기대할 수 있다는 장점도 있다. 반면 insert, update, delete 수행시 적절한 위치를 찾기 위해 모든 데이터를 순회하므로 비효율적이다. 예를 들어, insert를 할 경우 새로운 레코드의 각 컬럼 값들이 삽입될 적절한 위치를 찾는 과정이 필요하다.

 

즉, columnstore는 OLAP에 좀 더 적합하다.