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
- 그래프의 다른 정점
- 원시 데이터 타입 값
- 속성의 값
- 주어 subject
시맨틱 웹
- 웹사이트는 이미 사람이 읽을 수 있는 텍스트와 그림으로 정보를 제시하고 있으나 컴퓨터가 읽게끔 기계가 판독 가능한 데이터로도 정보를 게시하는 건 어떨까 하는 개념
- 트리플 저장소 데이터 모델은 시맨틱 웹과는 완전히 독립적
자원 기술 프레임워크 Resource Description Framework, RDF
- 서로 다른 웹사이트가 일관된 형식으로 데이터를 게시하기 위한 방법을 제안
데이터 웹 Web of Data = 만물 DB Database of everything
RDF 데이터 모델
- 스파클 질의 언어: RDF 데이터 모델을 사용한 트리플 저장소 질의 언어
- 데이터 로그 Datalog
- 질의 언어의 기반이 되는 초석을 제공
- 서술어(주어, 목적어)로 작성
- 새로운 서술어를 데이터 베이스에 전달하는 규칙 rule을 정의
- 서술어는 DB에 저장된 트리플이 아님
- 데이터나 다른 규칙으로부터 파생 됨
- rule 은 함수가 다른 함수를 호출하거나 재귀적 자기 호출 처럼 다른 규칙 참조 가능
728x90
반응형
'공부 > 단행본' 카테고리의 다른 글
[컴퓨터 비전] Chapter 03 에지 검출 (0) | 2022.02.11 |
---|---|
[컴퓨터 비전] Chapter 02 영상 처리 (0) | 2022.02.11 |
[컴퓨터 비전] Chapter 01 소개 (0) | 2022.02.11 |
데이터중심의 어플리케이션 설계 1장 (0) | 2021.12.30 |
데이터 중심 어플리케이션 설계 (0) | 2021.12.30 |