SlideShare une entreprise Scribd logo
1  sur  13
집합적 데이터 모델


             박기덕
NOSQL의 데이터 모델

• 데이터 모델은 데이터를 인식하고 조직하는데 사용되는 모델


• 관계형 데이터 모델 : 테이블 집합


• NoSQL : 집합 지향 (키-값, 문서, 칼럼 패밀리), 그래프
집합

• 관계형 데이터 모델에서는 정보를 튜플(행)으로 구분


• 튜플은 제한적인 데이터 구조


• 집합지향은 튜플보다 더 복잡한 구조


• 집합은 데이터 조작과 일관성 관리의 단위
전자상거래 웹사이트 예제 (관계형 데이터 모
델)

•   웹을 통해 고객에게 직접 상품을 판매
전자상거래 웹사이트 예제 (집합 지향)

•   NoSQL에서 흔히 사용되는 JSON 형식으로 표현
                        // 고객
                        {                                    “shippingAddress”:[{“city”:”Chicago”}]
                        “id”:1,                              “orderPayment”:[
                        “name”:“Martin”,                      {
                        “billingAddress”:[{“city”:”Chicago”}] “ccinfo”:”1000-1000-1000-1000”,
                        }                                        “txnId”:”abelif879rft”,
                                                                 “billingAddress”:{“city”:”Chicago”}
                        //주문                                   }
                        {                                      ],
                        “id”:99,                              }
                        “customerId”:1,
                        “orderItems”:[
                          {
                          “productId”:27,
                          “price”:32.45,
                          “productName”:”NoSQL Distilled”
                          }
                          ],
전자상거래 웹사이트 예제 (집합 지향)

•   집합의 경계를 다르게 그려, 고객의 모든 주문을 고객 집합에 포함
                      // 고객
                      {
                      “customer”: {                        “shippingAddress”:[{“city”:”Chicago”}]
                      “id”:1,                              “orderPayment”:[
                      “name”:“Martin”,                      {
                      “billingAddress”:[{“city”:”Chicago”}] “ccinfo”:”1000-1000-1000-1000”,
                      “orders”: [                              “txnId”:”abelif879rft”,
                        {                                      ““billingAddress”:{“city”:”Chicago”}
                            “id”:99,                           }],
                            “customerId”:1,                  }]
                            “orderItems”:[                 }
                              {                            }
                              “productId”:27,
                              “price”:32.45,
                              “productName”:”NoSQL Distilled”
                              }
                          ],
집합지향의 결과

•   관계형 모델에서는 데이터 요소 관계를 외래키로 표현가능하지만, 집합지향
    에서는 관계간의 구분이 되지 않음


•   관계형 데이터베이스는 데이터 모델에 집합 개념이 없어 집합 무지라 부른다.
    (NoSQL의 그래프 데이터베이스 포함)


•   다양한 데이터 조작방법이 필요할 경우 집합 무지 모델이 더 좋은 선택


•   집합지향이 중요한 이유는 클러스터에서 동작하기 수월하기 때문
집합지향의 결과

•   집합은 트랜잭션에도 중요한 영향을 미침


•   관계형 데이터베이스는 단일 트랜잭션 안에서 어떤 테이블의 어떤 행이든 조
    작 가능


•   NoSQL 데이터베이스는 ACID(원자성, 일관성, 격리성, 영속성)를 지원하지 않아
    데이터 일관성 희생


•   NoSQL 데이터베이스는 한번에 한 집합에 대한 원자적 조작 지원


•   집합 여러 개를 원자적 방법으로 조작할 시, 코드에서 직접 관리 (일관성 부분
    은 5장에서 더 자세히…)
키-값 모델과 문서 데이터 모델
칼럼 패밀리 데이터베이스

•   빅테이블 형식의 데이터 모델을 가진 데이터베이스를 흔히 칼럼 저장소라 부
    름


•   관계형 데이터 모델과 다른점은 물리적 저장 방식


•   모든 행에 대한 칼럼 그룹을 저장단위로 사용


•   칼럼 그룹을 함께 저장, 관계형 모델과 SQL은 배제한 데이터 베이스를 칼럼 패
    밀리 데이터베이스라 칭함


•   두 단계의 집합구조로 생각, 첫번째 키는 행 ID, 두번째 값은 칼럼 – get(„1234‟,
    „name‟)
칼럼 패밀리 데이터베이스

•   특정 칼럼 패밀리에 대한 데이터는 함께 접근된다는 가정하에, 각 칼럼은 칼럼
    패밀리 하나의 일부가 되어야 하고, 칼럼은 접근 단위로 동작




                      • 행-지향 : 각 행은 집합(아이디가 „1234인
                        고객)이고, 칼럼 패밀리는 그 집한안의 유
                        용한 데이터 덩이리(프로파일, 주문내역)


                      • 열(칼럼)-지향 : 각 칼럼 패밀리는 각 레코
                        드의 행으로 레코드 타입(고객 프로파일)
                        을 정의 행은 모든 칼럼 패밀리의 레코드
                        연결
칼럼 패밀리 데이터베이스

•   데이터베이스가 데이터의 공통 그룹에 대해 알고 있으므로, 데이터를 작성하
    거나 접근할 때 이용 가능


•   어떤 행에는 칼럼을 추가할 수 있고, 행은 완전히 다른 칼럼 키를 가질수 있다.


•   카산드라의 좁은행 : 많은 행에 걸쳐 몇 개 안되는 동일한 컬럼을 사용, 레코드
    타입을 정의, 각행=레코드 / 각칼럼=필드
      넓은행 : 많은 (수천개) 칼럼을 가지며, 행마다 아주 다른 칼럼을 가짐,
각 칼럼이 리스트의 요소


•   넓은 칼럼 패밀리는 칼럼 정렬 순서를 정의 가능, 정렬 키를 통해 순서에 접근
    가능, 키로 순서의 범위에 접근 가능
       (예 : 날짜와 아이디를 붙여서 키를 만든 경우 „20130324-1111‟)
요약
•   세 형태 모두 집합이란 개념을 공유, 검색할 수 있도록 키로 색인


•   집합은 클러스터에서 실행되는 데 가장 중요한 개념, 한집합으로 구성된 데이
    터는 한 노드에 저장


•   제한적이지만 유용한 정도의 트랙잭션 제어를 제공


•   키-값 데이터 모델은 집합을 불투명한 덩이리로 취급, 집합을 키로 검색, 집합
    의 일부를 질의 및 추출 불가


•   문서 모델은 집합이 투명하고 일부 질의 및 추출 가능


•   칼럼-패밀리 모델은 집합을 칼럼 패밀리로 분류, 약간의 구조를 강제하지만
    접근성 향상

Contenu connexe

En vedette

NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스Choonghyun Yang
 
Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Choonghyun Yang
 
Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Steve Min
 
No sql 5장 일관성
No sql 5장   일관성No sql 5장   일관성
No sql 5장 일관성rooya85
 
개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 Donghan Kim
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향NAVER D2
 
파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the BasicHyun-woo Park
 
NoSQL 분석 Slamdata
NoSQL 분석 SlamdataNoSQL 분석 Slamdata
NoSQL 분석 SlamdataPikdata Inc.
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 patternjinho park
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터jinho park
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링Hoyong Lee
 
Not only sql 정리
Not only sql 정리Not only sql 정리
Not only sql 정리상봉 이
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개Wonchang Song
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개Wonchang Song
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기NAVER D2
 

En vedette (19)

NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스
 
Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins
 
Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)
 
TRIZ
TRIZTRIZ
TRIZ
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
No sql 5장 일관성
No sql 5장   일관성No sql 5장   일관성
No sql 5장 일관성
 
개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망
 
Big data
Big dataBig data
Big data
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향
 
파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic
 
No sql 분산모델
No sql 분산모델No sql 분산모델
No sql 분산모델
 
NoSQL 분석 Slamdata
NoSQL 분석 SlamdataNoSQL 분석 Slamdata
NoSQL 분석 Slamdata
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 pattern
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
 
Not only sql 정리
Not only sql 정리Not only sql 정리
Not only sql 정리
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 

Plus de kidoki

Hadoop io
Hadoop ioHadoop io
Hadoop iokidoki
 
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. jsonkidoki
 
전문 검색 기술
전문 검색 기술전문 검색 기술
전문 검색 기술kidoki
 
Http 헤더
Http 헤더Http 헤더
Http 헤더kidoki
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 
14. no sql을 넘어
14. no sql을 넘어14. no sql을 넘어
14. no sql을 넘어kidoki
 
My sql 장애복구
My sql 장애복구My sql 장애복구
My sql 장애복구kidoki
 
9장. 문서 데이터베이스
9장. 문서 데이터베이스9장. 문서 데이터베이스
9장. 문서 데이터베이스kidoki
 
