RDBMS는 관계형 데이터 베이스 관리 시스템(Relational Database Management System)으로 RDB를 관리하는 시스템이다. RDB는 엄격한 스키마를 가진 데이블 기반의 데이터베이스로 모든 데이터를 2차원 테이블 형태로 표현하고 데이터는 고정된 행과 열로 구성된 테이블에 저장된다. 각 열에는 하나의 속성에 대한 정보가 저장되며 각 행은 고유한 키를 가지고 데이터 형식에 맞는 데이터가 저장된다. 데이터가 관계를 통해 여러 테이블에 분산되며 테이블 간의 관계를 나타내기 위해 외래키를 사용한다. 이를 이용해 Join이 가능하다는 것이 가장 큰 특징이다.
장점
1. 스키마가 정해져 있어 명확한 데이터 구조 보장
2. 데이터 무결성 보장 (중복 없음)
단점
1. 유연성이 떨어져 추후 수정이 어려움
2. join이 많을 경우 복잡한 쿼리 생성
3. 수평적 확장(Scale-out)이 어려움 (부하의 분산이 어려움)
NoSQL은 not only SQL, non-SQL으로도 불리며 전통적인 관계형 데이터베이스 구조 밖에서 유연하게 데이터 저장 및 쿼리를 가능하게 하는 비관계형 데이터베이스이다. 문서, 키-값, 그래프 등의 다양한 데이터 모델을 지원하며 유연한 스키마를 가진다. 언제든 저장된 데이터를 조정하고 새로운 필드를 추가 할 수 있다.
장점
1. 유연성 : 스키마 선언 없이 필드의 추가 및 삭제가 자유로운 구조를 가짐
2. 확장성 : 수평적 확장(Scale-out)이 가능하여 서버 확장이 용이
3. 고성능 : 대용량 데이터를 처리하는 성능이 뛰어남
4. 가용성 : 여러 대의 백업 서버 구성이 가능하여 장애 발생 시에도 무중단 서비스가 가능
단점
1. 데이터 중복이 발생할 수 있음
2. 데이터를 수정하는 경우 모든 컬렉션에서 수행해야 하기 때문에 느림
3. 명확한 데이터 구조를 보장하지 않아 일관성이 없음
RDBMS는 엄격한 스키마를 가진 테이블 기반의 데이터베이스로 데이터 무결성 보장과 명확한 데이터 구조 보장의 장점을 가지지만 유연성이 떨어지고 복잡하며 수직적 확장만 가능하다는 단점을 가진다.
NoSQL은 유연한 구조를 가지는 데이터베이스로 수평적 확장이 가능하여 서버 확장이 용이하고 대용량 데이터를 처리하는 성능이 뛰어나지만 일관성이 보장되지 않아 데이터 중복이 발생할 수 있다.