일반적인 RDBMS는 row base이다 

create T1 (c1 int, c2 int , c3 int) 로 생성했다면 

데이터 저장은 아래처럼 될거다 (= row 단위로 묶여서 1번 row는 c1 옆에 c2 옆에 c3) 

select * from t1 where c1 = 1 이면 1,10,100 모두 필요한데 

어차피 row 단위로 묶여있으니 한번만 접근하면 row 데이터 다 가져올 수 있다 

파랑이만 가져오면 되서 빠르다

 

OLTP에선 빛을 발하겠지만 

근데 OLAP에서도 저 구조가 좋은 걸까???

 

select sum(c1)  from t1  이라 생각하자

row가 2억건이면 2억건의 row를 다 뒤져야한다 

 

만약 c1 끼리 뭉쳐있다면 어떨끼?

 C1끼리 뭉쳐있으면 2억건의 접근이 없다. 물론 한번의 접근만으로는 가져오기 힘들겠지만.  Rowbase보단 훨씬 빠르다

암튼 Column Base 가 필요한 경우도 있다. 

 

서비스에 맞게 Row Base , Column Base DB를 선택하면 된다 

보통 OLAP용으론 Column Base