[Database] SQL과 NoSQL의 차이

in·2023년 11월 23일
0

Database

목록 보기
4/7

📌 SQL(관계형 DB)

관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
➡️ 데이터 저장, 수정, 삭제, 검색 가능

특징

  • 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
    ➡️ 스키마를 준수하지 않은 레코드는 테이블에 추가 불가능

  • 데이터는 관계를 통해 여러 테이블에 분산

    ➡️ 데이터의 중복을 피하기 위해 '관계' 이용

장점

  • 명확하게 정의된 스키마, 데이터 무결성 보장
  • 관계는 각 데이터를 중복없이 한 번만 저장

단점

  • 데이터 스키마를 사전에 계획해야하므로 유연성이 떨어짐(수정의 어려움)
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
  • 대체로 수직적 확장만 가능

📌 NoSQL(비관계형 DB)

관계형 데이터베이스를 뺀 나머지 유형
스키마X, 관계X

특징

  • 레코드를 문서(documents)라고 부름
    ➡️ 문서는 Json과 비슷한 형태로 관련 데이터를 동일한 컬렉션에 넣음

  • 다른 구조의 데이터를 같은 컬렉션에 추가 가능

  • 여러 테이블을 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를 작성하는 것

  • 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 사용하면 효율적

장점

  • 스키마가 없기 때문에 유연해서 언제든 저장된 데이터를 조정하고 새로운 필드 추가 가능

  • 데이터는 애플리케이션이 필요로 하는 형식으로 저장되기 때문에 데이터 읽는 속도 빠름

  • 수직 및 수평 확장이 가능해 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능

단점

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음

  • 데이터 중복을 계속 업데이트 해야함

  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수정해야 함
    ➡️ SQL의 경우 중복 데이터가 없기 때문에 한 번만 수정하면 됨

➕ 확장(Scaling)

  • 수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것(ex.CPU 업그레이드)
  • 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산되는 것을 의미(하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)

📌 SQL vs NoSQL

데이터 저장

  • SQL
    데이터를 테이블에 저장하고 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 저장해야함

  • NoSQL
    key-value, document, wide-column, graph 등의 방식으로 저장

스키마(Schema)

  • SQL
    고정된 형식의 스키마가 필요하고 수정이 어려움

  • NoSQL
    관계형 데이터베이스보다 동적으로 스키마의 형태를 관리할 수 있음

쿼리(Query)

  • SQL
    테이블의 형식과 테이블간의 관계에 맞춰 데이터를 요청해야 함

  • NoSQL
    데이터 그룹 자체를 조회하는 것에 초점을 두고 있어서 구조화되지 않은 쿼리 언어로도 데이터 요청 가능

확장성

  • SQL
    일반적으로 수직적 확장만 가능

  • NoSQL
    일반적으로 수평적으로 확장

[참고 자료]

🔗링크
🔗링크

0개의 댓글