RDBMS vs NoSQL

황승우·2023년 2월 18일
0

1. RDBMS와 NoSQL란?

  • RDBMS
    • 관계형 데이터베이스를 생성하고 수정하고 관리할 수 있는 소프트웨어
    • 특징
      • 모든 데이터를 2차원 테이블로 표현
      • row(record, tuple)과 column(field, item)으로 이루어진 기본 데이터 저장 단위
      • 상호관련성을 가진 테이블(table)의 집합

    - ER(Entity Relationship) 모델에 따라, 데이터베이스가 만들어지며, 데이터베이스는 하나 이상의 테이블로 구성 됨. ER모델에서 엔티티를 기반으로 테이블이 만들어짐
    
    ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/20c70aa7-50ee-44fb-9f8a-761b0e102e5b/Untitled.png)
    
  • NoSQL
    • Not Only SQL의 약자
    • 특징
      • 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능이 없음
      • 데이터 조회를 위해 직접 프로그래밍하는 등의 비 SQL 인터페이스를 통한 데이터 접근
      • 대부분 여러 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
      • 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성이 보장되지 않음
      • 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의(Schemaless)
      • 대다수의 제품이 고 확장성, 고 가용성, 고 성능 특징을 가짐
    • 종류
      1. Key-Value DB(널리 쓰임): NoSQL 데이터베이스 중 가장 간단하며, 데이터가 키-값 쌍 컬렉션으로 표시
      2. Wide Columnar DB: 관련 데이터가 단일 열 내부에 중첩 키/값 쌍 세트로 저장
      3. Document  DB: 데이터베이스 내의 JSON 기반 문서에 계층적으로 저장(mongoDB)
      4. Graph DB: 데이터가 그래프 구조에 노드, 에지 및 데이터 속성으로 저장

2. 차이점 비교

Transcation ***

  • 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
  • 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위
  • 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위
  1. ACID

    • 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질

    1. 원자성 (Atomicity)

    • 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
    • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.

    2. 일관성 (Consistency)

    • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
    • 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.

    3. 독립성, 격리성 (Isolation)

    • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.
    • 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.

    4. 영속성, 지속성 (Durablility)

    • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

  1. BASE
  • ACID와 대조적으로 가용성과 성능을 중시하는 특성을 가진 분산 시스템의 특성
    **1. 기본적인 가용성 (Basically Avaliable)**
    
    - 부분적인 고장은 있을 수 있으나, 나머지는 사용이 가능하다.주 서버가 안되더라도 백업 서버는 동작한다.
    
    **2. 소프트 상태 (Soft State)**
    
    - 노드의 상태는 외부에서 전송된 정보를 통해 결정됨.
    - 분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신.최신 상태의 데이터로 덮어써진다.
    
    **3. 결과적 일관성 (Eventually Consistent)**
    
    - 일시적으로 비일관적인 상태가 되어도 최적으로는 일관성이 있는 상태가 되는 성질시스템 부하, 네트워크 속도 등의 외부 요인으로 인해 일관성이 일시적으로 깨질 수 있다.
    
    - 차이점을 고려하여 사용 여부 결정

3. 성능 차이



4. 결론

  • 각각의 장단점이 존재.
  • 많은 데이터의 단순 쿼리는 확실히 NoSQL이 강세
  • 데이터의 무결성을 지키기 위해서 RDBMS 사용
  • CAP이론을 다 만족시킬 수는 없는 것일까에 대한 의문
    - 일관성 (Consistency) : 모든 시스템의 데이터는 어떤 순간에 항상 같은 데이터를 갖는다.
    - 가용성 (Availability) : 분산 시스템에 대한 모든 요청은 내용 혹은 성공/실패에 상관없이 응답을 반환할 수 있다.
    - 내구성 (Partition Tolerance) : 네트워크 장애 등 여러 상황에서도 시스템은 동작할 수 있다.

참고

https://khj93.tistory.com/entry/Database-RDBMS와-NOSQL-차이점

https://universitytomorrow.com/26
https://jwprogramming.tistory.com/52

https://docs.microsoft.com/ko-kr/dotnet/architecture/cloud-native/relational-vs-nosql-data

https://velog.io/@issac/DB-트랜잭션-Transaction의-ACID-속성과-분산시스템-BASE-속성

https://www.cs.rochester.edu/courses/261/fall2017/termpaper/submissions/06/Paper.pdf

https://profil-software.com/blog/development/database-comparison-sql-vs-nosql-mysql-vs-postgresql-vs-redis-vs-mongodb/

profile
백엔드 개발자

0개의 댓글