본문 바로가기

Back-end/Database

[Database] RDBMS vs NoSQL

RDBMS

 

RDBMS(Relational)데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스입니다.

SQL을 사용해 데이터의 저장, 질의, 수정, 삭제를 할 수 있으며 데이터를 효율적으로 보관하는 것을 목적으로 하고 구조화가 굉장히 중요합니다.

 

  • 장점: 명확한 데이터 구조를 보장하고, 중복을 피할 수 있습니다.

  • 단점: 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있으며,
    성능 향상을 위해서 서버의 성능을 향상 시켜야하는 Scale-up만을 지원합니다.
    스키마로 인해 데이터가 유연하지 못합니다.

 

 

NoSQL

 

NoSQL(Not Only SQL)RDBMS에 비해 자유로운 형태로 데이터를 저장합니다.

데이터 테이블은 그냥 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 테이블 간 Join도 불가능합니다.

또한 수평적 확장(Scale-out)을 할 수 있고 분산 처리를 지원합니다.

 

다양한 형태의 NoSQL 데이터베이스가 있고, 대표적으로 key-value store(Redis, Amazon Dynamo DB), bigtable, dynamo, document db(MongoDB), graph db 등이 있습니다.

 

  • 장점: 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있습니다.
    언제든지 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있습니다.
    데이터 분산이 용이하며 성능 향상을 위한 Scale-up 뿐만이 아닌 Scale-out 또한 가능합니다.

  • 단점데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에 수행해야 합니다.
    스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어려울 수 있습니다.

둘은 대체될 수 있는 것이 아니고, 각각 필요한 시점에 적절히 선택해서 사용해야 합니다. 둘다 같이 쓰는 상호보완적인 존재가 될 수도 있습니다.

 

* 스키마

스키마는 데이터베이스의 구조제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합입니다.

스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의합니다.