본문 바로가기

CS/DataBase

[CS] RDB vs NoSQL

RDB

RDB : Relational Database, 관계형 데이터베이스
  • 특징
    • 테이블(Table) 마다 스키마(Schema)를 정의
      • 데이터 타입과 제약(Constraint)을 통해서 데이터의 정확성을 보장
    • SQL문을 통해 요청 처리
      • 대표적으로 MySQL, MS-SQL, Oracle DB가 존재
    • 성능을 높이려면 하드웨어를 고성능으로 교체(Scale Up)해야 함
      • 고성능 하드웨어는 가격이 비싸므로 RDB의 성능 확정에는 불리
    • 수직적 확장 (Vertical Scaling) 가능
      • 데이터베이스 서버의 성능을 향상시키는 것
  • 장점
    • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장
    • 관계는 각 데이터를 중복 없이 한 번만 저장
  • 단점
    • 테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
    • 성능 향상을 위해 서버의 성능을 향상해야 하는 Scale-up만을 지원해 비용이 기하급수적으로 늘어날 수 있음
    • 스키마로 인해 데이터가 유연하지 못함
      • 스키마가 변경 될 경우 번거롭고 어려움
  • 사용 권장
    • 관계를 맺은 데이터가 자주 변경되는 경우
    • 변경될 여지가 없으며 명확한 스키마가 존재하는 경우

 

NoSQL

NoSQL : Not only SQL, 비 관계형 데이터베이스
  • 특징
    • RDB의 확장성 이슈를 해결하기 위해 나온 데이터베이스 모델
      • 여러 개의 테이블이 아닌, 큰 테이블(Document) 하나만을 사용
    • SQL문을 사용하지 않음
      • 가장 많이 쓰이는 NoSQL의 방식은 Key-Value방식으로 데이터를 관리
      • 대표적으로 MongoDB(Document-Oriented), Redies(Key-Value)가 존재
    • 분산 컴퓨팅 활용이 목적이므로 비교적 저렴한 가격에 성능 향상 가능(Scale Out)
      • Schema-Less, 구조 변경이 쉽고 데이터 형식 다양하여 정확성보다는 데이터 양이 중요한 빅데이터(Big Data)에 사용
    • 수평적 확장 (Horizontal Scaling) 가능
      • 더 많은 서버가 추가되어 데이터베이스가 전체적으로 분산되는 것
      • 하나의 데이터베이스지만 여러 호스트에서 작동
  • 장점
    • 스키마가 없어 유연하며 자유로운 데이터 구조
      • 언제든 저장된 데이터를 조정하고 새로운 필드를 추가 가능
    • 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능
  • 단점
    • 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행
    • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정하기가 어려움
  • 사용처
    • 정확한 데이터 구조를 알 수 없으며, 변경 및 확장이 가능한 경우
    • 데이터의 읽기 행위가 대다수이며 변경 행위는 많지 않은 경우 (여러 데이터를 변경할 필요가 없는 경우)
    • 데이터베이스를 수평으로 확장(막대한 양의 데이터로 인한)해야 하는 경우

'CS > DataBase' 카테고리의 다른 글

[CS] 트랜잭션 (Transaction)  (0) 2022.07.12