Skip to main content
  1. Posts/
  2. Books/
  3. DDIA/

데이터 중심 애플리케이션 설계 02 데이터 모델과 질의 언어

·336 words·2 mins
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 상세 정리
#

인트로
#

  • 데이터 모델은 소프트웨어 개발에서 제일 중요하다
  • 특히 데이터 모델을 표현하는 방법이 중요한데
    • 어떤 데이터를 저장할것인가 (사람 / 조직 등)
    • 어떤 형태로 저장할것인가 (json / xml 등)
    • 어떤 장소에 저장할것인가 (램 / 하드디스크 등)
    • 어떤 방식으로 저장할것인가 (전류 / 빛의파동 등)
  • 결국 이들을 추상화시키는게 중요하다.

관계형 모델과 문서 모델
#

  • 1970년 에드가 코드가 제안한 관계형 모델을 기반으로한 SQL이 젤 잘 알려져있는데

    • 이는 비즈니스 데이터 처리에 근간을 둔다
      • 트랜잭션 처리
      • 일괄 처리 등
  • 네트워크 모델, 계층 모델등이 대안으로 나왔지만, 결국 관계형 모델이 평정했다.

  • NoSQL의 탄생

    • 2010년대, Not Only SQL이라는게 유행을 탔는데
      • 이는
        • 대규모 데이터셋
        • 높은 쓰기 처리량 달성
        • 무료 오픈 소프트웨어에 대한 선호도
        • 특수 질의 동작
        • 동적인 데이터 모델
      • 등을 위해서였다.
    • 가까운 미래에는 관계형 DB도 다양함을 위해 비관계형 데이터 스토어와 함께 사용될텐데, 이를 다중 저장소 지속성이라 한다.
  • 객체 관계형 불일치

    • 데이터를 관계형 테이블에 저장할때 각 모델 객체 사이에 전환 계층이 필요한데, 이를 임피던스 불일치라고 한다.
  • 다대일과 다대다 관계

    • 중복된 데이터를 정규화하려면 다대일 관계가 필요한데, 이는 문서 모델에 적합하지 않다.
      • 문서 DB에서는 조인에 대한 지원이 약해서
    • 그러면 다중질의를 만들어서 흉내내야하는데…
  • 어떤 데이터 모델이 애플리케이션 코드를 더 간단하게 할가?

    • 문서와 비슷한 구조를 여러 테이블에 나누어 찢는 관계형 기법은 불필요하게 복잡해진다.
      • 너무 깊게 중첩되지 않으면 괜찮지만…
  • 문서 DB와 관계형 DB의 통합

    • 대부분의 관계형 DB는 이제 XML도 지원함
    • 심지어 둘이 점점 비슷해지는중!
    • 이것이 가야할 올바른 길
  • 데이터를 위한 질의 언어

  • SQL은 선언형, IMS와 코다실은 명령형 코드

그래프형 데이터 모델
#

  • 그래프는 정점과 간선이라는 객체로 이루어진다.
  • 속성 그래프 모델
    • 고유식별자 / 유출 / 유입 / 컬렉션 등으로 이루어진 정점과
    • 고유식별자 / u, v/ 관계 유형 / 컬렉션 등으로 이루어진 간선으로 만든 그래프 데이터 모델
  • 사이퍼 질의언어
    • 속성 그랲를 위한 질의 언어
  • 트리플 저장소와 스파클
    • 트리플 저장소 모델은 속성 그래프 모델과 비슷

정리
#

  • 데이터 모델은 광범위한 주제임
  • 데이터를 한 트리로 크게 관리하고싶었지만, 이는 다대다 관계를 표현하기 어려었음
  • 하지만 여기에도 애로사항이 있어서 NoSQL도 만들고, 그래프도 만들고…
  • 아무튼 세 모델은 각자의 영역에서 훌륭하고, 서로를 흉내낼 수는 있지만 엉망이다.
  • 게놈데이터모델, 빅데이터스타일 모델, full-text 검색등 여러가지가 더 있지만, 아무튼 다 알고 잘 써야한다는 이야기

❔질문 사항
#

🔗 참고 자료
#