반응형
RDB(Relational Database)와 NoSQL은 데이터베이스의 유형으로, 서로 다른 방식으로 데이터를 저장하고 관리합니다. 아래는 두 시스템의 주요 차이점입니다.
데이터 모델
- RDB (Relational Database)
- 데이터를 테이블(행과 열) 형태로 저장합니다.
- 각 테이블 간에는 관계(Relationship)를 정의할 수 있습니다.
- 스키마가 고정되어 있으며, 데이터를 저장하기 전에 설계된 스키마를 따라야 합니다.
- 예: MySQL, PostgreSQL, Oracle DB
- NoSQL (Not Only SQL)
- 다양한 데이터 모델을 지원합니다:
- 키-값(Key-Value): Redis, DynamoDB
- 도큐먼트(Document): MongoDB, CouchDB
- 컬럼(Column-Family): Cassandra, HBase
- 그래프(Graph): Neo4j
- 스키마가 유연하며, 데이터의 구조가 미리 정해져 있지 않아 다양한 형식의 데이터를 저장할 수 있습니다.
- 다양한 데이터 모델을 지원합니다:
스키마
- RDB:
- 고정된 스키마를 사용하며, 데이터가 스키마에 맞아야 저장됩니다.
- 스키마를 변경하려면 구조적인 마이그레이션이 필요합니다.
- NoSQL:
- 유연한 스키마를 지원합니다.
- 데이터 구조가 변경되더라도 데이터베이스 자체의 구조 변경이 필요 없습니다.
확장성
- RDB:
- 수직 확장(서버의 성능 업그레이드)을 주로 지원합니다.
- 수평 확장(샤딩 등)은 상대적으로 구현이 어렵습니다.
- MySQL과 PostgreSQL은 샤딩을 직접 지원하기보다는 확장 도구나 프록시 계층을 활용하여 샤딩을 구현하는 경우가 많습니다. PostgreSQL의 경우, Citus와 같은 확장 도구가 샤딩을 보다 자연스럽게 지원하며, MySQL은 Vitess 같은 프록시 도구를 통해 샤딩을 구현하는 것이 일반적입니다.
- NoSQL:
- 수평 확장에 최적화되어 있어 서버를 쉽게 추가하여 성능과 용량을 확장할 수 있습니다.
ACID vs BASE
- RDB:
- ACID(Atomicity, Consistency, Isolation, Durability) 속성을 보장합니다.
- 데이터의 일관성과 무결성이 중요한 시스템(예: 금융, ERP)에 적합합니다.
- NoSQL:
- BASE(Basically Available, Soft-state, Eventually consistent) 속성을 따릅니다.
- 데이터 일관성보다는 가용성과 성능을 우선시하는 시스템(예: 소셜 네트워크, 로그 분석)에 적합합니다.
쿼리 언어
- RDB:
- SQL(Structured Query Language)를 사용합니다.
- 표준화된 언어로 강력하고 복잡한 쿼리를 작성할 수 있습니다.
- NoSQL:
- 데이터베이스 유형에 따라 전용 API나 언어를 사용합니다.
- SQL처럼 표준화된 쿼리 언어는 없습니다.
사용 사례
- RDB:
- 관계형 데이터 모델이 적합한 경우
- 데이터의 무결성과 복잡한 쿼리가 중요한 경우
- 예: 금융 시스템, ERP, CRM
- NoSQL:
- 비정형 또는 반정형 데이터를 처리해야 하는 경우
- 빠른 읽기/쓰기와 확장성이 중요한 경우
- 예: 소셜 미디어, IoT 데이터, 실시간 분석
반응형
'IT > 데이터베이스' 카테고리의 다른 글
[데이터베이스] RDB(Relational Database)에서 수평 확장(샤딩)이 어려운 이유 (1) | 2024.11.20 |
---|