RDBMS vs NoSQL

김민규·2023년 12월 12일
0
post-thumbnail

DBMS란?

Database Management System의 약자로 데이터베이스를 관리하고 운영하는 소프트웨어를 말한다.

다양한 데이터가 저장된 데이터베이스는 여러 사용자 혹은 응용 프로그램에 데이터를 공유해야 하고 동시에 접근할 수 있어야 한다. 이를 가능하게 해 주는 것이 DBMS의 역할이다.

RDBMS

  • 정해진 스키마를 따라 데이터 저장
  • 중복 허용하지 않음(과도한 join시 성능 하락)
  • 확장 시 scale-up 사용
  • transaction의 ACID 를 보장(ACID를 보장하기 위해 DB서버의 성능에 어느정도 영향을 미침)

대표적인 RDBMS로는 MySQL, 오라클(Oracle), MariaDB, PostgreSQL 등이 있다.

NoSQL

  • 스키마를 따르지 않음
  • 중복 허용(join 회피)
  • 확장 시 scale-out 사용(서버 여러 대로 하나의 클러스터를 구성하여 사용)
  • ACID의 일부를 포기하고 높은 처리량(high-throughput), 빠른 응답(low-latency) 추구
  • 데이터의 일관성이 중요한 경우 사용하기 어려움

대표적인 NoSQL로는 MongoDB, Redis, DynamoDB 등이 있다.

RDBMS가 요구되는 경우

  • 데이터베이스의 ACID 성질을 준수해야 하는 소프트웨어를 개발하는 경우
    • ACID 보장을 통해 데이터베이스의 일관성 유지에 도움 됨
  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
    • RDBMS는 데이터 간의 관계를 효과적으로 관리하며, 데이터 변경이 빈번한 상황에서도 일관성을 유지할 수 있음
  • 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요한 경우
    • RDBMS는 명시적이고 구조화된 스키마를 통해 데이터의 구조와 제약을 명확하게 정의하고 관리할 수 있게 해줌.
    • 데이터 모델이 변하지 않고 일관성을 유지해야 하는 경우에는 RDBMS가 적합함.

NoSQL이 요구되는 경우

  • 아주 낮은 응답 지연시간이 요구된다
    • 대용량 트래픽 처리를 위해 scale-out과 로드밸런싱이 요구된다
    • scale-out을 지원하는 NoSQL의 선택이 좋음
  • 다루는 데이터가 비정형이라 관계형 데이터가 아님
    • 정해진 스키마를 따르지 않는 NoSQL의 선택이 좋음
  • 데이터(json, xml 등)를 직렬화 하거나 역직렬화 할 수 있기만 하면된다.
    • MongoDB와 같이 JSON기반의 데이터 관리를 통해 전처리 작업 요구 없이 데이터 저장 가능한 NoSQL의 선택이 좋음
  • 아주 많은 양의 데이터를 저장할 필요가 있음
    • 빅데이터를 RDBMS로 저장할 경우 스키마형태로 저장하므로 많은 처리 시간 요구
    • 스키마를 따르지 않고, 데이터를 분산해서 저장할 수 있는 NoSQL의 선택이 좋음
profile
개발꿈나무

0개의 댓글

관련 채용 정보