2008년 쯤부터 빅데이터의 등장으로 데이터와 트래픽이 증가함에 따라 RDBMS의 단점을 보완하고, 데이터의 일관성을 포기하되 여러대의 데이터에 분산하여 저장하는 수평적 확장성, Scale-Out 을 목표로 등장
NoSQL 특징
Key-Value Database
Key-Value가 쌍으로 저장된다. 어떠한 데이터도 담을수 있고 속도가 빠르다.
Riak, Amazon Dynamo DB 가 예로 있다.
Document Database
객체지향에서의 객체와 유사하며, 계층적인 형태인 Document로 저장된다.
객체를 Document의 형태로 바로 저장가능 하기 때문에 매핑이 필요하지 않는다.
SQL과 뭐리가 달라 사용이 번거롭다.
MongoDB, CouthDB 가 예로 있다.
Wide Column Database
학습 필요
NoSQL Column-family Model로는 HBase, Hypertable 가 예로 있다.
Graph Database
그래프 구조를 사용하여 데이터를 표현하고 저장하는 데이터베이스
Neo4J 가 예로 있다.
RDB, NoSQL 장단점
RDB
장점
정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 데이터 구조 보장
데이터의 중복없이 한번만 저장이 가능하다
단점
테이블간 관계가 맺혀있기 때문에 시스템의 크기가 커질 경우 쿼리문이 복잡해질 수 있다.
성능향상을 위해선 수직적 확장성에 의존된다. 비용이 증가된다.
데이터가 유연하지 못하고, 변경시 번거롭다.
NoSQL
장점
자유로운 데이터구조, 수정 및 추가가 유연하다
데이터 분산 용이, Saclue-up, Scale-out 이 가능하다.
단점
데이터의 중복이 발생된다. 중복된 데이터가 변경될 경우 모든 컬렉션에서 수정을 해야한다.
명확한 데이터의 구조를 보장하지 않기 때문에 데이터의 구조 결정이 어렵다.
RDB, NoSQL 언제 사용해야 할까?
RDB의 경우 데이터의 구조가 명확하고 변경될 여지가 없을때 사용하는 것이 좋다. 또한 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템이 적합하다.
NoSQL의 경우에는 정확한 데이터의 구조를 알 수 없고 변경 또는 확장이 될 수 있는 가능성이 있을때 사용하느 것이 좋다. 또한 중복데이터가 발생할 수 있는 단점이 있기 때문에 update가 많이 이루어지지 않는 시스템에 적용하는 것이 적합하다. 앞서 이야기 했었던 Scale-Out이 가능하기 때문에 이러한 장점을 사용해서 많은 데이터를 저장해야 할 때 사용할수 있기 때문에 수평적 확장성이 가능한 시스템에 적용하는 것이 좋다.
RDB
NoSQL
NoSQL 특징
Key-Value Database
Key-Value
가 쌍으로 저장된다. 어떠한 데이터도 담을수 있고 속도가 빠르다.Document Database
Wide Column Database
학습 필요Graph Database
RDB, NoSQL 장단점
RDB
장점
단점
NoSQL
장점
단점
RDB, NoSQL 언제 사용해야 할까?
RDB
의 경우 데이터의 구조가 명확하고 변경될 여지가 없을때 사용하는 것이 좋다. 또한 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템이 적합하다.NoSQL
의 경우에는 정확한 데이터의 구조를 알 수 없고 변경 또는 확장이 될 수 있는 가능성이 있을때 사용하느 것이 좋다. 또한 중복데이터가 발생할 수 있는 단점이 있기 때문에 update가 많이 이루어지지 않는 시스템에 적용하는 것이 적합하다. 앞서 이야기 했었던 Scale-Out이 가능하기 때문에 이러한 장점을 사용해서 많은 데이터를 저장해야 할 때 사용할수 있기 때문에 수평적 확장성이 가능한 시스템에 적용하는 것이 좋다.