티스토리 뷰

NoSQL 개념

관계형 DBMS와 NoSQL의 차이

1. 관계형 DBMS
- 클라이언트/서버 플랫폼 기반

2. NoSQL
- 클라우드 컴퓨팅, 클라이언트/서버 모두를 기반

 

NoSQL의 장점

1. 클라우드 컴퓨팅 환경에 적합함
2. 유연한 데이터 모델
3. 빅데이터 처리에 효과적

 

 

NoSQL 종류

NoSQL 제품

구분 설명
Key-Value DB - Amazon Dynamo Paper
- 데이터 모델 : Key-Value
- 유형 : Riak, Redis, Tokyo
Column-Family DB - Google Big Table Paper
- 데이터 모델 : Column Family
- 유형 : HBase, Cassandra
Document DB - Lotus Notes
- 데이터 모델 : Key-Value 
- 유형 : MongoDB, CoughDB
Graph DB - Euler & Graph Theory
- 데이터 모델 : nodes, rels, K-V on both
- 유형 :  AllegroGraph, Neo4J

* Graph DB : 데이터 간의 관계를 만들고 이러한 관계를 신속하게 쿼리해야 할 때 소셜 네트워킹, 추천 엔진, 이상 탐지 등의 사용 사례에 유용함

 

 

빅데이터 데이터 모델링을 위한 가이드라인

* 언제 어떤 유형의 제품을 선택해야 하는지 조건

1. 초당 5만건 이상의 데이터가 발생하는가?
- 비즈니스 환경에서 초당 데이터 발생량이 5만~10만건 이상이 발생하면 기존 관계형 dbms로는 처리할 수 없음
➡️ 빅데이터 솔루션 선택

 

2. 트랜잭션 제어가 필요한가?
- 관계형 DBMS는 commit, rollback 명령어를 통해 사용자가 직접 트랜잭션 제어함
- Hadoop Eco-System은 파일 시스템을 기반으로 하기 때문에 사용자가 직접 트랜잭션 제어할 수 없고, 데이터를 공유할 수 없음
➡️ 트랜잭션 제어가 필요한 비즈니스 환경이라면 NoSQL 제품 선택


* Hadoop Eco-System: hadoop framework를 이루고 있는 다양한 project들의 모임

 

3. 데이터 무결성이 요구되는가?
- 관계형 DBMS : 제약조건을 통해 무결성 보장을 위한 설계함 -> 매번 데이터 저장할 때마다 무결성을 검증해서 성능 지연문제를 유발시킴
- Key-Value DB / Column-Family DB : 무결성 필요하지 않은 경우
- Document DB : 무결성을 보장해 줄 수 있는 기능을 사용자가 선택할 수 있음

 

4. 수평적 DataSets인가?
- 관계형 DBMS의 테이블 구조는 일반적으로 2차원 수평적 데이터 구조라고 표현함.
- 여러 개의 컬럼으로 구성되는 열과 다수의 행이 교차되는 구조
➡️ 수평적 DataSets 구조로 저장 관리해야 한다면 Document DB 선택

 

5. 계층형 데이터인가?
- 최근에는 Graph DB를 통해 저장/관리 가능
- 기본적인 계층형 데이터 구조는 Document DB로도 충분히 저장/관리 가능
➡️ 계층 Depth가 10~20 level 이상이면 Graph DB 사용 권장

 

 

 

키-밸류(KeyValue) DB 활용

장점

1. In-Memory 기반의 데이터 저장 구조
- 1차적으로 모든 데이터는 메모리에 저장됨
- 사용자 명령 또는 시스템 환경 설정방법들을 통해 필요에 따라 선택적으로 디스크에 존재하는 파일에 저장됨
- 해당 파일은 DBMS에 의해 할당되거나 자동 관리되지 않고 필요에 따라 수동 관리 가능

 

2. Key-Value 데이터 구조는 하나의 Key와 데이터 값으로 구성
- Redis DB 데이터 저장 구조 : 테이블
- index를 생성할 수 있지만 종류 및 구조가 다르기 때문에 표현에 한계가 있음
- 관계형 DB의 데이터 구조를 그대로 매핑해서 사용할 수 없고, 데이터 일부를 보관하거나 가공 처리된 데이터를 임시로 보관은 가능

 

3. 가공처리가 요구되는 비즈니스 환경에서 적합
- Redis-MongoDB / Redis-Cassandra / Memcached-Cougch DB / Redis-Oracle / Redis-Mysql 하이브리드 구조로 사용
- 메인 DB로 선택한 제품은 파일 기반의 저장 구조라서 디스크 IO로 발생하는 성능 지연 문제를 해소하기 위해 Key-Value DB를 보조로 사용함
- 데이터 가공처리, 통계 분석, 데이터 캐싱, 메세지 큐 용도로 사용

 

활용 영역

1. 실시간 분석 영역
2. IOT 영역
3. 계측 정보수집 영역
4. 개인화 정보관리 영역
5. 전자 상거래 비지니스 영역

 

 

NoSQL 선정 방법

1. Simple API를 지원하는가?
- 대부분 NoSQL은 오픈소스라서 개발 언어들과 연동되는지 확인해야함

2. Easy Distributed 기술을 제공하는가?
- 빅데이터를 빠르게 읽고 쓰기를 통해 가공처리 및 분산 가능하도록 설계되었는데 그 핵심은 분산 저장과 처리
- 샤딩 / 파티셔닝이 제공되는지, 개발 환경에 적합한지 검토

3. Easy Replicaton이 지원되는가?
- 분산기술 : 여러 대의 서버에 데이터를 나누어 저장
- shutdown 되는 경우에 데이터 유실을 방지하기 위해 Replicaton 시스템 구축해야함

4. Scale-Out이 가능한가?

5. 유지보수 비용이 저렴한가?

6. 비정형 데이터 구조를 지원하고 트랜잭션 제어가 가능한가?
- 비정형 데이터 : 동영상, 사진, 음성, 좌표 등

7. 오픈 소스인가?

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함