저번 시간에는 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/
'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 |