데이터 중심 애플리케이션 설계를 읽고 정리한 글입니다.
데이터의 구조와 관계를 정의하는 것을 의미하는데, data model별로 제약이 존재하기 때문에 내가 구축할 애플리케이션에 적합한 모델을 선택하는 것이 중요하다.
그 중에서도 아래 세 가지 모델은 많이 사용되므로 잘 이해해두는 것이 좋겠다.
1970년 Edgar Codd가 제안한 개념으로 데이터는 관계로 구성되고 각 관계는 순서 없는 튜플모음이다. 이를 기반으로 1980년대 중반에 RDBMS가 등장했고 SQL이 개발되었으며 현재까지도 대부분의 웹서비스들이 많이 채택하는 모델이다.
LinkedIn의 profile을 Relational Model로 표현해보자:
2000년대 초반부터 웹애플리케이션이 폭발적으로 증가하면서 다양한 데이터 형식과 대량의 데이터들이 양산되기 시작했는데 Relational Model의 한계를 극복하기 위해 Document Model이 등장하게 되었다.
JSON, BSON, XML 형식의 문서를 사용하여 중첩된 데이터 구조를 자연스럽게 표현할 수 있고, schema-less 구조로 다양한 형식의 데이터를 저장할 수 있다.
LinkedIn의 profile을 Document Model로 표현해보자:
애플리케이션이 one-to-many 관계이거나 레코드 간 관계가 없다면 Document Model이 적합하지만, many-to-many 관계가 일반적이라면 정점과 간선으로 이루어진 그래프로 데이터를 모델링하는 것이 자연스럽다.
Graph Model은 다음과 같은 예시에서 적합하다:
SNS의 Lucy와 Alain이란 사용자를 Graph Model로 표현해보자: