Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,030 views

Published on

  • Be the first to comment

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

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

×