본문 바로가기
CS 및 면접 질문

SQL과 NoSQL의 차이

by ho-bolt 2022. 6. 27.

🦁 SQL (관계형 DB)

🔨 특징
  • 데이터는 정해진 스키마에 따라 테이블에 저장된다.
  • 데이터는 관계를 통해 여러 테이블에 분산된다.

데이터는 테이블에 레코드로 저장된다. 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이블 유형으로 정의된다.
때문에 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉 구조에 맞는 데이터 형식만 추가할 수 있는 것!!!

🤹🏼 관계

  • 하나이 테이블에서 중복없이 하나의 데이터만을 관리하기 때문에 다른 데이블에서 부정확한 데이터를 다룰 위험이 없어지는 장점이 있다.

🐸 NoSQL(비관계형 DB)

🔨 특징
  • 스키마가 없다.
  • 관계도 없다.

nosql에서는 레코드를 문서라고 부른다. sql에서는 정해진 스키마에 따르지 않으면 데이터 추가가 불가능했는데 NoSQL에서는 다른 구조의 테이블을 같은 컬렉션에 추가하는 것이 가능하다.
따따라서 여러 테이블에 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를 작성하는 것이 NoSQL이다.

🧐 그렇다면 NoSQL에서 조인하고 싶을 땐?

  • 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출하도록 한다.
    => 하지만 이렇게 되면 데이터가 중복될 가능성이 있기 때문에 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터를 NoSQL로 사용하는 것이 안전하다.

👻 확장성 개념

DB서버의 확장성 개념은 2가지가 있다.

  • 수직적 확장 : 단순히 DB서버의 성능을 올리는 것 (ex) cpu 업글
  • 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미

😝 장,단점

👍 SQL 장점
  • 명확하게 정의된 스키마
  • 데이터 무결성 보장
  • 관계를 통해 데이터 중복없이 저장
👎 SQL 단점
  • 덜 유연함
  • 데이터 스키마를 사전에 아주 꼼꼼히 작성해야 함 (추후 수정작업이 힘듦)
  • 여러 관계를 통해 조인문을 사용하면 쿼리문이 복잡해질 수 있다.
  • 대체적으로 수직적인 확장만 가능
👍 NoSQL 장점
  • 스키마가 없어 유연
  • 쉽게 데이터를 조정하고 새로운 필드추가가 가능
  • 데이터가 어플리케이션이 필요로 하는 형식 저장되어 읽어오는 속도가 빠르다.
  • 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
👎 NoSQL 단점
  • 유연성으로 데이터 구조 결정이 미루어질 수 있다.
  • 데이터 중복이 발생할 가능성이 높다.
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 할 수도 있다.

🤪 SQL이 더 좋을 때

  • 관계를 맺고 있는 데이터가 자주 변경되는 경우
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에 중요한 경우

🤪 NoSQL이 더 좋을 때

  • 정확한 데이터 구조를 알 수 없거나 변경/확장 가능한 경우
  • 읽기는 자주하지만 데이터 변경은 자주 없는 경우
  • 데이터베이스를 수평적으로 확장해야 하는 경우

대표적으로 많이 쓰이는 NoSQL들의 특징

  1. documentDB
    • 대표적으로 MongoDB가 있다.
    • 데이터를 JSON 형식으로 저장한다.
  2. key-value DB
    • cassandraDB
      : 읽고 쓰기가 겁나 빠르다.
      : 애플, 넷플과 같이 엄청난 데이터를 저장하고 빠르게 불러오는 데 쓰인다.
    • DynamoDB
      : 서버리스 , 아마존이 만듦
      : 엄청 빠르게 많이 쓰고 읽어야 할 때
      : documentDB와 다른 점은 db에서 무엇을 얻을 지 미리 생각해야 한다는 것
    1. GraphDB
    • column이나 document가 필요없을 때
    • 각 노드 사이의 관계를 알아야 할 때
    • 페이스북같은 걸 만들 때 필요
    • 각각의 entity를 생성하고 관계망에 연결한다.
    • neo4j

참고

https://www.youtube.com/watch?v=Q_9cFgzZr8Q

https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

728x90

댓글