Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
이 글은 데이터 중심 애플리케이션 설계 서적(마틴 클레프만 저)를 읽고 정리한 내용입니다.
데이터 웨어하우스
대기업에서는 왜 데이터 웨어하우스를 운영할까?
그 질문에 답하기 위해서는 OLTP와 OLAP 데이터 베이스 모델의 설계 차이를 알아야 한다.
기본적으로 commercial transacation 처리에는 RDBS가 적합하다. 클라이언트가 낮은 지연시간으로 빠르고 읽고 쓰기를 가능하게 해야 한다. 이러한 온라인 트랜잭션 처리를 OLTP(Online Transcation Processing)라고 한다.
하지만 최근에 많이 거론되는 데이터 분석에는 OLTP는 적합하지 않다. 데이터 분석은 커머셜 트랜잭션과는 다르게, 수많은 데이터를 읽어 통계를 제공하는 방식이다. 이러한 사용 패턴은 온라인 OLAP(Online Analytic Processing)라고 한다.
OLAP는 OLTP에 비해 수많은 레코드에 대한 집계가 필요하지만, 최신 데이터라기보다는 로그 데이터의 성향을 띤다.
기존의 데이터베이스로도 분석을 할 수 있지만, 개별적인 데이터 베이스에서 분석을 진행하는 회사가 많아지기 시작했다.
이러한 개별 데이터베이스를 데이터 웨어하우스 라고 한다.
OLTP는 비즈니스적으로 굉장히 중요한 트랜잭션 처리를 위해 설계되었기 때문에 높은 가용성에 낮은 지연시간의 처리를 목표로 한다. 이러한 시스템에서의 분석 질의는 굉장히 비용이 비싸고 트랜잭션 처리 성능에 영향을 미칠 수 있다.
반면 데이터 웨어하우스에서는 트랜잭션의 영향 없이 질의가 가능하다.
이 데이터베이스에는 OLTP의 데이터 베이스를 읽기 전용으로 복사해 온 것으로, OLTP에서 주기적으로 필요한 데이터 형식으로 깔끔하게 변환시켜 적재한다.
당연하게도 적은 데이터를 가지는 기업은 기존의 데이터베이스만으로도 충분할 수 있고, 데이터를 따러 받아서 엑셀로도 분석할 수 있다.
칼럼 지향 저장과 로우 지향 저장
그렇다면 왜 분석에 사용되는 데이터베이스 모델이 더 대규모 질의에 빠를까?
이는 칼럼 지향 저장을 하기 때문이다.
RDBS에서는 row의 각 column들을 일렬로 저장시킨다.
만약에 USER 테이블의 모든 age를 불러오고 싶다면, USER 테이블을 모두 불러와 분석해서 age를 추출해내야 한다.
이를 로우 지향 저장 방식이라고 한다.
반면 칼럼 지향 저장소는 같은 칼럼별로 값을 저장시킨다. 따라서 개별적인 칼럼 별로 읽고 분석하여 효율적이다.
물론, RDBS도 칼럼 지향 저장소 배치를 지원하기도 한다.
칼럼 지향 저장은 압축에 특히 좋다.
왜냐하면 칼럼에서 unique한 값을 가는 경우가 row 수에 비해 적기 때문이다.
이런 경우 비트맵 부호화를 통해 압축이 가능하다.
런 랭스 부호화는 수십억 개의 로우를 가진 테이블이라도 수 킬로바이트로 압축해 낼 수 있다.
단, 읽기에서 빠른 질의가 가능한 설계인만큼 쓰기가 어려워진다.
update와 같은 경우는 칼럼 지향 저장의 중간 데이터를 바꾸려면 모든 칼럼 파일을 재작성해야 한다.
따라서 Elastic Search의 경우는, update를 삭제 후 재 삽입의 방식으로 진행한다.
참고 서적
'독서 > 프로그래밍 서적' 카테고리의 다른 글
분산 데이터베이스에서 복제는 어떻게 일어나는가? (0) | 2023.07.22 |
---|---|
데이터베이스에서 저장과 검색의 내부 구조 (0) | 2023.07.15 |
SQL 모델과 NOSQL 모델의 선택 방법 (0) | 2023.07.06 |
[클린 코드] 객체와 자료 구조의 비대칭, 디미터 법칙 (0) | 2021.12.14 |
[클린 코드] 클래스의 단일 책임 원칙 (Single Responsibility Principle) (0) | 2021.12.09 |