본문 바로가기

데이터베이스

RDB vs NoSQL

- RDB와 NoSQL은 현대 데이터베이스 두 가지 축입니다. 그리고 프로젝트를 진행할 때, 둘 중 적합한 데이터베이스를 선택할 수 있어야 합니다. 따라서 RDB와 NoSQL 각각의 특징과 장단점에 대해 잘 알아둬야 합니다.

 

 

  RDB와 NoSQL은 크게 5가지 기준으로 비교될 수 있습니다. 

  그것은 1) 스키마의 유연성  2) 데이터 구조 3) Scaling 4) ACID 트랜잭션 여부 5) Join 연산입니다.

  각각에 대해서 좀 더 자세하게 살펴보겠습니다. 

 

  1) 스키마의 유연성

   - RDB는 고정되고 미리 선언되어야 하는 스키마를 갖고 있습니다. 

     반면, NoSQL은 스키마를 미리 선언할 필요가 없으며, 유연한 스키마를 갖고 있습니다. 

     NoSQL은 유연한 스키마로 인해 비정형화된 데이터를 저장하는데 유리합니다.

     비정형화된 데이터는 대표적으로 이메일 메시지, 비디오, 사진과 같은 멀티미디어 데이터가 있습니다. 

 

  2) 데이터 구조

   - RDB는 기본적으로 테이블이라는 데이터 구조를 사용합니다.  

     반면, NoSQL은 다양한 데이터 구조를 사용하는데,

     그것에는 Document-based(MongoDB), Key-value(Redis), Graph Database, Wide-column based 등이 있습니다.   

 

  3) Scaling

  - RDB는 고정된 스키마로 인해서, 수직적 확장(Vertical Scaling)에 유리합니다. 

    반면, NoSQL은 스키마가 유연하고 Join 쿼리를 필요로 하지 않으므로,

    수평적 확장(Horizontal Scaling)에 유리합니다. 

※ 수직적 확장(Vertical Scaling)이란?

- 수직적 확장이란 하나의 서버에 고사양 자원(더 좋은 CPU, 더 좋은 RAM)을 추가하는 것을 의미합니다 .

  수직적 확장은 다른 표현으로 스케일 업(Scale up)이라고도 합니다.   

 

※수평적 확장(Horizontal Scaling)이란?

- 수평적 확장이란 더 많은 서버를 추가하여 성능을 개선하는 것을 의미합니다. 

  수평적 확장은 다른 표현으로 스케일 아웃(Scale out)이라고도 합니다. 

 

4) 트랜잭션

   - RDB는 기본적으로 트랜잭션을 지원합니다.

     반면, NoSQL은 일반적으로 트랜잭션을 지원하지 않습니다. 

     따라서 은행 앱, 온라인 예약 시스템과 같이 데이터의 정합성이 중요한 서비스의 경우 

     RDB를 사용하는 것이 좋습니다. 

 

 5) Join 쿼리

  - RDB는 여러 테이블을 Join하는 쿼리를 지원합니다.

    반면, NoSQL은 일반적으로 Join 쿼리를 지원하지 않고,

    Join 연산이 필요 없으므로 검색 속도가 RDB에 비해 빠릅니다. 

    따라서 NoSQL은 아주 낮은 응답 지연시간(latency)가 요구되거나, 많은 검색이 필요한 서비스에 적합합니다. 

 

참고

기출로 대비하는 개발자 전공 면접

https://www.mongodb.com/scale/nosql-vs-relational-databases  

https://www.mongodb.com/nosql-explained/nosql-vs-sql  

https://ud803.github.io/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/2021/11/16/RDB-vs.-NoSQL-%EC%96%B8%EC%A0%9C-%EB%88%84%EA%B5%AC%EB%A5%BC-%EC%8D%A8%EC%95%BC%ED%95%A0%EA%B9%8C/

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

Inner Join vs Outer Join  (0) 2022.08.01
데이터베이스 기본  (0) 2022.08.01
데이터베이스 Key  (0) 2022.08.01