더북(TheBook)

BETTER WAY 9 데이터 웨어하우스에는 역정규화를 사용하자

개발자에게 정규화된 데이터베이스의 중요성은 아무리 강조해도 지나치지 않는다. 일반적으로 정규화된 테이블은 비정규화된 테이블에 비해 컬럼의 개수가 적고 저장 공간도 많이 차지하지 않는다. 데이터가 여러 테이블에 분산되어 테이블이 버퍼에 들어갈 만큼 작으므로 대개 성능은 좋아진다. 또 데이터가 단일 공간에 있으므로 갱신과 삽입도 빠르게 수행된다. 중복된 데이터가 없으니 GROUP BY 절이나 DISTINCT 쿼리 사용이 줄어든다.

하지만 이것은 논쟁 거리가 될 수 있다. 일반적으로 애플리케이션은 쓰기 작업이 많아서 읽기보다는 쓰기에 부하가 더 걸리기 때문이다. 그럼에도 데이터 웨어하우스 시스템은 이런 예에 포함되지 않는다. 데이터 로드가 일어나는 동안 쓰기 부하는 없을 것이고, 있다 해도 읽기 부하에 비하면 훨씬 덜하다. 완전하게 정규화된 테이블에서 정규화된 데이터는 테이블 간 조인을 의미한다는 문제가 있다. 조인이 많을수록 옵티마이저가 최적의 실행 계획을 찾기가 어려워 읽기 성능은 떨어질 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.