공부/단행본

데이터중심의 어플리케이션 설계 2장

내공얌냠 2022. 1. 2. 15:28

2장 데이터 모델과 질의 언어

 

관계형 모델과 문서모델

  • 관계형 모델: relation(table)으로 작성되고 각 관계는 순서 없는 tuple(row) 모음
  • 비즈니스 데이터 처리 -> RDB
    • 트랜잭션 처리
    • 일괄 처리
  • 문서 모델
  • NoSQL(Not Only SQL)
    • 다중저장소 지속성 polyglot persistence
    • 관계형 DB가 폭넓은 다양함을 가진 비관계형
    • DataStore와 함꼐 사용된다는 개념

 

  • 객체 관계형 불일치
  • 임피던스 불일치 impedence mismatch : 코드와 모델 사이의 분리

jSON : multi-table 보다 더 나의 locality 지역성을 가짐

다대일과 다대다관계

  • IBM의 정보관리 시스템, IMS
  • 네트워크 모델(코디실 모델, CODASYL)
    • 접근경로: 레코드 접근 유일한 방법은 최상위 레코드에서부터 연속된 연결 경로를 따르는 방법
  • 관계형 모델: 질의최적화기 query optimizer의 선택 -> 접근경로이지만 자동으로 만든다
  • 문서데이터베이스는 별도 table이 아닌 상위 레코드 내에 중첩된 레코드를 저장(일대다관계)
  • 다대일, 다대다 표시의 경우 고유한 식별자로 참조
    • 관계형 모델 : 외래키
    • 문서 모델 : 문서참조 documnet reference
  • 문서 데이터 모델: 스키마 유연성, 지역성에 기인한 더 나은 성능 (일부 애플리케이션의 경우 데이터 구조가 가까워서)
  • 관계형 모델: 조인, 다대일, 다대다 관계 잘 지원함

 

  • 일대다 관계 트리로 보통 한 번에 전체 트리를 적재할 때, 문서와 비슷한 구조를 여러 테이블로 나누어 찾는 (shredding) 관계형 기법은 불필요하게 복잡해짐, 미흡한 조인 지원 및 다대다 관계 사용 시 매력떨어짐.
  • MySQL 은 ALTER TABLE 시에 전체 table을 복사함
  • 애플리케이션이 자주 전체 문서에 접근해야할 때 저장소 지역성 storage locality 활용하면 성능 이점이 있다. (한번에 해당 문서의 많은 부분을 필요로 하는 경우에만 적용)

 

SQL: 선언형 질의언어

  • 알고자 하는 데이터의 패턴, 즉 결과가 충족해야 하는 조건과 데이터를 어떻게 변환할지를 지정
  • SQL이 기능적으로 더 제한적이라는 사실은 DB에게 자동으로 최적화할 수 있는 여지를 더 많이 준다는 얘기
  • 선언형 언어는 종종 병렬 실행에 적합
  • 결과의 패턴만 지정하기에 병렬 실행으로 더 빨라질 가능성이 크다.

 

IMS, CODASYL: 명령형 코드

  • 특정 순서로 특정 연산을 수행하게끔 컴퓨터에 지시

 

맵리듀스 MapReduce 질의

  • 많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델
  • 여러 함수형 프로그래밍 언어에 있는 map(collect) 과 reduce(fold or inject) 함수를 기반으로 함
  • 몽고 DB는 집계 파이프라인 Aggregation pipeline <- 선언형 질의 언어지원을 추가함.
  • 맵리듀스는 연계된 자바스크립트 함수 두 개를 신중하게 작성해야 한다.
  • 질의 최적화기가 질의 성능을 높일 수 있는 기회도 제공

 

그래프형 데이터 모델

  • 애플리케이션이 주로 일대다(트리구조 데이터)관계
  • 레코드 간 관계가 없다면 문서모델이 적합
  • 데이터에서 다대다 관계가 매우 일반적인 경우는 그래프로 데이터 모델링 하는 것이 더 자연스러움

그래프 구성요소

  • 정점 vertex (노드, 엔티티)
  • 간선 edge (관계, 호 arc)

그래프의 종류

  • 소셜 그래프
  • 웹 그래프
  • 도로나 철도 네트워크

그래프 모델

  • 속성 그래프 모델 (Neo4j, Titan, Infinite Graph)
  • 트리플 저장소 모델 (Datomic, Allogrograph)

그래프의 선언형 질의 언어

  • Cypher
  • SPARQL
  • Data log 

속성 그래프

  • 고유한 식별자
  • 유출 outgoing 간선 결합
  • 유입 incoming 간선 집합
  • 속성 컬렉션(키-값 쌍)

각 간선의 요소

  • 고유한 식별자
  • 꼬리 정점 : 간선이 시작하는 정점
  • 머리 정점 : 간선이 끝나는 정점
  • 두 정점 간 관계 유형을 설명하는 레이블
  • 속성 컬렉션(키-값 쌍)

사이퍼 Cypher 질의 언어

  • 속성 그래프를 위한 질의 언어
  • Neo4j 그래프 DB용으로 만들어짐

SQL의 그래프 질의

  • 재귀 공통 테이블 식 recursive common table expression (WITH RECURSIVE 문): 가변 순회경로에 대한 질의개념 표현

트리플저장소와 스파클, 정점

  • 트리플 저장소
    • 주어 subject
      • 꼬리정점 (그래프의 다른 정점)
      • 정점 (원시 데이터 타입 값)
    • 서술어 predicate
      • 머리정점 (그래프의 다른 정점)
      • 간선 (원시 데이터 타입 값), 키
    • 목적어 object
      • 그래프의 다른 정점
      • 원시 데이터 타입 값
        • 속성의 값

시맨틱 웹

  • 웹사이트는 이미 사람이 읽을 수 있는 텍스트와 그림으로 정보를 제시하고 있으나 컴퓨터가 읽게끔 기계가 판독 가능한 데이터로도 정보를 게시하는 건 어떨까 하는 개념
  • 트리플 저장소 데이터 모델은 시맨틱 웹과는 완전히 독립적

자원 기술 프레임워크 Resource Description Framework, RDF

  • 서로 다른 웹사이트가 일관된 형식으로 데이터를 게시하기 위한 방법을 제안

데이터 웹 Web of Data = 만물 DB Database of everything

RDF 데이터 모델

  • 스파클 질의 언어: RDF 데이터 모델을 사용한 트리플 저장소 질의 언어
  • 데이터 로그 Datalog
    • 질의 언어의 기반이 되는 초석을 제공
    • 서술어(주어, 목적어)로 작성
    • 새로운 서술어를 데이터 베이스에 전달하는 규칙 rule을 정의
      • 서술어는 DB에 저장된 트리플이 아님
      • 데이터나 다른 규칙으로부터 파생 됨
      • rule 은 함수가 다른 함수를 호출하거나 재귀적 자기 호출 처럼 다른 규칙 참조 가능
728x90
반응형