저번 시간에는 RDB와 NoSql을 비교해서 이해해 보았다면,

이번에는 NoSql의 종류를 좀 더 상세히 이해해 보고자 한다.

 


NoSQL이란?

대용량 웹 서비스를 위하여 만들어진 데이터 저장소로 관계형 데이터 모델이 아닌 분산된 데이터를 저장 및 조회,

스키마가 없거나 느슨한 스키마를 제공한다.

1. Key-Value DB

- 간단한 키-값 메소드를 사용하여 데이터를 저장하는 비관계형 데이터 베이스 유형

- 키를 고유한 식별자로 사용하는 키-값 쌍의 집함으로 저장

- 키-값DB는 파티셔닝이 가능하고, 다른유형의 DB로는 불가능한 범위까지 수평확장 가능

 

사용사례

- 세션 스토어 : 세션 관련데이터를 주 메모리또는 DB에 저장하는데, 속도가 빠른 키-값 저장소가 적합하다. 키-값DB는 RDB보다 페이지당 제공하는 오버헤드가 적다

- 장바구니: 키-값DB는 분산처리 및 저장을 통해 수백만명의 사용자에게 서비스 제공, 동시에 대량의 데이터 처리및 상태변경 가능 또한, DB 내에 내장형 중복기능이 있어 스토리지 노드 손실 방지 

-Redis

 

Key Value
K1 AAA, BBB, CCC
K2 AAA, BBB
K3  DDD, CCC
K4 AAA, 222, 3333
K5 ZZZZ, 3 , 5555

2. Document DB

- JSON 유사 형식의 문서로 데이터 저장 및 쿼리하도록 설꼐된 비관계형 데이터베이스

- 개발자들이 어플리케이션 코드에서 사용하는것과 동일한 문서 모델 형식을 사용하여 손쉽게 데이터 저장, 쿼리 가능

- 유연한 인덱싱, 강력한 임시 쿼리 , 문서 모음에 대한 분석 지원

 

사용사례

- 콘텐츠 관리 : 어플리케이션이 추적하는 각 엔터티를 단일 문서로 저장 가능 

- 카탈로그 : Doc DB는 효율적 , 효과적으로 저장 가능. 각 상품의 속성을 단일 문서로 기술하여 관리가 쉽고 , 읽기 속도도 빠르다.

- MongoDB, CouchDB

[ 
    { 
        "year" : 2013, 
        "title" : "Turn It Down, Or Else!", 
        "info" : { 
            "directors" : [ "Alice Smith", "Bob Jones"], 
            "release_date" : "2013-01-18T00:00:00Z", 
            "rating" : 6.2, 
            "genres" : ["Comedy", "Drama"], 
            "image_url" : "http://~~~.com", 
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.", 
            "actors" : ["David Matthewman", "Jonathan G. Neff"] 
        } 
    }, 
    { 
        "year": 2015, 
        "title": "The Big New Movie", 
        "info": { 
            "plot": "Nothing happens at all.", 
            "rating": 0 
        } 
    } 
]

 

3. Graph DB

- 데이터베이스는 노드를 사용하여 데이터 엔터티를 저장하고 엔지로는 엔터티간의 관계를 저장한다.

- 엣지는 항상 시작 노드, 끝노드, 유형과 방향을 가지며 상-하위 관계, 동작, 소유자등을 문서화 한다. 

 

사용사례

- 이상탐지 : 정교한 이상탐지와 예방기능이 있다. 관계를 사용하여 거의 실시간으로 금융이나 구매 트랜잭션 처리 가능

- 추천 엔진: 고객 관심 분야, 친구 , 구매이력과 같은 정보 카테고리들 사이의 그래프 관계 저장

- Neo4j, InfoGrid , Infinite Graph

4. In-Memory DB

- 모든 데이터를 주메모리에 저장하여 Disk에 접근하는 것을 제외해서 즉각적인 반응이 올 수 있는 DB

- micro 초 반응, 많은 트래픽이 요하는 어플리케이션에 적합하다.

 

사용사례

- Real-time Bidding

- 게이밍 리더보즈 : realtime으로 정렬된 데이터를 빠르게 가져 올 수 있다.

- 캐시 : 보통 RAM에 저장해서 빠르게 접근 가능

 

 

5. Search-Engine DB

- 비슷한 주제로 분류한 인덱스를 사용하며, 길고 구조화 되지 않은 데이터를 다루는데 최적화 되어있다. 아주 길거나 복잡한 text를 다루는데 좋다.

 

사용사례

- Text Search : Search-Engine DB를 쓰면 RDB보다 full-text를 찾는게 더 빠르고 관련있는 결과들을 정렬 가능

- 로그와 분석 : 로그를 더 효율적으로 관리 가능, 여러 다른 어플리케이션의 로그들을 중앙에서 관리 가능

-ElasticSearch

 

 

6. Column Family Store

- Key-Value 모델이 발전한 형태이다.

- key는 여러 컬럼을 가리키며, 컬럼은 컬럼 패밀리(슈퍼 컬럼)에 따라 정렬된다.

- 여러 서버의 분산된 수많은 데이터를 저장, 처리하기 위해 만들어졌다.

- Join이 되지 않는다. 신규데이터가 추가 될때, 구조를 변경하지않고 Column Family 테이블에 입력하면 된다. 

- Cassnadra, HBase

테이블명 사원
CF : 공통사항

성명

주민번호

CF:최종학력

학교명

전공

졸업년월일

CF:전화번호

집 전화번호

모바일 전화번호

사무실 전화번호

 


참고사이트

https://aws.amazon.com/ko/nosql/

https://subokim.wordpress.com/2011/05/31/nosql-db-four-type/

https://12bme.tistory.com/323

'DEVELOP > DB' 카테고리의 다른 글

[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13
NewSql 이란? All in one DBMS  (0) 2019.12.16
DB(database)의 종류  (0) 2019.12.11
Liquibase 사용법 및 개념  (0) 2019.06.12

+ Recent posts