NoSQL 이란?

NoSQL 이란?

NoSQL이란 “Not only SQL"로 해석되는 비관계형 데이터베이스 전반을 가르킨다. 비관계형 데이터베이스 전반은 일반과 같이 관계형 데이터베이스를 제외한 모든 데이터베이스를 가리킨다.

non SQL, non relational 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다.

저장 방식에 따른 분류

비관계형 데이터베이스의 데이터 모델의 예로는 저장 방식에 따라 도큐먼트(Document), 키-밸류(Key-Value),그래프(Graph) 등으로 분류된다.

  • 도큐먼트(Document) DB

    • JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있다.
    • Lotus Notes에서 유래되었다.
    • MongoDB, BaseX, CoughDB가 이에 해당된다.
  • 키-밸류(Key-Value) DB

    • Key와 Value이 쌍으로 데이터가 저장되는 가장 단순힌 형태의 솔루션이다.
    • Amazon Dynamo Paper에서 유래되었다.
    • Redis, Memcached가 이에 해당된다.
  • 그래프(Graph) DB

    • Euler & Graph Theory에서 유래되었다.
    • Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있다.
    • Nen4J, OreientDB 등이 이에 해당된다.
  • Wide Columnar Store

    • Big Table DB라고도 한다.
    • Google의 BigTable Paper에서 유래되었다.
    • Key-Value에서 발전된 형태의 Column Family 데이터 모델을 사용하고 이다.
    • HBase, Cassandra ScyllaDB 등이 이에 해당된다.

RDB와 NoSQL의 차이

RDB(=관계형 데이터베이스)와 NoSQL(=비관계형 데이터베이스)의 특징을 표에 정리하면 다음과 같다.

RDB와 NoSQL 간의 차이는 데이터 구조는 물론, 데이터 무결성에 대한 의미, 스케일링에 대해서도 차이가 있다.

구분 RDB NoSQL
데이터 구조 데이터 구조를 테이블 형식으로 표현한다. 데이터 구조 표현에는 “테이블” 및 “테이블간의 연결"을 이용한다.
RDB
RDB
테이블 형식 이외의 방법으로 데이터 구조를 표현한다.
표현 방법에는 문서(XML, JSON), 키-벨류, 그래프 등이 있다.
도큐먼트(Document)
nosql-document
키-벨류
Key-Value
그래프
Graph
ACID 특성 데이터 불일치가 발생하지 않도록 엄격한 관리가 이루어진다. 결과 무결성이라고 하는 엄격한 데이터 무결성 관리가 수행되지 않는다.
속도를 우선하여 데이터에 관해서는 “결과적으로” 일관성이 가지도록 보증한다.
스케일링 수직 방향으로의 스케일링(서버 스펙의 증강)이 실시하기 쉽다. 수평 방향으로 스케일링(서버 대수의 증강)하기 쉬운 것이 특징이다.

CAP 이론

  • 일관성(Consistency)
    • 동시성 또는 동일성이라고도 한다.
    • 다중 클라이언트에서 같은 시간에 조회하는 데이터는 동일한 데이터임으 보증하는 것을 의미한다.
  • 가용성(Availability)
    • 모든 클라이언트의 읽기와 쓰기 요청에 대하여 항상 응답이 가능해야 함을 보증하는 것이다.
    • 내고장성이라도 한다.
    • 내고장성을 가진 NoSQL은 클러스터 내에서 몇 개의 노드가 망가지더라도 정상적인 서비스가 가능하다.
  • 네트워크 분할 허용성(Partition tolerance)
    • 지역적으로 분활된 네트워크 환경에서 동작하는 시스템에게 두 지역 간의 네트워크가 단절되거나 네트워크 데이터의 유실이 일어나더라도 각 지역내의 시스템은 정상적으로 동작해야 함을 의미한다.

참고 문서