RDB의 장단점에 대해 설명해주세요.
장점
- 데이터베이스 구조 변경이 유연하다.
- ACID를 지원한다.
- 공동 작업이 가능하다.
- 보안 기능이 내장돼있다.
- 데이터베이스 정규화가 가능하다.
단점
- 기작성된 스키마를 수정하기 어렵다.
- 시스템이 커지면 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 성능 향상을 위해서는 스케일 업만을 지원해 비용이 기하급수적으로 늘어날 수 있다.
- 다른 DB에 비해 많은 자원이 활용되어 시스템 부하가 높다.
NoSQL의 장단점에 대해 설명해주세요.
장점
- 스키마가 정해져 있지 않아서 RDB에 비해 유연하고 확장성이 좋다.
- 연관관계가 없어서 조회 속도가 빠르다.
단점
- 데이터 중복이 발생할 수 있고, 중복된 데이터를 계속 업데이트해줘야 한다.
- 데이터 정합성에 맞지 않을 수 있다.
- ACID를 지원하지 않는다.
- 이를 극복하기 위해 BASE(가용성, 독립성, 일관성)를 지원한다.
RDB와 NoSQL의 차이에 대해 설명해주세요.
중요한 키워드
- 스키마
- 트랜잭션(ACID)
- 데이터 중복 허용 여부
- 확장성
- 범용성
RDB와 NoSQL를 각각 어느 상황에 사용하면 좋은지 설명해주세요.
RDB 사용이 더 좋을 때
- 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NoSQL 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
- 데이터베이스를 수평으로 확장해야 하는 경우(막대한 양의 데이터를 다뤄야 하는 경우)