SQL (RDBMS = 관계형 DB)
- RDBMS에서 데이터를 저장, 수정, 삭제, 검색
- RDBMS의 표준화된 스키마를 사용
- 데이터는 관계를 통해 여러 테이블에 분산되며 이를 통해 데이터의 중복을 방지한다.
- 처음에 정한 스키마를 준수한 데이터만 테이블에 저장된다.
NoSQL (비관계형 DB)
- 동적인 스키마를 가지고 데이터를 저장. 이를 통해 데이터 모델의 유연성을 제공한다.
- 대용량의 데이터 처리를 위해 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있다.
- 읽기와 쓰기 작업이 빠르다.
- key-value store, bigtable, document db, graph db 등 다양한 데이터 모델을 지원한다.
- 저장방식에 따른 분류
- Key-Value Model : Redis
- Document Model : MongoDB
- Column Model : HBase
SQL vs NoSQL
SQL
- 장점
- 명확한 데이터의 구조를 보장하며, 데이터의 중복이 없다.
- ACID를 준수하여 데이터 일관성과 트랜잭션 유효성을 보장한다.
- 단점
- 데이터 중복을 피하기 위해 데이터 정규화를 수행한다. 그러나 많은 테이블 간의 조인이 필요하므로 데이터 검색과 조작에 시간이 소요될 수 있다.
- 스키마를 미리 정의해야 하며, 변경이 어렵고 비용이 많이 든다.
- DB의 확장에 비용과 시간이 많이 들어간다.
NoSQL
- 장점
- 수평적으로 확장이 가능하다. 데이터의 양이 증가해도 sharding 이나 클러스터링(cluster) 등을 통해 시스템을 쉽게 확장할 수 있다.
- 스키마가 유연하다. 데이터의 구조를 사전에 정의할 필요가 없으므로 데이터 스키마 변경이 간단하고 쉽다.
- 데이터를 효율적으로 분산하여 저장하고, 데이터베이스 자체적으로 데이터의 일관성을 제어하지 않기 때문에 데이터 처리 속도가 빠르다.
- 비정형 데이터, 그래프 데이터, 시계열 데이터 등과 같이 다양한 유형의 데이터를 처리할 수 있다.
- 단점
- 일관성보다는 성능과 가용성을 우선시하기 때문에 ACID를 보장하지 않는 경우가 많다.
- 모든 쿼리 기능을 제공하지 않는 경우가 있어 복잡한 조인과 관련된 작업은 어려울 수 있다.
- 데이터 중복성을 허용하는 경우가 많다.
SQL 사용이 더 좋을 때
- 정형화된 데이터, 즉 구조화된 테이블 형태의 데이터를 다룰 때 ex) 고객 정보, 주문 내역, 재고 관리 등과 같이 일관된 구조를 가지는 데이터
- 복잡한 쿼리와 조인 작업이 필요할 때
- ACID를 충족하는 것이 중요할 때 ex) 금융 시스템이나 온라인 거래 처리와 같이 데이터 일관성과 신뢰성이 매우 중요한 시스템
NoSQL 사용이 더 좋을 때
- 비정형 데이터나 반정형 데이터를 다룰 때 ex) 소셜 미디어의 게시글, 로그 데이터, 센서 데이터 등과 같이 데이터 구조가 자주 변경되거나 유연한 스키마가 필요한 경우
- 대규모 데이터의 처리와 확장이 필요한 경우 (수평적 확장)
- 대량의 데이터를 실시간으로 처리해야 하는 경우 ex) 실시간 분석, 실시간 대시보드 등
'Computer Science > Database' 카테고리의 다른 글
[Database] 정규화 (Normalization) (0) | 2023.07.07 |
---|---|
[Database] 인덱스 (Index) (0) | 2023.06.30 |
[Database] 이상 현상 (Anomaly) (0) | 2023.06.30 |
[Database] SQL Injection (0) | 2023.06.23 |
[Database] 조인(Join) (0) | 2023.06.23 |