데이터 중심 애플리케이션 설계 Ch 2. 데이터 모델과 질의 언어
작성일: 2021-09-23 23:29
데이터 모델은 소프트웨어가 어떻게 작성됐는지 뿐만 아니라 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 큰 영향을 미치므로 데이터 모델을 선택하는 작업은 상당히 중요하다.
# 관계형 데이터 모델
테이블 간의 관계로 데이터가 구성되고 각 관계는 순서 없는 튜플의 모임으로 이루어진 가장 널리 알려진 전통적인 데이터 모델이다.
- 일반적인 관계형 데이터 모델 방식이 아닌 NoSQL(Not Only SQL) 데이터베이스가 인기를 얻고 있으며 다음과 같은 원동력이 있다.
- 대규모 데이터를 빠르게 처리할 수 있는 뛰어난 확장성 필요
- 무료 오픈소스 소프트웨어의 선호도 확산
- 관계형 모델에서 지원하지 않는 특수 질의 동작 지원
- 관계형 스키마의 제한에 대한 불만과 더욱 동적이고 풍부한 데이터 모델에 대한 바람
# 문서 데이터 모델
관련된 데이터들이 하나의 문서에 표현되어 있는 모델로 많이 사용되는 JSON 모델이 대표적이다.
문서 데이터 모델은 조인에 약하기 때문에 다대다 관계가 필요하지 않는 애플리케이션에서 유용하게 사용할 수 있다.
- 애플리케이션에서 다대다 관계를 사용한다면 각 문서에 저장된 비정규화된 데이터의 일관성을 유지하기 위해 추가적인 작업이 필요해진다.
# 문서 모델에서의 스키마 유연성
- 문서 데이터베이스는 종종 스키마리스로 불리지만 데이터베이스가 이를 강요하지 않을 뿐 암묵적인 스키마는 여전히 존재한다.
- 문서 데이터베이스에 쓰기를 수행할 땐 스키마 제한이 없지만 해당 문서를 읽어올 때 애플리케이션에서 스키마를 맞추기 위한 추가적인 처리가 필요하다.
- 즉, 문서 데이터베이스는 쓰기 스키마(전통적인 RDB 접근 방식으로 명시적으로 모든 데이터가 스키마를 따르고 있음을 보장)가 아닌 읽기 스키마다(암시적으로 데이터를 읽을 때 애플리케이션에서 스키마를 결정).
# 그래프형 데이터 모델
그래프는 정점(vertex)과 간선(edge)으로 이루어진 데이터 모델이다.
- 관계형 데이터 모델은 단순한 다대다 관계를 다룰 수 있지만 데이터 간 연결이 복잡해지면 그래프로 데이터를 모델링하는 것이 좋다.
# 데이터를 위한 질의 언어
SQL같은 선언형 질의 언어에서는 목표를 달성하기 위한 방법이 아니라 결과가 충족해야 하는 조건과 데이터를 어떻게 변환할지를 지정하기만 하면 된다.
선언형 질의 언어는 일반적으로 명령형 API보다 더 간결하다는 장점이 있다. 더 중요한 것은 상세 구현이 숨겨져있어 질의를 변경하지 않고도 시스템의 성능을 향상시킬 수 있다는 점이다.