NoSQL (Not only SQL)

I. 분산 환경 최적 DBMS, NoSQL의 개념

테이블-컬럼 스키마 없이 분산 환경에서 Key-Value 기반 단순 검색 및 추가 작업이 용이한 DBMS

 

II. NoSQL 데이터 모델 구조

모델 구조개념도설명
Key/Value
Store
Key/Value Model

Column Family Model
– Unique한 Key에 하나의 Value 형태 모델

– Column Family Key 내 (Column, Value) 조합으로 된 여러 필드를 갖는 모델

Ordered
Key/Value
Store
– Key/Value Store의 확장된 형태로, 데이터가 Key 순서로Sorting
Document
Key/Value
Store
– 저장되는 Value 데이터가 Document 타입

– XML, JSON, YAML 등 구조화된 타입으로 복잡한 계층 구조 표현

 

III. NoSQL과 관계형DB 비교

항목NoSQL관계형DB
데이터
모델
– Scheme-less
– Key-Value 관계
– 행/열로 구성
– 스키마, 인덱스 등
ACID
속성
– 유연한 데이터구조
– ACID 속성 절충
– ACID 속성이 중요
(원자, 일관, 독립, 영속성)
확장– Scale-Out 방식
– 하드웨어 분산
– Scale-Up 방식
– 하드웨어 집적도

 

IV. NoSQL의 특징

구분특징설명
데이터
베이스
측면
스키마
유연성
– 컬럼 등 스키마 변경 자유로움
– 재가동 없이 스키마 구조 변경
복잡 쿼리
불필요
– 조인 기능 없음
– 조인에 따른 쿼리 복잡성 해소
트랜잭션
보장
– Column Family, Super Column
– 트랜잭션 수행이 보장
확장성– 데이터량 증가에 따른 데이터베이스 확장성 우선 지원
데이터
모델 측면
비 관계형
모델
– 데이터 간 관계 정의 불가
– 단순, 명료한 데이터 모델
조회 성능
향상
– 단일테이블 접근 필요 정보 확보
– 조인이 불필요하여 성능 향상

– 단순 검색 및 추가 작업에 최적화되어 응답 속도, 처리 효율 측면에서 뛰어난 성능 발휘

 

V. NoSQL 데이터 모델링 패턴 및 절차

가. NoSQL 데이터 모델링 패턴

모델링 패턴핵심 기능패턴 설명
Denormalization
(비정규화)
중복 저장
역정규화 유사
– 동일데이터 중복 저장
– 한번의 I/O로 조회
Aggregation유연한 스키마
(Schema-less)
– row의 key 동일 시 데이터 타입 제약없음
Application
Side Join
Client 측면
Join 처리
– 조인 필요 시 Client APP 단 조인 처리
Atomic
Aggregation
단일 테이블
통합
– 일관성 보장 위해
  단일 테이블로 통합
Index Table
(단일 인덱스)
인덱스
생성
– 인덱스 미지원하므로
별도 인덱스 생성
Composite
Key Table
복합 인덱스
생성
– 단일 인덱스 모델에서 복합 인덱스 필요 시

나. NoSQL 데이터 모델링 절차

#절차세부 절차 설명
1도메인
모델 파악
– 저장 위한 도메인 파악
– 개체 및 관계 분석, ERD 도식화
2쿼리결과
디자인
– 도메인 모델에 따른 쿼리 결과
– 데이터 출력 내용 기반 디자인
3패턴 이용
모델링
– Put/Get 기반 데이터 가공
– NoSQL 내 테이블로 재정의
4기능
최적화
– RDBMS의 인덱스 개념 사용 위해
  Secondary Index로 기능 최적화
5후보 선정
/테스트
– 구조 및 특성 분석, 부하테스트
– 후보 중 적절한 솔루션 선택
6선정 모델
최적화
– 선정 모델 기반 모델링 최적화
– I/F 설계 및 하드웨어 디자인

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^