[Database] SQL vs NoSQL

Kwon·2023년 11월 19일

데이터베이스

목록 보기
3/4
post-thumbnail

SQL vs NOSQL

SQL

  • SQL을 사용하면 RDBMS에서 데이터 저장, 수정, 삭제 및 검색 가능
  • RDBMS에서 핵심적인 특징

    1) 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
    2) 데이터는 관계를 통해 여러 테이블에 분산

  • 스키마에 준수하지 않은 데이터는 저장 불가
  • 데이터 중복 피하기 위해 관계 이용 (Join에서 다뤘던 내용 참고)

장점

  • 명확히 정의된 스키마, Integrity 보장
  • 관계는 각 데이터를 중복 없이 한번만 저장

단점

  • 유연성이 떨어짐 (조인 특성의 이유)
  • 관계를 맺고 있어 조인이 많을 수록 복잡
  • 수직적 확장만 가능

SQL 총총

  • 관계를 맺고 있는 데이터가 자주 변경되는 어플의 경우 괜찮음
    --> NoSQL은 다수 컬렉션을 모두 수정
  • 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요한 경우
  • 대표적 MySQL, Oracle, SQLite, PostgressSQL, MariaDB

NoSQL

  • RDBMS의 반대 (스키마도 없고 관계도 없음)
  • NoSQL에선 레코드를 문서라 부름
  • SQL과 또 하나 차이점은 다른 구조의 데이터를 같은 컬렉션에 삽입
  • 여러 테이블 조인할 필요가 없고 모든 것을 갖춘 문서
  • 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터 일 때 NoSQL쓰면 상당히 효율적

장점

  • 스키마가 없어서 유연함
  • 데이터 읽는 속도가 빠름
  • 수직 및 수평 확장이 가능해서 어플리케이션 발생시키는 모든 읽기 및 쓰기 요청처리 가능

단점

  • 유연성으로 인해 데이터 구조 결정하는데 시간이 좀 걸림
  • 데이터 중복을 계속 업데이트
  • 수정 시 모든 컬렉션에서 수행

NoSQL 총총

  • 정확한 데이터 구조 모르거나 변경/확장 될 수 있는 경우
  • 읽기 자주 하지만 변경은 별로 없는 경우
  • DB 수평적 확장해야 하는 경우
  • 대표적 MongoDB, Casandra

번외 개념

👉 DB 서버 확장성은 수직적, 수평적 확장으로 이뤄짐

수직적 확장

  • 단순히 DB서버 성능 향상 (ex CPU 업그레이드)
  • 데이터 저장 방식으로 인해 SQL DB는 수직적 확장만 지원

수평적 확장

  • 더 많은 서버 추가, DB가 전체적으로 분산 (ex 여러 호스트에서 작동)
  • 수평적 확장은 NoSQL에서만 가능
profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글