NoSQL의 의의

NoSQL의 등장 배경

RDB는 오랜시간 대표적인 DBMS의 자리를 지켜왔다. 그러나 소셜서비스의 규모가 커짐에 따라 비정형 데이터를 이용하고자 하는 빅데이터 개념과 인프라 에코시스템도 클라우드 컴퓨팅의 바람이 불어오면서 기존의 RDB가 가진 단점들이 부각되기 시작했다. RDB를 유지하면서 스케일업 하는것은 한계가 있기 때문이다.

시대적 흐름이 NoSQL의 등장을 이끌었다. RDB의 특징인 ACID 일부를 포기 하고 스키마를 없앴다. 이로인해 비정형 데이터를 신속하게 저장하고 처리하는데 적합했다. 정합성을 포기하며 분산 처리로 인해 뛰어난 확장성 또한 장점이 된다.

RDB vs NoSQL??

NoSQL과 RDB는 경쟁하지 않는다. 위에서 설명한대로 사용 목적이 다르기 때문이다. 빅데이터 시대에도 여전히 정합성과 일관성을 필요로 하는 시스템이 있다. RDB는 쿼리로 데이터를 비교적 쉽게 정제할 수 있지만, NoSQL의 비정형 데이터를 분석하기 위해서는 별도의 마이닝 작업으로 데이터가 가진 의미를 분석해야하는 과정이 필요하다. 분석이 정확하지 않으면 데이터가 가진 의미 또한 제대로 알 수 없는것이다. 물론 NoSQL도 일종의 약속을 가지고 스키마 형태를 유지할 수 있다.

구분RDBNoSQL
처리 데이터정형 데이터정형 데이터, 비정형 데이터
대용량 데이터대용량 처리시 성능 저하대용량 처리 지원
스키마생성시 미리 정의구조에서 자유로움
트랜잭션트랜잭션을 통해 일관성 보장트랜잭션이 없음
검색 기능복잡한 조건을 지원단순 데이터 검색만 지원
확장성분산환경에 적합하지 않음분산환경에 적합

대표적인 NoSQL DBMS

Key-value DB

  • 가장 단순한 형태의 NoSQL로 K-V 형태로 데이터가 저장된다.
  • 키를 이용한 검색은 매우 빠르지만 조건을 이용한 쿼리가 필요하면 어플리케이션에서 처리해야한다.
  • Redis, DynamoDB

Documents DB

  • K-V 모델에서 확장된 것으로 K와 Document의 쌍으로 데이터를 저장한다. 쉽게 생각해서 파이썬의 Dictionary 타입이나 JSON 포맷을 생각하면 된다.
  • 키를 이용한 탐색은 물론이고 조건을 사용한 Documents 내의 쿼리도 가능하다.
  • MongoDB

Column DB

  • Column 패밀리와 K의 쌍으로 데이터를 저장한다.
  • Column 패밀리 : 관련있는 column값들로 구성된다.
  • RDB처럼 테이블 구조로 만들 수도 있지만 각 레코드마다 다른 column을 가질 수 있는것이 특징이다.
  • HBase, Cassandra

Graphs DB

  • 구조를 가진 데이터들끼리의 관계를 표현한다.
  • 각데이터에 directed edge를 관계로 가진다. 쿼리를 날리면 그래프를 순회하는 형태로 처리한다.
  • 트랜잭션이 있고 ACID를 지원한다. 그러므로 분산환경에 적합하지 않다.
  • 연관데이터, 친구찾기 등에서 효율적으로 처리한다.
  • Neo4j, OrientDB