You are a developer, not a coder.

NOSQL Modeling 기본 개념 본문

Development Basic

NOSQL Modeling 기본 개념

Mattmk 2020. 1. 31. 15:22
SMALL

1. NOSQL이란?

(1) 등장배경

대규모 데이터를 생산

기존 기업 데이터에 비해 단순한 형태를 지님

복잡성이 높은 데이터에서 대량의 단순한 데이터가 생산됨

새로운 저장 기술이 필요해짐

구글과 아마존에 의해 Bingtable Dynamo라는 논문이 발표됨

이에 따라 RDBMS시장에 NOSQL이 등장하게 됨

 

(2) 특징

NOSQL으로 RDBMS의 단점을 보완해 준다

RDBMS가 데이터의 관계를 FK로 정의하고 JOIN을 사용 하지만 NOSQL은 관계를 정의하지 않음

대용량 데이터 저장을 하기에 적합하다

분산형 구조를 통해 여러대의 서버에 분산하여 저장하고, 상호 복제하여 데이터 유실이나 서비스 중지에 대비한다

스키마가 유동적이다

mandatory 필드로 지정하면 ID부분만 타입이 동일하고 다른 컬럼은 데이터 형태가 동일하지 않아도 괜찮다

CAP(일관성, 가용성, 부분결함용인) 이론을 따른다

 

(3) 장점 및 단점

(3-1) 장점

데이터 분산에 용이 하다

대용량 데이터 처리에 특화되어 있다

데이터에 대한 캐시가 필요한 경우에 적합 하다

배열 형식의 데이터를 고속으로 처리할 경우에 적합 하다

 

(3-2) 단점

각 솔루션의 특징을 심도있게 이해하고 있어야 한다

버그가 상대적으로 많다

 

2. NOSQL Data Modeling 기본 개념

(1) 비정규화

비정규화 → 데이터의 중복 허용

쿼리 프로세싱을 간단히 또는 최적화 하거나 사용자의 데이터를 특정한 데이터 모델에 맞추기 위하여 같은 데이터를 다중의 도큐먼트나 테이블에 복제하여 중복을 허용

NOSQL 모델링 기법은 비정규화 기법을 기본으로 정의 한다

일반적인 비정규화 기법은 아래의 트레이드-오프가 있음을 기본으로 한다

 

     (1-1) 쿼리당 I/O 또는 쿼리 데이터 사이즈 VS 전체 데이터 사이즈

비정규화를 통하면 쿼리를 수행하기 위한 모든 데이터를 한 곳에 모아 놓고 쿼리를 실행하기 때문에 쿼리 수행을 위한 전체 I/O의 숫자 자체를 줄여 전체 성능을 향상 시킬 수 있음

그러나, 해당 데이터는 다른 쿼리 수행을 위하여 다른 Document 또는 Table에 중복 저장 되기 때문에 전체 데이터 사이즈는 필연적으로 증가 함

 

      (1-2) 쿼리 수행의 복잡도  VS 전체 데이터 사이즈

데이터 모델링 시점에서 데이터 자체의 정규화나 쿼리 수행 시점에서 데이터 간 연속적인 Join은 쿼리 프로세서의 복잡도를 증가 시킴

시스템과 데이터 사이즈가 큰 분산 환경에서는 그 복잡도가 더욱 더 높아짐

정규화는 반대로 데이터를 비정규화 하면 쿼리에 필요한 모든 데이터를 Document 또는 Table에 쿼리-친속한 구조로 모아 놓을 수 있기 때문에 전체적인 쿼리 프로세싱을 단순화 하고 수행 시간을 단축 시킬 수 있음

 

(2) 응용 프로그램상의 조인

NOSQL은 태생적으로 데이터 쿼리 타임 시 JOIN을 고려하지 않게 설계가 되어 있으며, 오히려 JOIN을 많이 제약하는 편 이다

그러므로 데이터 스토어 구성 시에는 쿼리 타임 시 JOIN이 발생하지 않도록 데이터 모델에 대한 비정규화와 어그리게이션을 수행 하여 구성함을 기본 전제로 하고 있다

즉, NOSQL에서의 데이터 모델은 데이터 자체 간의 관계와 속성에 따라 구성하기 보다는 해당 데이터를 이용하는 응용 프로그램이 그 데이터를 어떻게 사용 하는가에 따라 구조화 되고 구성 된다.

데이터의 정규화를 통해 중복을 최소화 하여 일관성 및 정합성 보장을 원칙으로 하고 응용 프로그램이 데이터 질의 시에 정규화 되어 있는 데이터를 상호 JOIN 하여 하나의 완전한 테이블을 만들어 내는 관계형 모델과의 가장 큰 차이이다.

대용량 데이터에서 빠른 응답 성능과 확장성, 가용성을 최우선 목적으로 하는 NOSQL에서는 이러한 쿼리-타임 JOIN을 최대한 피하여 데이터 모델을 구성하기를 가정 하고 있다.

이 가정에 따라, JOIN 대상 데이터와 비정규화와 어그리게이션을 수행 할때의 문제점이 바로 JOIN 대상 데이터가 자주 변동 될때와 N:M 관계일 때 이다.

 

 

3. NOSQL Modeling과 RDBMS(관계형DB) Modeling의 차이점

구분 NOSQL RDBMS
장점 -Web, SNS 환경의 다양한 정보를 검색 및 저장 -정규화된 데이터 모델
-데이터 무결성 및 정합성 보장
-작은 크기의 트랜잭션
단점 -데이터 무결성/정합성 보장 못함 -확장성의 한계
-클라우드 분산환경에 부적합
특징 -데이터의 수정/삭제가 거의 없고 대부분 INSERT위주
-강한 Consistency 불필요
-노드 추가 및 삭제, 데이터 분산에 유연
-JOIN을 통해 정보 연계 가능
-트랜잭션의 안정성 확보를 위한 ACID
-정형적인 스키마 구조

 

NOSQL 모델링은 관계형 모델링과는 반대로, 어플리케이션의 특징적인 쿼리들로 부터 시작

관계형 모델링은 전형적으로 가용한 데이터의 구조에 기반을 두며, 데이터 모델을 정의한 이후에 어플리케이션에 맞는 쿼리를 개발

NOSQL 모델링은 전형적으로 어플리케이션 특징적인 데이터 접근 패턴에 기반을 두며, 어플리케이션의 필요한 쿼리와 성능을 정의한 이후에 요구사항에 부합하도록 데이터 모델을 구성

NOSQL모델링은 관계형 데이터베이스 모델링 보다 더 깊은 데이터 구조 및 접근 알고리즘에 대한 이해가 요구 됨

관계형 DB는 계층적 구조나 그래프 구조와 같은 데이터 모델을 저장하고 처리하기에는 적합하지 못하지만, NOSQL은 다양한 데이터 모델링 기법을 통하여 해결 가능

NOSQL 모델링은 RDBMS 모델링보다 더 깊은 데이터 구조 및 접근 알고리즘에 대한 이해가 필요하며 이에 맞게 모델링을 해야됨

LIST

'Development Basic' 카테고리의 다른 글

Heap에 대해서  (0) 2020.05.28
Stack에 대해서  (0) 2020.05.28
AWS DynamoDB [StreamViewType]  (0) 2020.02.25
REST API에 대해서  (0) 2020.02.05
REST에 대해서  (0) 2020.02.03
Comments