RDBMS vs NoSQL

ding·2024년 12월 2일

RDBMS

데이터 모델

  • 데이터를 테이블에 저장하고, 데이터는 행과 열의 형태로 구조화된다.
  • 각 테이블은 schema에 의해 정의되고, 스키마는 데이터의 구조를 엄격히 규정한다.
  • ex) MySQL, Oracle DB 등

확장성

  • 수직적 확장(Scale-up)에 적합함.
  • 더 많은 리소스(CPU, RAM)를 가진 서버로 교체하거나 업그레이드
  • 분산 시스템 지원은 제한적이며, Sharding과 같은 작업은 복잡하다.

트랜잭션

  • ACID(Atomicity, Consistency, Isolation, Durability) 특성을 엄격히 준수함.
  • 데이터 일관성이 중요한 애플리케이션에 적합하다.(예- 금융, ERP)

데이터 관계

  • 데이터 간의 관계를 관계형으로 정의
  • 데이터가 서로 강하게 연관된 경우 적합함.

쿼리 언어

  • SQL을 사용하여 데이터를 정의, 조회, 수정
  • 쿼리 표준화가 잘 되어있음

성능

  • 복잡한 쿼리와 데이터 관계 처리가 빠르지만, 대규모 데이터 처리에는 상대적으로 느릴 수 있음

NoSQL

데이터 모델

  • 데이터 모델이 유연하며, 데이터는 다양한 형식으로 저장된다.
    • 문서(Document): JSON, BSON 등(예- MongoDB)
    • 키-값(key-value): Key와 Value 쌍(예- Redis)
    • 그래프(Graph): 노드와 관계
    • Wide-Column Store: 테이블 기반이지만, 스키마가 느슨함(예- Cassandra)
  • 스키마가 없거나 동적으로 변화 가능

확장성

  • 수평적 확장(Scale-out)에 적합함.
  • 여러 서버에 데이터를 분산 저장하고, 노드를 추가하여 용량과 성능 확장
  • 클라우드 환경에서 대규모 데이터를 처리하는데 유리하다.

트랜잭션

  • 일반적으로 BASE(Basically Available, Soft state, Eventually consistent) 모델을 따름.
  • 데이터 일관성보다 가용성과 속도 중시

데이터 관계

  • 관계형 데이터 모델이 없음
  • 데이터를 비정규화상태로 저장

쿼리 언어

  • 특정 데이터베이스에 따라 쿼리 방식이 다름.

성능

  • 단순한 읽기/쓰기 작업에서 높은 성능
  • 복잡한 트랜잭션 처리에는 부적합할 수 있음

0개의 댓글