• 이 문서는 Designing Data Intensive Applications 책의 2장을 공부하며 메모한 것입니다.
  • 이 문서는 메모일 뿐이니 자세한 내용은 교재를 참고해야 합니다.

개요

데이터 모델은 소프트웨어 개발에서 제일 중요한 부분일 수 있다.

왜 그런가?

데이터 모델 위에 다시 데이터 모델을 올리는 것을 반복하는 방식으로 대부분의 애플리케이션을 만들기 때문이다.

그래서 아래 레이어의 데이터 모델 표현은, 위에 있는 레이어의 핵심 문제가 된다.

그렇다고 하나의 데이터 모델만 사용할 수도 없다. 데이터 모델에 따라 어떤 작업은 매우 느리고, 어떤 작업은 부자연스럽고, 소프트웨어가 할 수 있는 일이 제한되는 경우도 생길 수 있다.

따라서 적합한 데이터 모델의 선택은 중요하다.

2장에서는 이런 데이터 모델 선택을 위해 몇몇 범용적인 데이터 모델을 살펴보도록 한다.

크게 분류하자면 다음의 세 가지이다.

  • 관계형 모델(relational model)
  • 문서 모델(document model)
  • 그래프 기반 데이터 모델(graph-based data model)

관계형 모델과 문서 모델

관계형 모델의 경쟁자들은 대부분 반짝 나타났다가 사라졌다. 관계형 모델은 거의 30년 이상 우위를 차지해왔고, 대부분의 웹 서비스가 관게형 데이터베이스를 사용하고 있다.

보통 NoSQL을 채택하는 이유는 다음과 같다.

  • RDB보다 확장이 용이하다. 그러면서 write throughput도 괜찮다.
  • RDB에서 지원하지 않는 특수한 쿼리가 가능하다.
  • RDB보다 스키마 제한이 적다.

대규모 데이터셋, 매우 높은 쓰기 처리율(throughput)을 RDB보다 쉽게 달성할 수 있다.

참고문헌

  • 데이터 중심 애플리케이션 설계 / 마틴 클레프만 저/정재부, 김영준, 이도경 역 / 위키북스 / 초판발행 2018년 04월 12일