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) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의합니다.
'Back-end > Database' 카테고리의 다른 글
[Database] 정규화란? (0) | 2021.11.17 |
---|---|
[Database] 트랜잭션 격리 수준(Transaction Isolation Levels) (0) | 2021.11.17 |
[Database] 트랜잭션 ACID (0) | 2021.11.17 |
[Database] 트랜잭션이란? (0) | 2021.11.17 |
[Database] 데이터베이스에서 인덱스(Index) 를 사용하는 이유 및 장단점 (0) | 2021.11.17 |