OLAP vs OLTP 데이터베이스
데이터베이스는 어떤 기능에 초점을 두느냐에 따라 OLAP, OLTP 데이터베이스로 나뉜다.
좀 거칠게 단순화하면 쓰기 성능은 떨어지더라도 읽기 성능을 극대화 할때는 OLAP (Online Analytic Processing), 읽기 성능이 떨어지더라도 안정적인 트랜잭션을 제공하는데 초점을 둔다면 OLTP (Online Transaction Processing) 데이터베이스로 구분할 수 있다.
사용 케이스에 따라 구분할 수 있는데 은행, 온라인 쇼핑, 항공기 예약처럼 사용자의 쓰기 데이터가 빠르게 처리돼야 하는 경우 OLTP 데이터베이스를 사용하고 데이터 분석 툴처럼 복잡한 쿼리 검색이 빠르게 처리돼야 하는 경우 OLAP 데이터베이스를 사용한다.
MySQL, PostgreSQL, Maria DB 처럼 우리한테 친숙한 데이터베이스들이 대표적인 OLTP 데이터베이스다. OLAP 데이터베이스에는 Clickhouse, Apache Pinot, Apache Druid, Snowflake 같은 것들이 있는데 다소 생소한 데이터베이스들이다. 아마 분석툴을 자체적으로 만드는 서비스가 없기 때문인 걸로 추측된다.
서비스에서는 어느 하나만 고집해서 사용하기보다는 케이스마다 여러가지 데이터베이스를 운영한다. 예를 들어 쇼핑몰을 운영중이라면 사용자 계정, 장바구니 목록 정보는 OLTP 데이터베이스를 사용해서 관리하고 DAU 나 마케팅 데이터 수집용도로 쓰기 위해 복잡한 쿼리를 사용하는 경우엔 OLAP 데이터베이스를 이용해서 관리할 수 있다.
참고한 문헌에선 OLAP 에선 데이터를 큐브 형식으로 저장한다고 하는데 이건 OLAP 데이터베이스마다 차이가 있을 수 있는 부분이라서 한번 확인해볼 필요는 있다. 중요한건 쓰기 성능을 최적화 하는데 초점을 뒀다는 점이다. 클릭하우스의 경우 칼럼형 데이터베이스를 사용해서 쓰기 성능을 극대화한다.