-
RDBMS VS NoSQL
- 관계형 DB는 테이블로 이루어져 있고, 데이터의 종속성을 관계(relationship)로 표현하는 것을 말한다.
- 비 관계형 DB는 테이블 형식 스키마를 사용하지 않는다. 데이터의 형식을 특정 요구 사항에 맞게 최적화된 모델을 사용한다.
- NoSQL이 기존의 RDBMS와 다른 점
- 스키마가 없다. 즉, 데이터 관계와 정해진 규격이 없다.
- 관계의 정의가 없기 때문에 join이 불가능하다. 단, (reference 기능 등으로 비슷하게 구현 가능)
- 트랜잭션을 지원하지 않는다.
- scale-out을 지원한다.
- NoSQL의 장점
- join 처리가 없기 때문에, scale-out을 통한 노드 확장이 용이하다.
- 가변적 데이터 구조로 데이터를 저장할 수 있기 때문에 유연성이 높다.
- NoSQL의 단점
- 다양하고 복잡한 쿼리는 불가능하다.
- 일관성을 항상 보장할 수 없다.
- scale-up : 수직적 확장. 기존의 서버를 더 좋은 HW로 바꾸는 방법
- scale-out : 수평적 확장. 기존에 사용하던 서버 외의 서버를 추가하여 성능을 높이는 방법
- NoSQL의 CAP 이론
- (C) consistency : DB가 3개로 분산되어 있고, 1개의 DB의 데이터가 수정되면, 나머지 2개의 DB에서도 수정 내용에 대한 처리를 해야 한다.
- (A) availability : 특정 DB에 장애가 발생하더라도, 서비스가 가능해야 한다.
- (P) partitions tolerance : 분리 내구성으로, DB간 통신이 실패하더라고, 시스템은 정상 동작해야 한다.
- C, A, P 중 2가지만 만족 가능하다. (3가지 모두 만족은 불가능)