본문 바로가기
Computer Science/Database

[NoSQL] NoSQL의 개념과 특징, 사례 (RDBMS와 비교)

by pilgyeong 2023. 2. 6.




1. 개념

원래는 Non-SQL 또는 Non-Relational 데이터베이스 종류를 지칭하기 위해 생긴 용어이다. 하지만, IT 업계 전반에 걸쳐 SQL의 활용도가 높기 때문에 NoSQL 데이터베이스인데도 오히려 SQL을 지원하는 경우가 많아지고 있다. 이 때문에 현재는 Not-only SQL의 의미로 쓰이는 경우도 있다.

RDBMS의 한계점을 각 NoSQL마다의 해결책을 제시하고 있어 어떤 속성을 가져야 NoSQL이다라고 지칭할 수 없다.




2. 특징

2.1 RDBMS와 비교한 장점

  1.  데이터 형식이 자유롭다. * 데이터 타입 * 데이터 길이, 크기
  2. RDBMS에서 데이터의 형식이 테이블로 정해져 있기 때문에 데이터를 Java의 객체 모델에 연결해서 표현하기 힘든 문제(Object-Relation Impedance Mismatch)를 해결할 수 있다. * Object를 표현할 수 있는 문서의 구조를 가질 수 있다.
  3. SQL 형식을 맞추지 않더라도, 전용 라이브러리나 함수 등으로 쉽게 조회할 수 있다.
  4. 용도나 목적에 맞는 DB를 선택하면 데이터 저장/조회 속도를 높일 수 있다. * RDBMS는 관계형 데이터를 범용적으로 표현할 수 있지만, 데이터가 많아지면 일정 수준 이상의 속도를 갖는 데 한계가 있다.
  5. 빅데이터 NoSQL DB의 경우, 더 많은 데이터를 저장하면서도 빠른 데이터 접근 속도를 보장할 수 있다.

 

단, NoSQL 데이터베이스 종류는 너무 많기 때문에, 위에 언급한 모든 장점을 갖는 NoSQL DB는 없다. RDBMS에서 할 수 없는 것 중에 여기 있는 장점 중 필요한 것이 있다면, 그것을 제공할 수 있는 NoSQL DB를 선택하면 된다.

2.2 RDBMS와 비교한 단점

  1. 기능이나 형식의 표준이 없다. 사용하는 DB별로 전용 라이브러리나 함수를 이용해서 각각 구현해야 한다.
    • JDBC, ODBC에서 Client를 제공하기도 하지만, NoSQL DB마다 사용하는 용도나 목적이 분명하기 때문에 RDBMS 수준으로 스펙을 모두 지켜서 제공하기 힘들다.
  2. 다른 데이터 집합(table, collection, index 등)에 대해 Foreign Key가 없거나, 있더라도 Cascading 옵션이 없기 때문에 서로 다른 집합의 데이터 사이의 관계 설정에서 정합성을 보장하지 못 한다.
  3. SQL을 지원하더라도 표준 SQL의 모든 기능을 제공하지 못한다.
  4. Transaction의 ACID 특성을 모두 제공하지 못한다. eventually consistency를 상정하고 사용해야 한다.




3. 종류

3.1 MongoDB

  • 대표적인 NoSQL DB이다.
  • 가장 범용적으로 많은 기능을 담고 있는 데이터베이스이다.
  • RDBMS의 대표 기능인 Transaction 기능이 초기에는 없었지만, 발전해오면서 단일 Collection의 Document 단위로 Atomicity와 Transaction 기능을 제공한다.
  • 빅데이터용 데이터베이스는 아니지만 Sharding으로 확장성도 제공한다.

3.2 Redis In-Memory

  • 데이터베이스의 대표 주자이다.
  • 자료구조를 먼저 정하고 사용하게 된다.
  • 싱글 스레드로 Lock을 제공하지 않으면서도 빠르게 데이터를 조회할 수 있는 장점이 있다.
  • 자료구조의 특징을 이해한 뒤에 성능에 주의해서 사용해야 한다.
  • In-Memory는 Data가 memory에 있어서 빠르지만, 전원이 꺼졌을 때 삭제 위험이 있다. 즉, 유실되어도 괜찮은 데이터에 대해서만 사용한다.

3.3 Apache HBase

  • 빅데이터용 데이터베이스의 대표 주자이다.
  • 단일 Key로만 데이터를 저장, 조회하는 것이 가장 큰 제약이자 장점이다.
  • 데이터가 아무리 많아져도 단일 Key에 대한 조회 속도는 거의 느려지지 않는다.
  • Key를 제대로 사용하는 방법을 중심으로 익혀야 한다.

3.4 Apache Druid

  • Cube형 데이터베이스의 대표 주자이다.
  • 집계 연산에 최적회 되어 있다.
  • 대용량의 데이터에 대한 합, 카운트 등의 연산을 빠르게 수행할 수 있다.
  • 단, 집계 조건에 맞춰 Cube Modeling을 미리 해둬야 한다. Cube Modeling을 위한 개념과 방법을 중심으로 익혀야 한다.