더북(TheBook)

8.5 요약

이 장에서는 문서 데이터베이스를 모델링할 때 발생할 수 있는 몇 가지 핵심 문제들을 살펴보며 문서 데이터베이스를 알아봤다.

정규화와 비정규화는 모두 유용한 방법이다. 정규화는 데이터 이상현상을 줄여주고 비정규화는 성능을 향상시킬 수 있게 해준다. 문서 데이터베이스에서 모델링할 때는 비정규화가 많이 쓰인다. 비정규화의 장점 중 하나는 조인의 필요성을 줄이거나 아예 없애버린다는 점이다. 조인은 복잡해질 수 있고 자원을 많이 소모하는 연산 작업이다. 가능하면 조인을 하지 않는 것이 좋지만, 애플리케이션에서 조인을 수행하는 코드를 만들어야 하는 경우도 있을 것이다. 대체로 문서 데이터베이스에서는 조인을 지원하지 않는다.

논리적인 관점에서 모델링을 수행할 때 물리적인 구현도 고려해야 한다. 메모리에 할당된 저장 공간의 크기를 넘는 가변적인 문서들은 디스크 같은 영구 스토리지로 옮겨야 한다. 이로 인한 추가적인 데이터 쓰기 작업 때문에 애플리케이션의 갱신 작업 속도가 느려질 수 있다.

구현과 관련해 또 다른 중요한 주제는 바로 인덱스다. 애플리케이션이 필요한 인덱스가 정확히 몇 개인지 알아내는 것이 중요하다. 모든 인스턴스는 질의 성능을 향상시킬 수 있어야 한다. 질의 성능에 도움이 되는 인덱스가 쓰기 작업 성능에는 현저할 정도로 좋지 않은 영향을 줄 수 있다. 인덱스 덕분에 빠른 질의 응답을 받을 수 있다는 혜택과 느린 삽입 작업과 갱신 작업 때문에 비용이 발생하는 문제 사이에서 균형을 잡아야 한다.

마지막으로 일대일, 다대다, 계층 관계 같은 공통 관계를 모델링할 때는 설계 패턴을 사용하는 것이 좋다. 이런 관계를 모델링할 때 중첩 문서를 사용하는 것이 좋을 때도 있고, 이 외 경우에는 다른 문서 식별자를 참조하는 것이 더 나을 때도 있다.

4부 컬럼 패밀리 데이터베이스에서는 컬럼 데이터베이스를 소개할 것이다. 컬럼 데이터베이스는 NoSQL 데이터베이스의 중요한 유형으로, 특히 수억 개의 로우와 수백만 개의 컬럼으로 이루어진 대용량 데이터 집합을 관리하는 데 적합하다.

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