데이터베이스

RDBMS vs NoSQL

dev-rootable 2024. 3. 29. 21:05

출처:https://www.whatap.io/ko/blog/173/?gad_source=1&gclid=Cj0KCQjwzZmwBhD8ARIsAH4v1gVD4icOQVu4p5OeCXZka0a811IFD8f_1apxc_A_rWT7_g6g24keJ30aAmuJEALw_wcB

 

📌 RDBMS(관계형 데이터베이스) 란?

 

ACID를 보장하는 스키마에 복종적인 데이터베이스

 

고정된 행(row)과 열(column)로 구성된 테이블에 데이터를 저장한다. 각 열은 속성을 의미하고, 각 행은 여러 속성을 가진 데이터를 의미한다.

 

핵심적인 특징은 데이터가 정해진 스키마에 따라 테이블에 저장된다는 점과 모든 데이터는 테이블에 분산 저장되어 관계
맺는다는 것이다. 그래서 테이블의 구조와 데이터 타입 등을 사전에 정의해야 하고, 테이블에 정의된 내용에 알맞은 형태의
데이터만 삽입할 수 있다.

 

✅ 장점

 

  1. 명확한 스키마가 정의되어 있다.
  2. 데이터 무결성 및 ACID 보장
  3. 데이터 변경에 견고함
  4. 데이터를 중복 저장하지 않음

 

✅ 단점

 

  1. 수정이 어려운 데이터 스키마
  2. 관계로 인한 복잡한 쿼리문
  3. 대체로 수직적 확장만 가능
    • 수직적 확장은 CPU 부담이 커져 성능에 불리

 

📌 NoSQL(비관계형 데이터베이스) 란?

 

ACID를 보장하지 않는 스키마에 자유로운 데이터베이스

 

관계형 데이터베이스를 제외한 나머지 유형을 비관계형 데이터베이스, 이를 NoSQL이라고 부른다.

 

NoSQL 데이터베이스는 데이터 유형에 따라 데이터 저장 형식을 선택할 수 있다. 주요 유형으로는 문서, 키 값, 와이드 컬럼, 그래프 등이 있다. 그리고 유연한 스키마를 제공하여 스키마의 수정이 자유롭고, 스키마가 없는 경우도 있다. 가장 큰 특징은
확장성인데, 수직뿐만 아니라 수평 확장도 가능하기 때문에 대량의 데이터와 높은 사용자 부하가 있는 환경에서 유리하다.

 

✅ 장점

 

  1. 언제든지 스키마를 수정할 수 있다.
  2. 데이터는 애플리케이션이 필요로 하는 형식으로 저장되기 때문에 데이터를 읽어오는 속도가 빨라진다.
  3. 수직 및 수평 확장이 가능하여 애플리케이션이 발생시키는 모든 읽기와 쓰기 요청 처리가 가능하다.

 

✅ 단점

 

  1. 부실한 데이터 구조 결정을 야기하기도 한다.
  2. 데이터 중복을 계속 처리해야 한다.
  3. 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정이 필요한 경우 모든 컬렉션에서 수행해야 한다.

 

📌 RDBMS vs NoSQL (사용자)

 

🔍 데이터 저장

 

RDBMSSQL 언어를 통해 테이블이라는 저장 형식으로만 저장한다. 또한, 사전에 정의된 스키마 형식에 따라
데이터를 저장한다.

 

NoSQL의 경우 key-value, document, wide-column, graph 등 다양한 저장 형식에 맞게 데이터를 저장한다.

 

🔍 스키마

 

💡 스키마(Schema)

데이터베이스 전체 또는 일부의 논리적인 구조를 표현하는 것
데이터베이스의 설계도

 

RDBMS는 데이터 스키마를 변경할 수는 있지만, 데이터베이스 전체를 수정하거나 오프라인으로 전환해야 할 수도 있어 신중하게 스키마를 작성할 필요가 있다.

 

NoSQL에서는 유연하게 스키마를 관리할 수 있다. 속성 추가 및 데이터 NULL 처리 등이 자유롭다.

 

🔍 쿼리

 

RDBMS는 테이블의 형식과 테이블 간의 관계에 맞춰 데이터를 요청해야 한다. 이처럼 요청하는 방식이 정해져 있기 때문에 SQL 언어와 같은 구조화된 언어를 사용하는 것이다.

 

NoSQL의 쿼리는 그룹 자체를 조회하는 것에 초점을 두고 있기 때문에 구조화되지 않은 쿼리 언어로도 데이터를 요청할 수 있다. 이를 UnQL이라고도 부른다.

 

🔍 확장성

 

RDBMS수직적 확장만 가능하다. 이는 높은 메모리와 CPU 사용이 동반된다. 데이터베이스가 구축된 하드웨어의 성능을
많이 이용하므로 비용이 비싼 편이며, 여러 개의 서버에 걸쳐서 데이터베이스의 관계를 정의할 수 있지만 매우 복잡하고 시간이 오래 걸리는 것이 단점이다.

 

NoSQL수직 및 수평 확장이 가능하다. NoSQL 데이터베이스를 위한 서버를 추가로 구축하게 되면 많은 트래픽을 편리하게 처리할 수 있다는 장점이 있다. SQL보다 저렴한 범용 하드웨어나 클라우드 기반의 인스턴스에 NoSQL 데이터베이스를 호스팅 할 수 있어 상대적으로 비용이 저렴한 것이 장점이다.

 

📌 RDBMS vs NoSQL (애플리케이션)

 

RDBMS 와 NoSQL 은 어떤 애플리케이션에 적합할지 비교해 보자.

 

🚖 RDBMS

 

  • 데이터베이스의 ACID 성질을 준수해야 하는 애플리케이션
  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션
  • 변경될 여지가 없고 명확한 스키마가 중요한 애플리케이션

 

🚖 NoSQL

 

  • 정확한 데이터의 구조를 알 수 없거나 변경, 확장될 가능성이 있는 애플리케이션
  • 데이터 변경이 적은 애플리케이션
  • 대용량 데이터를 위해 데이터베이스를 수평 확장해야 하는 애플리케이션

 

Reference:

 

https://www.whatap.io/ko/blog/173/?gad_source=1&gclid=Cj0KCQjwzZmwBhD8ARIsAH4v1gVD4icOQVu4p5OeCXZka0a811IFD8f_1apxc_A_rWT7_g6g24keJ30aAmuJEALw_wcB

 

RDBMS와 NoSQL의 차이

RDBMS와 NoSQL database는 어떻게 다르고, 어떻게 써야 할까요?

www.whatap.io