포스트

데이터 중심 애플리케이션 설계02


데이터 모델과 질의 언어

데이터 모델은 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 영향을 미친다.

관계형 모델과 문서 모델

  • 관계형 데이터베이스의 근원은 비즈니스 데이터 처리에 있다.
  • 트랜잭션 처리, 일괄 처리가 핵심 사용 사례다.

NoSQL

  • 매우 높은 쓰기 처리량 달성을 관계형 데이터베이스보다 쉽게 하기 위해서
  • 무료 오픈소스 소프트웨어가 필요해서
  • 관계형 모델에서 지원하지 않는 특수 질의를 윟서
  • 동적이고 표현력 풍부한 데이터 모데ㅔㄹ이 필욯서

JSON 표현을 저장하기 위한 문서 모델을 사용하는 경우에, 관계형 DB 의 다중 테이블 스키마보다 나은 지역성을 갖는다.

다대일과 다대다 관계

  • ID 를 사용하는 경우, 의미 있는 정보는 한 곳에만 저장한다.
  • ID 자체ㅔ는 아무런 의미가 없기에 변경할 필요가 없다. 즉, 식별 정보를 변경해도 ID 를 동일하게 유지할 수 있다.
  • 이런 중복을 제거하는 일이 데이터베이스 정규화의 핵심이다.

문서 데이터베이스

네트워크 모델

  • 계층 모델로 구성되어 있다.
  • 네트워크 계층 상, 레코드는 다중 부모를 가진다.

관계형 모델

  • 관계는 단순히 튜플의 컬렉션이 전부다.
  • 관계형 데이터베이스에서 질의 최적화기는 질의의 어느 부분을 어떤 순서로 실행할지를 결정한다.

문서 데이터베이스와의 비교

  • 문서 데이터베이스는 상위 레코드 내에 중첩된 레코드를 저장한다.
  • 문서 참조가 가능하기에, 이로서 다대일, 다대다 관계를 표현한다.

관계형 데이터베이스와 문서 데이터베이스

  • 문서 데이터모델을 선호하는 이유는 스키마 유연성, 지역성에 기인한 나은 성능 때문이다.
  • 관계형 모델은 조인, 다대일, 다대다 관계를 지원함으로써 문서 데이터 모델에 대응한다.

어떤 데이터 모델이 애플리케이션 코드를 간단하게 할까?

  • 데이터가 문서와 비슷한 구조라면 문서 모델을 채택
  • 그러나, 애플리케이션이 다대다 관계를 사용한다면 문서 모델은 매력이 떨어진다.
  • 문서 모델에서 조인은 애플리케이션 코드에서 수행해야 하기 때문에, 제한이 존재한다.

문서 모델에서의 스키마 유연성

  • 암묵적인 스키마는 있지만, 데이터베이스가 이를 강요하지 않는다.
  • 읽기 스키마 접근 방식은 컬렉션 항목이 어떤 이유로 모두 동일한 구조가 아니어도 대응할 수 있다.

질의를 위한 데이터 지역성

  • 애플리케이션이 자주 전체 문서에 접근해야 할 때 저장소 지역성을 활용하면 성능 이점이 있다.
  • 한 번에 해당 문서의 많은 부분을 필요로 하는 경우에만 적용된다.
  • 문서를 아주 작게 유지하면서, 문서의 크기가 증가하는 쓰기를 피하는 것이 권장된다.

데이터를 위한 질의 언어

SQL 같은 선언형 질의 언어에서는 목표를 달성하기 위한 방법이 아니라 알고자 하는 데이터의 페턴, 즉 결과가 충족해야 하는 조건과 데이터를 어떤게 변환할지를 지정하면 된다.

맵리듀스 질의

많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델이다.

  • 입력 데이터를 읽고 수정하지 않은 채 새로운 출력 데이터를 생성한다.
  • 데이터 처리의 핵심 원리는 입력을 불변으로 취급하고, 부작용을 피하는 것이다.

그래프형 데이터 모델

그래프형 데이터 모델은 데이터 시스템에서 복잡한 연결 관계를 표현하기 위함이고, 정점과 간선으로 구성되어 있다.

  • 정점 : 특정 사물이나 개념을 나타내는 것
  • 간선 : 두 정점 사이의 관계를 나타내는 것

소셜 그래프, 자동차 네비게이션 시스템, 페이지랭크와 같은 내용은 그래프 상에서 잘 동작한다.

정리

역사적으로 데이터를 하나의 큰 트리로 표현하려고 노력했지만, 다대다 관계를 표현하기에는 트리 구조거 적절하지 않았고, 이를 해결하기 위해서 관계형 모델이 고안됐다. NoSQL 은 다음과 같은 2가지 갈래가 있다.

  • 문서 데이터베이스 : 데이터가 문서 자체에 포함돼 있으면서 하나의 문서와 다른 문서 간 관계가 거의 없는 사용 사례를 대상으로 한다.
  • 그래프 데이터베이스 : 문서 데이터베이스와는 정반대로 모든 것이 잠재적으로 관련 있다는 사용 사례를 대상으로 한다.

문서 및 그래프 데이터베이스에서는 저장할 데이터를 위한 스키마를 강제하지 않아 변화하는 요구사항에 맞춰 애플리케이션을 쉽게 변경할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.