최근에 면접을 하면서 한번도 생각해보지 못한 질문을 받았다. 오늘은 그 질문에 대해서 다루어 볼 예정이다.
목차
- DataBase에서 파일을 어떻게 저장할까?
- Row Oriented DB란?
- Column Oriented DB란?
DataBase에서 파일을 어떻게 저장할까?
단 한번도 생각해보지 못한 내용이다.
이제부터 한번 알아보자.
Row Oriented DB란?
Row Oriented DB는 말 그대로 "행 기반 데이터 베이스"를 말한다.
데이터베이스에 저장되는 데이터를 행 기반으로 저장을 한다.
다음 그림을 보자.

위 그림은 다음과 같이 구성되어 있다.
- row를 기준으로 해당 row에 대한 column 값들이 나란히 저장된다.
- 각 column은 설정한 스키마에 따라 저장된다.
데이터베이스는 위와같이 표와 같은 방식으로 저장이 되어있지 않다.
데이터베이스는 다음 그림과 같이 row별로 저장을 한다.


조금 더 이해하기 쉽도록 구체적인 테이블을 보자!

위와 같이 데이터가 저장되어 있으면 실제 파일에는 다음과 같이 저장된다.

Row Oriented DB 장단점
장점으로는 어떤 것이 있을까?
- 어떠한 row를 추가 및 삭제할 때 아주 간편하다.
- 위의 데이터에서 연속하여 이어붙이면 그만이다.
- 위의 데이터에서 해당 row만큼의 데이터만 삭제해주면 그만이다.
- 행 단위로 데이터를 조회할 때 빠른 성능을 보장한다.
단점으로는 어떤 것이 있을까?
- 특정 필드 데이터 집합을 조회할 때 성능이 좋지 못하다.
Column Oriented DB란?
Column Oriented DB는 말 그대로 "열 기반 데이터 베이스"를 말한다.
다음 그림을 보자.

위의 "Row Oriented DB"와는 다르게 데이터 별로 저장을 하는 것을 볼 수 있다.
Column Oriented DB 장단점
장점으로는 다음과 같다.
- 특정 데이터 집합을 얻을 때 성능이 좋다.
- 특정 데이터를 조회할 때 추가적인 메모리의 할당없이 작업을 수행할 수 있다.
단점으로는 다음과 같다.
- 데이터 추가 작업을 수행할 때, 각 데이터의 마지막 위치를 확인해야하는 작업이 필요하다.
생태계 살펴보기
Row Oriented DB
Column Oriented DB
- RedShift
- Big-Query
- Snowflake
- Cassandra
- Hbase