그해
그래도해야지
그해
  • 그래도 해야지 (71)
    • Java (26)
    • Spring (8)
    • Golang (3)
    • CS (0)
      • 서버 (9)
      • 네트워크 (4)
      • 운영체제 (1)
      • WEB (0)
      • 데이터베이스 (6)
      • 자료구조 (1)
      • 보안 (3)
      • 알고리즘 (9)
    • 삽질 (0)
    • 회고 및 생각 (0)
hELLO · Designed By 정상우.
그해

그래도해야지

CS/데이터베이스

RDBMS vs NOSQL

2023. 2. 16. 15:40

RDBMS

(= Relational Database Management System)

관계형 데이터 베이스는 엑셀의 형식과 유사하게 행(Row)과 열(Record)을 가지고 있는 2차원 테이블 형식이다.

RDBMS는 말 그래도 테이블끼리 관계를 가지고 있는데 일대일관계, 일다대관계, 다대다관계로 나눌 수 있으며 이러한 관계를 나타내기 위해 외래 키(foreign key)를 사용한다. 이 외래 키는 한 테이블의 키 중에서 다른 테이블의 행을 식별할수 있는 키를 의미한다.

sql언어를 사용해 저장, 수정, 삭제를 할 수 있으며, 대표적으로 mysql, oracle이 있다.

장점

  • 명확한 구조를 가지고 있기 때문데 정보의 내용을 확인하기 쉽다.
  • 데이터의 분류, 정렬 , 탐색 속도가 빠르다.
  • 오랫동안 사용된 만큼 신뢰성이 높고, 데이터의 무결성을 보장한다. 이때 데이터의 무결성이란 데이터가 일관되고 얼마나 정확한지를 말한다.

단점

  • 데이터가 많이 쌓였을 경우 기존에 작성된 스키마를 수정하기 어렵다.
  • 관계를 많이 가지고 있을 경우 join문이 많은 복잡한 쿼리가 만들어질 수 있으며 이로 인해 쿼리 수정이 어려울 경우가 생길 수 있다.
  • 데이터 모델링이 개발전에 완료되어야 하기때문에 개발 속도를 더디게 만들 수 있다.

 

 


 

NOSQL

(= Not Only Sql)

데이터의 형태가 복잡해지고, 용량이 커지면서 RDBMS의 방식에 한계를 느껴 이를 보완하기 위해 등장했다. 비관계형 데이터 베이스는 데이터 간의 관계를 정의하지 않기 때문에 key-value, document, graph 등 더 다양한 데이터 모델을 사용할수 있다. 같은 Nosql이라도 각각 특성이 다르다.

대표적으로 MongoDB, reids 가 있다.

장점

  • 스키마가 정해져있지 않기 때문에 언제든지 저장한 데이터를 조정할 수 있다.
  • RDBMS보다 더 큰 대용량 데이터 저장이 가능하다.
    • RDBMS의 단점을 보완하기 위해 등장하였으므로 페타바이트급 대용량 데이터를 저장할 수 있다.
  • 분산형 구조를 가지고 있다.
    • 서버 1대에 저장하는 것이 아닌 여러 대의 서버에 분산해 저장하고 ,분산 시에 데이터를 서로 복제하기 때문에 서버 장애 발생 시 데이터 유실이나 서비스 중지가 없는 구조이다.
  • 데이터 모델링이 완료되기 이전에도 테스트 데이터의 조회가 가능하다.
  • 데이터 간의 관계를 정의하지않기 때문에 Join이 불가능하다.

단점

  • 데이터베이스의 컬렉션이 다양할 경우, 수정할때의 모든 컬렉션의 데이터를 수정해야한다.
  • 유연성때문에 데이터 구조 결정이 어려울 수 있다.

Nosql 데이터베이스별 특성

  1. Key-value Database
    • key와 value가 쌍으로 데이터가 저장되는 형태이다.
    • key는 중복이 없는 고유값으로 유지된다.
    • 간단한 데이터 모델을 대상으로 데이터를 자주 읽고 쓰는 어플리케이션이 적합하다.
    • ex) redis, Cassandra DB
  2. Document Database
  • key-value database와 같이 key-value를 사용하나, 이 document database는 값을 문서로 저장한다. 여기서 문서는 JSON이나 XML을 말한다.
  • 복잡한 데이터 구조 표현이 가능하므로 제품처럼 다양한 속성이 있는 데이터 관리에 적합하다.
  • ex) mongoDB
  1. Graph Database
  • node와 relationshop를 통해 데이터를 표현한다.
  • 모든 노드는 끊기지 않고 연결되어 있어야 한다.
  • sns, 교통망 등 연결 관계가 복잡한 데이터 형태를 다루는데 적합하다.
  • ex) neo4j

 

따라서 이런 장단점을 바탕으로

RDBMS는 관계를 맺고있는 데이터가 자주 변경되지 않고, 명확한 스키마가 존재할때 사용하면 좋고, Nosql은 정확한 데이터 구조를 알 수 없거나 ,변경,확장될수 있는 가능성이 클 경우 Nosql을 사용하면 좋다.

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

mysql Index 종류 및 B-Tree 구조  (0) 2023.06.14
mysql 쿼리 최적화  (0) 2023.06.14
Mysql JOIN  (0) 2023.02.20
데이터베이스 정규화(Normalization)  (0) 2023.02.20
redis의 특징과 자료구조 및 pub/sub  (0) 2023.02.16
    'CS/데이터베이스' 카테고리의 다른 글
    • mysql 쿼리 최적화
    • Mysql JOIN
    • 데이터베이스 정규화(Normalization)
    • redis의 특징과 자료구조 및 pub/sub
    그해
    그해
    그래도 공부는 해야지

    티스토리툴바