Code chapter15
Code chapter15Code chapter15
Code chapter15kidoki
 
Code chapter5
Code chapter5Code chapter5
Code chapter5kidoki
 
Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로kidoki
 
Ch.11 승진
Ch.11 승진Ch.11 승진
Ch.11 승진kidoki
 
Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직kidoki
 
Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란kidoki
 
11장. 분석 패턴의 적용
11장. 분석 패턴의 적용11장. 분석 패턴의 적용
11장. 분석 패턴의 적용kidoki
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용kidoki
 
11장 시스템
11장 시스템11장 시스템
11장 시스템kidoki
 
10장 클래스
10장 클래스10장 클래스
10장 클래스kidoki
 
클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출kidoki
 
정규확률분포
정규확률분포정규확률분포
정규확률분포kidoki
 

Plus de kidoki (20)

Hadoop io
Hadoop ioHadoop io
Hadoop io
 
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. json
 
전문 검색 기술
전문 검색 기술전문 검색 기술
전문 검색 기술
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
14. no sql을 넘어
14. no sql을 넘어14. no sql을 넘어
14. no sql을 넘어
 
My sql 장애복구
My sql 장애복구My sql 장애복구
My sql 장애복구
 
9장. 문서 데이터베이스
9장. 문서 데이터베이스9장. 문서 데이터베이스
9장. 문서 데이터베이스
 
Code chapter15
Code chapter15Code chapter15
Code chapter15
 
Code chapter5
Code chapter5Code chapter5
Code chapter5
 
Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로
 
Ch.11 승진
Ch.11 승진Ch.11 승진
Ch.11 승진
 
Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직
 
Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란
 
11장. 분석 패턴의 적용
11장. 분석 패턴의 적용11장. 분석 패턴의 적용
11장. 분석 패턴의 적용
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
10장 클래스
10장 클래스10장 클래스
10장 클래스
 
클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출
 
정규확률분포
정규확률분포정규확률분포
정규확률분포
 

