더북(TheBook)

비정규화의 남용은 금물

다른 것과 마찬가지로 비정규화도 남용되기 쉽다. 비정규화를 하는 목표는 함께 자주 사용되는 데이터를 문서 하나에 보관하는 데 있다. 이렇게 하면 문서 데이터베이스는 SSD보다 상대적으로 느린 스토리지에서 데이터를 읽어오는 횟수를 최소화할 수 있다. 동시에 비정규화된 컬렉션에 불필요한 정보가 슬며시 들어가는 것도 원치 않을 것이다(그림 8-5).

▲ 그림 8-5 크기가 큰 문서는 스토리지에서 데이터 블록을 읽을 때 반환되는 문서 수가 더 적다. 이렇게 하면 컬렉션이나 컬렉션 서브세트를 가져오기 위해 읽어야 할 전체 데이터 블록 수가 늘어날 수 있다


“과도한 비정규화란 얼마만큼을 말하는 것일까?”라는 질문에 대답하려면 애플리케이션이 문서 데이터베이스에 질의하는 것을 살펴보아야 한다.

두 가지 유형의 질의가 있다고 하자. 하나는 고객용 송장과 패킹 슬립1을 생성하는 것이고, 나머지 하나는 경영 보고서를 생성하는 것이다. 또한, 전체 질의 중 95%는 송장과 패킹 슬립 카테고리를 조회하는 것이고 나머지 5%는 경영 보고서에 사용된다고 가정해 보자.



1 역주 패킹 슬립(Packing Slip)은 포장된 상품의 내용, 출하지 등을 기재하여 첨부하는 서류를 말한다.

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