데이터베이스

RDB와 NoSQL의 차이에 대해 설명해 주세요.

승무_ 2023. 6. 23. 11:20

RDB

RDB는 관계형 데이터베이스를 뜻하는 말입니다. 테이블 형태로 이루어져 있으며, SQL을 통해 데이터를 삽입, 삭제, 수정을 합니다. 그리고 테이블에 제약조건을 설정하여 데이터의 무결성, 일관성을 보장합니다.

 

NoSQL

NoSQL(Not Only SQL)은 관계형 데이터베이스가 갖는 테이블 형태의 스키마에 얽매이지 않고 자유롭게 데이터를 저장하고 조회할 수 있는 비관계형 데이터베이스입니다. NoSQL은 스키마를 엄격하게 정의하지 않기 때문에 필요에 따라 구조를 동적으로 변경할 수 있어 데이터 모델의 유연성을 제공합니다.

 

RDB와 NoSQL 차이

크게 데이터 모델, 스키마, 트랜잭션에서의 차이가 있습니다. 

먼저 RDB의 데이터 모델 같은 경우 테이블 형식으로 정해져 있는 반면 NoSQL은 key-value, graph 등 다양한 데이터 모델을 가지고 있습니다. 그리고 스키마 같은 경우, RDB는 사전에 정의한 제약조건을 지켜야 하는 반면 NoSQL은 데이터의 구조나 제약조건을 동적으로 변경할 수 있어 스키마가 느슨하게 정의 됩니다. 마지막으로 RDB는 트랜잭션을 지원하는 반면 NoSQL은 트랜잭션을 지원하지 않아 안전성, 일관성이 떨어집니다.

 

  • RDB의 단점
더보기

1. 모델의 유연성이 낮아 새로운 기능을 추가할 때, 스키마를 변경해야하고 기존의 데이터가 많은 경우 컬럼을 추가하는 것이 서버에 악영향을 끼칠 수 있습니다.

2. 과도한 정규화로 인해 join연산이 많아지면 서버에 악영향을 끼칠 수 있습니다.

3. 서버가 많아지고 테이블이 복잡한 경우, 데이터들이 다 흩어져 있어 join연산을 할때 접근 복잡성이 높아지기 때문에 scale-out이 어렵습니다.

  • NoSQL의 강점과, 약점이 무엇인가요?
더보기

NoSQL의 강점은 스키마를 엄격하게 정의하지 않기 때문에 필요에 따라 구조를 동적으로 변경할 수 있어 데이터 모델의 유연성을 제공할 수 있다는 것이고 단점은 트랜잭션을 지원하지 않아 데이터의 안전성, 일관성이 보장 안되는 것입니다.

  • RDB의 어떠한 특징 때문에 NoSQL에 비해 부하가 많이 걸릴 수 있을까요?
더보기

RDB는 사전에 정의한 제약조건을 지켜야 하기 때문에, 삽입, 수정, 삭제 시 제약조건 검사를 한번 거치므로 NoSQL에 비해 부하가 더 걸릴 수 있습니다. 그리고 RDB는 트랜잭션을 지원하기 때문에 트랜잭션 로그 기록, 롤백 및 복구, 동시성 제어 등 추가 작업을 진행해야 하므로 동시에 많은 트랜잭션이 발생하는 경우 부하가 걸릴 수 있습니다.

 

동시성 제어 - 2개 이상의 트랜잭션이 하나의 데이터에 동시에 접근 못하도록 제어하는 것
  • NoSQL을 활용한 경험이 있나요? 있다면, 왜 RDB를 선택하지 않고 해당 DB를 선택했는지 설명해 주세요.
더보기

RDB대신 MongoDB를 사용해 본 경험이 있습니다. 프로젝트 특성상 대량의 데이터를 처리를 처리했어야 했는데 MongoDB가 수평적 확장을 지원하며 데이터 분산처리가 가능하여 프로젝트 상황에 적합하여 사용하였습니다.

 

'데이터베이스' 카테고리의 다른 글

Transaction  (0) 2023.07.06
DB구조 & 설계  (0) 2023.07.04
Key (기본키, 후보키, 슈퍼키 등등...) 에 대해 설명해 주세요.  (0) 2023.06.19
면접 준비  (0) 2023.04.21
NoSQL  (0) 2023.04.10