[NoSQL] 2장. 집합적 데이터 모델

  • 2. NOSQL의 데이터 모델 • 데이터 모델은 데이터를 인식하고 조직하는데 사용되는 모델 • 관계형 데이터 모델 : 테이블 집합 • NoSQL : 집합 지향 (키-값, 문서, 칼럼 패밀리), 그래프
  • 3. 집합 • 관계형 데이터 모델에서는 정보를 튜플(행)으로 구분 • 튜플은 제한적인 데이터 구조 • 집합지향은 튜플보다 더 복잡한 구조 • 집합은 데이터 조작과 일관성 관리의 단위
  • 4. 전자상거래 웹사이트 예제 (관계형 데이터 모 델) • 웹을 통해 고객에게 직접 상품을 판매
  • 5. 전자상거래 웹사이트 예제 (집합 지향) • NoSQL에서 흔히 사용되는 JSON 형식으로 표현 // 고객 { “shippingAddress”:[{“city”:”Chicago”}] “id”:1, “orderPayment”:[ “name”:“Martin”, { “billingAddress”:[{“city”:”Chicago”}] “ccinfo”:”1000-1000-1000-1000”, } “txnId”:”abelif879rft”, “billingAddress”:{“city”:”Chicago”} //주문 } { ], “id”:99, } “customerId”:1, “orderItems”:[ { “productId”:27, “price”:32.45, “productName”:”NoSQL Distilled” } ],
  • 6. 전자상거래 웹사이트 예제 (집합 지향) • 집합의 경계를 다르게 그려, 고객의 모든 주문을 고객 집합에 포함 // 고객 { “customer”: { “shippingAddress”:[{“city”:”Chicago”}] “id”:1, “orderPayment”:[ “name”:“Martin”, { “billingAddress”:[{“city”:”Chicago”}] “ccinfo”:”1000-1000-1000-1000”, “orders”: [ “txnId”:”abelif879rft”, { ““billingAddress”:{“city”:”Chicago”} “id”:99, }], “customerId”:1, }] “orderItems”:[ } { } “productId”:27, “price”:32.45, “productName”:”NoSQL Distilled” } ],
  • 7. 집합지향의 결과 • 관계형 모델에서는 데이터 요소 관계를 외래키로 표현가능하지만, 집합지향 에서는 관계간의 구분이 되지 않음 • 관계형 데이터베이스는 데이터 모델에 집합 개념이 없어 집합 무지라 부른다. (NoSQL의 그래프 데이터베이스 포함) • 다양한 데이터 조작방법이 필요할 경우 집합 무지 모델이 더 좋은 선택 • 집합지향이 중요한 이유는 클러스터에서 동작하기 수월하기 때문
  • 8. 집합지향의 결과 • 집합은 트랜잭션에도 중요한 영향을 미침 • 관계형 데이터베이스는 단일 트랜잭션 안에서 어떤 테이블의 어떤 행이든 조 작 가능 • NoSQL 데이터베이스는 ACID(원자성, 일관성, 격리성, 영속성)를 지원하지 않아 데이터 일관성 희생 • NoSQL 데이터베이스는 한번에 한 집합에 대한 원자적 조작 지원 • 집합 여러 개를 원자적 방법으로 조작할 시, 코드에서 직접 관리 (일관성 부분 은 5장에서 더 자세히…)
  • 9. 키-값 모델과 문서 데이터 모델
  • 10. 칼럼 패밀리 데이터베이스 • 빅테이블 형식의 데이터 모델을 가진 데이터베이스를 흔히 칼럼 저장소라 부 름 • 관계형 데이터 모델과 다른점은 물리적 저장 방식 • 모든 행에 대한 칼럼 그룹을 저장단위로 사용 • 칼럼 그룹을 함께 저장, 관계형 모델과 SQL은 배제한 데이터 베이스를 칼럼 패 밀리 데이터베이스라 칭함 • 두 단계의 집합구조로 생각, 첫번째 키는 행 ID, 두번째 값은 칼럼 – get(„1234‟, „name‟)
  • 11. 칼럼 패밀리 데이터베이스 • 특정 칼럼 패밀리에 대한 데이터는 함께 접근된다는 가정하에, 각 칼럼은 칼럼 패밀리 하나의 일부가 되어야 하고, 칼럼은 접근 단위로 동작 • 행-지향 : 각 행은 집합(아이디가 „1234인 고객)이고, 칼럼 패밀리는 그 집한안의 유 용한 데이터 덩이리(프로파일, 주문내역) • 열(칼럼)-지향 : 각 칼럼 패밀리는 각 레코 드의 행으로 레코드 타입(고객 프로파일) 을 정의 행은 모든 칼럼 패밀리의 레코드 연결
  • 12. 칼럼 패밀리 데이터베이스 • 데이터베이스가 데이터의 공통 그룹에 대해 알고 있으므로, 데이터를 작성하 거나 접근할 때 이용 가능 • 어떤 행에는 칼럼을 추가할 수 있고, 행은 완전히 다른 칼럼 키를 가질수 있다. • 카산드라의 좁은행 : 많은 행에 걸쳐 몇 개 안되는 동일한 컬럼을 사용, 레코드 타입을 정의, 각행=레코드 / 각칼럼=필드 넓은행 : 많은 (수천개) 칼럼을 가지며, 행마다 아주 다른 칼럼을 가짐, 각 칼럼이 리스트의 요소 • 넓은 칼럼 패밀리는 칼럼 정렬 순서를 정의 가능, 정렬 키를 통해 순서에 접근 가능, 키로 순서의 범위에 접근 가능 (예 : 날짜와 아이디를 붙여서 키를 만든 경우 „20130324-1111‟)
  • 13. 요약 • 세 형태 모두 집합이란 개념을 공유, 검색할 수 있도록 키로 색인 • 집합은 클러스터에서 실행되는 데 가장 중요한 개념, 한집합으로 구성된 데이 터는 한 노드에 저장 • 제한적이지만 유용한 정도의 트랙잭션 제어를 제공 • 키-값 데이터 모델은 집합을 불투명한 덩이리로 취급, 집합을 키로 검색, 집합 의 일부를 질의 및 추출 불가 • 문서 모델은 집합이 투명하고 일부 질의 및 추출 가능 • 칼럼-패밀리 모델은 집합을 칼럼 패밀리로 분류, 약간의 구조를 강제하지만 접근성 향상