본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
Tech.log/데이터베이스

[NoSQL]

by SpaciousKitchen 2021. 5. 22.

NoSQL

보통 'Not Only SQL'의 줄임말로 해석하며 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다.
관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity)특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들이 등장했고, 이때부터 NoSQL이라는 용어가 보편적으로 사용되었다다.

NoSQL특징

 

- 거대한 Map으로서 key-value 형식을 지원한다. NoSQL은 관계를 정의하지 않는다.대용량 데이터 저장을 한다.
- 분산형 구조를 통해 여러대의 서버에 분산하여 저장하고 상호복제하여 데이터 유실이나 서비스 중지에 대비한다.
- 읽기 작업보다 쓰기 작업이 더 빠르며, 일반적으로 RDBMS에 비하여 쓰기와 읽기 성능이 빠르다.

CAP

 

1.일관성(Consistency) : 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다. (데이터 복제 중에 쿼리가 되는 일관성을 제공하지 않는 시스템의 경우 다른 데이터 값이 쿼리될 수 있다.)

2.가용성(Availability) : 클러스터링된 노드 중 하나 이상의 노드가 실패(Fail)라도 정상적으로 요청을 처리할 수 있는 기능을 제공한다.

3.분산 허용(Partition Tolerance): 클러스터링 노드 간에 통신하는 네트워크가 장애가 나더라도 정상적으로 서비스를 수행한다. 노드 간 물리적으로 전혀 다른 네트워크공간에 위치도 가능하다.

 

데이터 모델 분류

Key/Value Database : Redis, Oracle Coherence
  • 단순한 저장구조를 가지며, 복잡한 조회 연산을 지원하지 않음
  • 고속 읽기와 쓰기에 최적화된 경우가 많음
  • 메모리를 저장소로 쓰는 경우, 아주 빠른 get과 put을 지원
  • Value는 문자열이나 정수와 같은 원시 타입이 들어갈 수 있고, 또 다른 key/value가 들어갈 수도 있음. ( Column Family )

Big Table Database (Ordered Key/Value) : Hbase, Cassandra

  • key/value store와 데이터 저장 방식은 동일
  • 보통의 NoSQL은 order by같은 정렬기능을 제공하지 않지만, 이 모델은 내부적으로 key를 정렬
  • 날짜나 선착순으로 정렬해서 보여줄 때 유용


Document Database : MongoDB, CouchDB, Riak

  • key/value store의 확장된 형태로, value에 Document라는 타입을 저장 (Document : XML, JSON, YAML 등)
  • 복잡한 데이터 구조 표현 가능
  • Document id 또는 속성값 기준으로 인덱스를 생성
  • key값의 range에 대한 효율적인 연산이 가능해지므로 이에 대한 쿼리를 제공
  • Sorting, Join, Grouping등이 가능
  • 쿼리 처리에 있어서 데이터를 파싱해서 연산해야 하므로 overhead가 key-value 모델보다 큼
  • B트리 인덱스를 사용하여 2차 인덱스를 생성 > B트리는 크기가 커질 수록 insert, delete의 성능이 떨어짐 (읽기/쓰기 비율이 7:3일 때 더 좋은 성능을 보임)
  • B트리 특성 때문에 자주 변하지 않는 정보를 저장하고 조회하는데 적합 (로그, 타임라인, 채팅로그 등)


Graph Database : Sones, AllegroGraph, neo4j

 

  • node들과 relationship들로 구성된 개념
  • key/value store방식이며 모든 노드는 끊기지 않고 연결되어 있어야함
  • relationship은 direction, type, start node, end node에 대한 속성등을 가짐

 

 

 

RDBMS와 NoSQL의 차이

 

종류

RDBMS

NoSQL

장점 - Data를 Cloumn과 Row 형태로 저장

- 데이터의 분류, 정렬, 탐색 속도가 비교적 빠름.

- SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있음.

- 작업의 완전성을 보장함.

- 데이터의 UPDATE가 빠름.
- 데이터간의 관계를 정의 하지 않기에 JOIN이 필요 없음

- 훨씬 대용량의 데이터를 저장·관리 할 수 있음.

- 데이터 저장이 비교적 자유로움.

- 많은양의 데이터를 저장 · 처리 할 수 있음 
단점 - 스키마 규격에 맞춰서 데이터를 다뤄야 함.

- 데이터 처리에 대한 부하 발생시, 처리가 어려움.
- key값에 대한 입·출력만 지원

- 스카마가 정해져 있지 않아, 데이터에대한 규격화가 되어있지 않음.

- DATA를 UPDATE하는데 비교적 느림.


 

 

 

'Tech.log > 데이터베이스' 카테고리의 다른 글

[ORM(Object Relational Mapping)]  (0) 2021.06.04
[SQL Injection]  (0) 2021.06.04
[Statement VS Prepared Statement]  (0) 2021.05.22
[트랜잭션이란?]  (0) 2021.05.22
[정규화]  (0) 2021.05.21

댓글