Column-oriented
Data Table을 Column 단위로 쪼개어 저장하는 DB를 의미
Row-oriented는 하나의 Row가 하나의 Disk Block 안에 저장
Column-oriented 방식은 하나의 Column이 하나의 Disk Block 안에 저장
[그림1]에서 Gender가 Male인 사람이 몇명인지 구하는 동작을 DB가 수행할 경우
Row-oriented
4개의 Block을 읽고 안의 Gender값을 알아내어 Sum을 수행
Column-oriented
1개의 Block만 읽고 결과를 구할 수 있기 때문에 빠른 처리가 가능
📌 Data를 분석하는 동작의 경우 Table에서 모든 Column이 필요한 것이 아니라 일부 Column이 필요한 경우가 대부분
Column-oriented DB
📈
OLAP(Online Analytical Processing) 처리에 유리
편리한 Data Compression
📉
하나의 Row를 추가하거나 삭제하는 경우 여러 개의 Block을 이용해야 하기 때문에
OLTP(Online transaction processing) 처리 불리
Colum-Family DB
Column을 나타내는 Column-Key/Data/Timestamp Tuple과 Row를 나타내는 Row-Key에 Mapping하여 Table를 표현하는 DB
RDBMS에서 NULL값도 Disk Block 공간을 차지하지만 Column-Family DB에서는 Row별로 자유로운 Column 추가/삭제가 가능
NULL값을 위한 별도의 Column 불필요