[DB] NoSQL - 정의, 특징, 장단점, 종류

Benjamin·2022년 8월 25일
0

DB

목록 보기
6/8

NoSQL?

  • Not Only SQL
  • 비관계형 데이터베이스
  • 관계형 데이터 모델을 지양하며, 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며, 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소
  • 관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태

    SQL?
    -데이터가 고정된 열과 행을 가지고 있는 테이블에 저장되는 관계형 데이터베이스와 상호 작용할 때 사용하는 것.
    -관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

특징

  1. RDBMS와 달리 데이터 간 관계 정의하지 않는다.
    -> JOIN연산 불가능
  2. RDBMS에 비해 대용량 데이터 저장 가능.
    -> 페타바이트 급의 대용량 데이터 저장 가능
  3. 분산형 구조
    -> 여러 곳 서버에 데이터를 분산 저장해 특정 서버에 장애가 발생했을 때에도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 함
  4. 고정되지 않은 테이블 스키마를 갖는다.
    -> RDBMS와 달리 테이블의 스키마가 유동적이라, 데이터를 저장하는 칼럼이 각기 다른 이름과 데이터 타입을 갖는것이 허용됨

장점

  • RBMS에 비해 저렴한 비용으로 분산처리와 병렬처리 가능
  • 비정형 데이터 구조 설계로 설계 비용 감소
  • Big Data 처리에 효과적
  • 가변적인 구조로 데이터 저장이 가능
  • 데이터 모델의 유연한 변화가 가능

단점

  • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  • 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
  • 데이터 일관성이 항상 보장되지 않음

종류

1. Key-Value DB

key-value가 하나의 묶음으로 저장되는 기본적인 패턴
속도가 빠르고, 분산 저장 시 용이
Key안에 (COLUMN, VALUE)형태의 COLUMN FAMILIES를 갖는다.
주로 SERVER CONFIG, SESSION CLUSTERING 등에 사용된다.
액세스 속도는 빠르지만 SCAN에 용이하지 않다.

2. Wide-Column DB

행마다 키와 해당 값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있다.
대량의 데이터 압축, 분산처리, 집계쿼리(SUM, COUNT, AVG ...) 및 쿼리 동작 속도 그리고 확장성이 뛰어난 것이 특징이다.

3. Document DB

테이블의 스키마가 유동적, 즉 레코드마다 각각 다른 스키마를 가질 수 있다.
보통 XML, JSON과 같은 DOCUMENT를 이용해 레코드를 저장한다.
트리형 구조로 레코드를 저장하거나 검색하는데 효과적이다.

Graph DB

데이터를 노드(그림의 원)로 표현하며 노드 사이의 관계를 엣지(그림의 화살표)로 표현한다.
일반적으로 RDBMS보다 성능이 좋고 유연하며 유지보수에 용이하다.
Social networks, Network diagrams등에 사용할 수 있다.


CAP

분산형 구조는 일관성(Consistency), 가용성(Availability), 분산 허용(Partitioning Tolerance)의 3가지 특징을 가지고 있다.
CAP 이론은 이 중 2가지만 만족할 수 있다는 이론이다.
NoSQL은 대부분 이 CAP 이론을 따르고 있다.

  • 일관성(Consistency) : 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다. (데이터 복제 중에 쿼리가 되는 일관성을 제공하지 않는 시스템의 경우 다른 데이터 값이 쿼리될 수 있다.)
  • 가용성(Availability) : 클러스터링된 노드 중 하나 이상의 노드가 실패(Fail)라도 정상적으로 요청을 처리할 수 있는 기능을 제공한다.
  • 분산 허용(Partition Tolerance): 클러스터링 노드 간에 통신하는 네트워크가 장애가 나더라도 정상적으로 서비스를 수행한다. 노드 간 물리적으로 전혀 다른 네트워크공간에 위치도 가능하다.

일반적으로 RDBMS는 일관성과 가용성을 만족한다.
NoSQL은 가용성과 분산허용을 만족하는 제품군과 일관성과 분산허용을 만족하는 제품군으로 나눌 수 있다.

참고 사이트
https://www.mongodb.com/ko-kr/nosql-explained
https://code-lab1.tistory.com/53

0개의 댓글