[TIL_2023.11.08] 관계형 DB/ 비관계형 DB 비교

김효진·2023년 11월 8일
0

<퀴즈>
관계형 DB/ 비관계형 DB 주요 차이점은?

node.js 숙련주차 들어와서 MongoDB와 mysql 을 다루게 되었다.

MongoDB 는 대표적인 비관계형 데이터베이스이고 mysql은 대표적인 관계형 데이터베이스이다.

관계형 데이터 베이스

  1. MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database 등이 있음.**

  2. 테이블로 이루어져 있으며 테이블은 키(key)와 벨류(value)의 관계를 나타낸다. 각 테이블은 이름을 가지고 있고 행과 열 및 그에 대응하는 값을 가진다.
    즉, 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체이다. 우리가 익히 알고 있는 행과 열이 있는 표를 떠올리면 이해하기 쉽다.

  3. 언제 사용하면 좋은가? 재고관리, 전자 의료 기록, 은행 및 무역 시스템, 고객 및 주문 관리 등 효과적으로 데이터를 정리하고 다룰 수 있어야 하는 경우

 <장점>

  1. 데이터의 분류, 정렬이 잘되어 있어 탐색의 속도가 빠르다.
  2. 오랫동안 사용되어와 신뢰성이 높고 어떤 상황에서든지 데이터의 무결성을 **보장**한다.

 <단점>

   1. 기존에 작성된 스키마를 수정하기 어렵다.
   2. DB의 부하를 분석하는 것이 어렵다. 

비관계형 데이터베이스

  1. Redis, Firebase의 실시간 데이터베이스와 Cloud Firestore, MongoDB 등이 있다.

  2. NoSQL이라고도 부르며, Not Only SQL(SQL 뿐만이 아니라는 의미)를 뜻한다. (SQL이 아니라서 nosql인줄 알았다)

  3. 기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 데이터베이스라서, 관계형 데이터베이스보다 비교적 유연한 데이터 모델을 사용하여 데이터의 저장 및 검색에 특화된 기능들을 제공한다. NoSQL은 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발되었다.

  4. 거대한 map으로 key-value 형식을 지원하며 관계형 데이터베이스와 다르게
    PRIMARY KEY(주키,주식별자), FOREIGN KEY(외부키,외부식별자), join 등 관계를 정의하지 않고 스키마에 대한 정의가 없다.

  5. 언제 사용하면 좋은가?
    회사가 빠르게 새로운 서비스를 배포하거나 일정한 데이터 형식이 없는 sns 채팅 기능 등, 복잡한 데이터를 다루는 엔지니어링 기업의 사물인터넷, 인공지능 등에도 자주 쓰인다.

<장점>

    1. 대용량 데이터 처리를 하는데 효율적이다.
    2. 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠르다.
    3. 데이터 모델링이 유연하다.
    4. 확장성이 좋아 검색에 유리하다.
    5. 응답속도나 처리효율 등에서 성능이 뛰어남 -> 최적화된 키 값 저장 기법을 사용하기 때문
    6. 복잡한 데이터 구조를 표현할 수 있다.

<단점>

    쿼리 처리할때 데이터를 파싱 후 연산을 하기 때문에 큰 크기의 document를 다룰 때 성능 저하가 있음
    
    

<SQL, NoSQL 차이점>
데이터모델, 스키마, 트랜잭션 및 일관성, 쿼리언어, 확장성, 용도

  1. 데이터 모델:

    • SQL: SQL 데이터베이스는 테이블 기반의 관계형 데이터 모델을 사용하며 데이터는 정해진 스키마에 따라 행과 열로 구성된 테이블에 저장된다.
    • NoSQL: NoSQL 데이터베이스는 다양한 데이터 모델을 지원하는데 주로 문서, 키-값, 와이드 칼럼, 그래프 등의 형태로 데이터를 저장한다. 스키마가 자유로우며 동적으로 변경될 수 있다.
  1. 스키마: -> 주요 차이점

    • SQL: 고정된 스키마를 가지고 있어 데이터의 구조가 변경되면 스키마를 수정해야 함.
    • NoSQL: 동적 스키마를 가지고 있어 새로운 필드를 쉽게 추가하거나 제거할 수 있음.
      • 동적 스키마(Dynamic Schema)는 데이터의 구조나 형식이 런타임 중에 동적으로 결정되는 방식으로 쉽게 말해 스키마란 데이터의 구조를 설명하는 것인데 각 데이터가 어떤 형식으로 저장될지를 사전에 정의한 것이 스키마고 데이터를 저장하거나 다룰때 데이터의 구조를 미리 정의해두지 않고, 필요할 때마다 유연하게 결정하는 것을 의미한다.
  2. 트랜잭션 및 일관성:

    • SQL: ACID 속성(원자성, 일관성, 고립성, 지속성)을 보장하여 데이터의 일관성과 안전한 트랜잭션을 제공
    • NoSQL: 몇몇 NoSQL 데이터베이스는 높은 확장성을 위해 일관성을 희생하거나, 일관성 모델을 제공하지 않는 경우가 있음
  3. 쿼리 언어:

    • SQL: 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 조회하고 조작
    • NoSQL: 각 NoSQL 데이터베이스는 자체적인 쿼리 언어나 API를 제공하며, 종종 특정 용도에 특화된 쿼리 언어를 사용함
  4. 확장성:

    • SQL: 주로 수직 확장(Vertical Scaling)으로 성능을 향상시킴
      • 수직확장 : 단순히 데이터베이스의 성능을 업그레이드 시키는 것, scale up
    • NoSQL: 주로 수평 확장(Horizontal Scaling)으로 데이터베이스를 확장하며, 여러 서버에 데이터를 분산 저장할 수 있음
      • 수평확장 : 더 많은 서버가 추가되고 데이터 베이스가 전체적으로 분산되는 것을 의미. 따라서 하나의 데이터베이스에서 작동하지만, 여러 호스트에서 작동한다. scale out
  5. 용도

    • SQL: 정형화된 데이터 및 복잡한 관계 설정이 필요한 경우에 적합함.
    • NoSQL: 비정형 데이터, 대용량 데이터, 많은 읽기/쓰기 처리가 필요한 경우에 적합함.
profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!

0개의 댓글