개발/잡학지식
NoSQL vs 관계형 데이터베이스
nandy
2021. 1. 20. 01:56
아래 글은 링크에 있는 글을 번역하여 요약한 글입니다.
각 요구사항에 맞춰 관계형 데이터베이스 혹은 NoSQL 중 어떤 것을 선택할 지에 대한 고민이 많을 것이다.
각 항목 별로 NoSQL 과 관계형 데이터베이스 차이를 알아보자.
Differences between SQL and NoSQL
The table below summarizes the main differences between SQL and NoSQL databases.
| SQL Databases | NoSQL Databases | |
| 데이터 저장 모델 | Row, Column 기반 테이블 | key-value 기반 json Document nodes, edge 기반 Graph |
| 개발 역사 | 1970년부터 데이터 중복을 줄이고자 사용 | Agile 과 DevOps 문화 도입에 따른 확장성 있고 빠른 Application 개발에 맞춰 사용 |
| 예시 | Oracle, MySQL, Microsoft SQL Server, and PostgreSQL | Document: MongoDB and CouchDB, Key-value: Redis and DynamoDB, Wide-column: Cassandra and HBase, Graph: Neo4j and Amazon Neptune |
| 주 목적 | 일반 목적 | Document : 예측 가능한 query 패턴에서 대용량 데이터를 사용할 경우 Graph : 연결된 데이터 간 관계를 분석할 경우 |
| 스키마 | 정적 | 동적 |
| 확장 | Scale Up(수직적 확장) | Scale Out (수평적 확장) |
| Multi-Record ACID Transactions | 지원 | 대부분 지원 X(단, MongoDB 는 지원) |
| 데이터 조인 | 대체로 필요 | 대체로 필요 X |
| 데이터 Object Mapping | ORM (object-relational mapping) 요구 | 대부분 ORM 을 요구하지 않음.. Mongo DB 에서는 Document 와 Data Structure 간 Mapping 됨 |
Q & A
그럼 NoSQL 은 단점이 없는가?
- 대부분 NoSQL Database 는 Multi Document 간 ACID(Atomicity, Consistency, Isolation, Durability) 지원하지 않음.
- 다만, 많은 Application 에서 Multi Document 간 ACID 를 요구해서 MongoDB 4점대부터는 이 내용이 포함됨.
- 데이터 중복 줄이기 보다는 쿼리 호출에 최적화되어 있어서 용량을 많이 사용한다는 것.