RDBMS와 NoSQL
차이점
RDBMS | NoSQL | |
개발 이력 | 데이터 중복 감소에 중점을 두고 1970년대에 개발됨 | 2000년대 후반에 확장에 중점을 두고 애자일 및 DevOps 방식으로 구동되는 신속한 애플리케이션 변경을 허용하도록 개발됨. |
데이터 모델 | 스키마 있음 (Schema-based) | 스키마 없음 (Schema-less) |
데이터 저장 | 행(Row)과 열(Column)이 고정된 테이블 | 문서: JSON 문서/키-값: 키-값 쌍/와이드 열: 행과 동적 열이 있는 테이블/그래프: 노드 및 가장자리 |
예 | Oracle, MySQL, Microsoft SQL Server 및 PostgreSQL | 문서: MongoDB 및 CouchDB/키-값: Redis 및 DynamoDB/와이드 컬럼: Cassandra 및 HBase/그래프: Neo4j 및 Amazon Neptune |
유연성 | X | O |
확장성 | X (수직적 확장이 쉬움) | O (수평적 확장이 쉬움) |
일관성/트랜잭션 | O (ACID 제공) | X |
쿼리 언어 | SQL | 제품마다 지원하는 언어가 다름 |
클라우드 | 클라우드 환경에 적합하지 않을 수있음 | 클라우드 환경에 적합함 |
데이터 크기 | 대용량 데이터 처리가 어려울 수있음 | 대용량 데이터 처리가 용이함 |
데이터-객체 매핑 | ORM(객체 관계형 매핑) 필요 | 대부분의 경우 ORM이 필요하지 않음. MongoDB 문서는 가장 널리 사용되는 프로그래밍 언어의 데이터 구조에 직접 매핑됨. |
조인 | 일반적으로 필수 | 일반적으로 필요하지 않음 |
1.
데이터 모델
•
RDBMS: 데이터를 정확하게 구조화하고, 데이터를 어떻게 저장할지를 미리 결정합니다. 스키마는 데이터 구조의 뼈대를 결정하며, 이를 변경하기 어려울 수 있습니다. 하지만, 이를 통해 데이터의 일관성과 정확성을 보장할 수 있습니다.
•
NoSQL: 데이터를 유연하게 저장할 수 있어서 더 큰 유연성을 가집니다. 스키마가 없거나, 자동으로 생성되어 필드를 추가하거나 수정하는 것이 용이합니다. 이를 통해 데이터를 빠르게 수정하고 적응할 수 있습니다.
2.
데이터 저장 방식
•
RDBMS: 데이터를 테이블 형식으로 저장합니다. 이는 열과 행으로 데이터를 정리하여 저장합니다. 이는 정형 데이터를 저장하기에 적합합니다.
•
NoSQL: 다양한 데이터 모델을 사용할 수 있습니다. 대표적으로, 문서(Document) 모델, 키-값(Key-Value) 모델, 그래프(Graph) 모델 등이 있습니다. 이는 비정형 데이터를 저장하기에 적합합니다.
3.
확장성
•
RDBMS: 데이터베이스가 커지면 수직적 확장(Vertical Scaling)이 필요합니다. 이는 데이터베이스 서버 자체의 성능을 높이는 것을 의미합니다. 이는 하드웨어의 한계가 존재하여 확장성이 한계가 있습니다.
•
NoSQL: 데이터베이스 서버를 분산하여 수평적 확장(Horizontal Scaling)이 가능합니다. 이는 데이터를 여러 서버에 분산하여 저장하는 것을 의미합니다. 이를 통해 대용량 데이터 처리와 수많은 요청에 대응할 수 있습니다.
4.
일관성
•
RDBMS: 데이터의 일관성을 보장하기 위해서 ACID 특성을 보장합니다. 이는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미합니다. 이를 통해 데이터의 정합성과 무결성을 보장합니다.
•
NoSQL: NoSQL 데이터베이스는 흔히 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화함으로써 조정합니다. 이로써 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량, 낮은 지연 시간을 위한 탁월한 선택이 됩니다.
용어
SQL | MongoDB |
테이블 | 컬렉션 |
행 | 도큐먼트 |
열 | 필드 |
테이블 조인 | 임베디드 도큐먼트 & 링킹 |