RDBMS 와 NoSQL
RDBMS : 2차원 테이블 형태로 표현한 데이터베이스를 생성하고 저장, 관리하는 시스템
NoSQL : RDBMS와 달리 고정된 스키마가 없고 테이블 간의 관계를 설정하지 않아 좀 더 자유롭게 데이터를 관리할 수 있음
> RDBMS(Relational DataBase Management System)
- 관계형 데이터베이스 관리 시스템
- 모든 데이터를 2차원 테이블로 표현
- 관계를 맺은 테이블의 집합
- 대표적으로 MySQL, ORACLE 등이 있음
| 관계형 데이터베이스
- 관계형 데이터 모델에 기초를 둔 데이터베이스
- 관계형 데이터 모델 : 데이터를 구성하는 방법 중 하나로 모든 데이터를 2차원 테이블 형태로 표현하는 것
| RDBMS 장점
- 만들고 이용하기 쉽고, 확장이 용이
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 스키마에 맞춰 데이터를 관리해서 데이터의 정합성 보장
- 데이터의 UPDATE가 빠름
- 구조화된 언어인 SQL로 데이터를 다룰 수 있음
| RDBMS 단점
- 스키마로 인해 데이터가 유연하지 못함
- 테이블 간 관계를 맺으므로 Join을 사용할 경우 쿼리문이 복잡해짐
- 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며 Scale-out이 어려움(Scale-Up만 가능)
| RDBMS 언제 사용해야 할까?
- 데이터 구조가 명확하고, 변경 될 여지가 없는 스키마일 경우 좋음
- 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어질 때 좋음
> NoSQL(Not Only SQL)
- RDBMS와 달리 테이블 간 관계를 설정하지 않음
- RDBMS에 비해 대용량 데이터를 저장할 수 있음
- 분산형 구조로 여러 곳의 서버에 데이터를 분산해 특정 서버에 장애가 발생해도 데이터 유실이나 서비스 중지가 발생하지 않음
- 고정된 스키마가 없음, 컬렉션이라는 형태로 데이터를 관리
- 대표적으로 mongoDB, redis 등이 있음
| RDBMS의 한계를 극복하기 위해 사용하는 NoSQL
- RDBMS 방식으로 처리할 수 없을 만큼 복잡하고 큰 데이터들의 등장과 SNS와 같은 빠른 처리속도를 요구하는 서비스가 등장하면서 NoSQL이 부각됨
| NoSQL 장점
- RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
- 비정형 데이터 구조 설계로 설계 비용 감소
- Big Data 처리에 효과적
- 가변적인 구조로 데이터 저장 가능
- 데이터 모델의 유연한 변화 가능
| NoSQL 단점
- 데이터 업데이트 중에 장애가 발생하면 데이터 유실이 발생 가능
- 많은 인덱스를 사용하려면 충분한 메모리 필요
- 데이터 일관성이 항상 보장되지 않음
| NoSQL 언제 사용해야 할까?
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우 사용하기 좋음
- 중복된 데이터가 많은 경우 Update가 많이 이루어지지 않는 시스템에 좋음
- Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야할 경우 적합, DB를 Scale-out 해야되는 시스템에 적합
참고