[DB] SQL과 NoSQL

cabbage·2023년 1월 19일
0

Database

목록 보기
5/6

SQL 데이터베이스(관계형 데이터베이스)

  • SQL은 Structured Query Language의 약자로, 관계형 데이터베이스와 상호 작용하기 위해 사용하는 쿼리 언어
  • SQL은 쿼리 언어로, SQL 자체는 데이터베이스가 아니지만 관계형 데이터베이스라는 의미로도 사용함
  • SQL을 사용하면 RDBMS에 데이터를 저장, 업데이트, 삭제할 수 있고 데이터를 가져올 수도 있음

관계형 데이터베이스의 두 가지 특징

  • 엄격한 데이터 스키마(구조)에 따라 데이터베이스 테이블에 데이터를 저장한다.
  • 관계로 연결된 여러 테이블에 걸쳐 데이터가 분포되어 있다.

엄격한 스키마

  • 데이터는 테이블에 레코드로 저장되고, 각 테이블은 명확히 정의된 구조를 가지고 있음
  • 테이블 구조는 데이터 타입, 필드의 이름으로 정의됨
  • 스키마를 준수하지 않는 레코드는 추가할 수 없음

관계

  • 데이터 중복을 방지하기 위해 여러 테이블에 데이터를 나누어 저장
  • 각 테이블은 다른 테이블에는 저장되지 않은 데이터를 저장하여 중복 데이터가 존재하지 않음
  • 각각의 테이블들은 서로 관계를 가지고 연결되어 있음
  • 하나의 테이블에서 관리하는 데이터는 테이블마다 다르기 때문에 테이블들은 중복 데이터를 갖지 않음

NoSQL 데이터베이스(비관계형 데이터베이스)

  • SQL 데이터베이스의 접근법과 반대의 접근법을 가지고 있는 데이터베이스
  • SQL 데이터베이스와 달리 스키마, 관계 없음
  • SQL 데이터베이스에서의 테이블과 같은 역할을 하는 컬렉션에 데이터를 저장
  • SQL 데이터베이스에서의 레코드를 NoSQL 데이터베이스에서는 도큐먼트라고 함
  • NoSQL 데이터베이스에서는 같은 컬렉션에 다른 구조의 데이터를 넣을 수 있음
  • 같은 컬렉션에 연관된 데이터를 넣을 수 있음
  • NoSQL 데이터베이스에는 join 개념이 존재하지 않음

  • 애플리케이션이 찾고 있는 데이터를 정확히 출력하도록 컬렉션 간에 데이터를 복제할 수 있음
  • 만약 컬렉션 A와 컬렉션 B가 중복된 데이터를 가지고 있는 경우, 중복된 데이터가 변경되었을 때 컬렉션 A와 컬렉션 B의 중복된 데이터를 모두 수정해야 함

SQL vs. NoSQL

SQL의 장점

  • 스키마를 사용하므로 데이터 무결성 보장
  • 테이블 간의 관계를 설정하여 데이터 중복이 없음

NoSQL의 장점

  • 스키마를 사용하지 않으므로 유연함
  • 애플리케이션이 요구하는 형식으로 데이터가 저장되므로 데이터 읽는 속도가 빨라짐
  • 수직 및 수평적 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생하는 읽기, 쓰기 요청을 얼마든지 처리할 수 있음

SQL의 단점

  • 스키마를 사용하므로 유연성이 떨어짐
  • 테이블 간의 관계를 설정하므로 JOIN문을 많이 사용하는 복잡한 쿼리 사용
  • 수평적 확장이 어렵고 수직적 확장만 가능하므로 처리량 성장에 한계가 있음

NoSQL의 단점

  • 유연한 구조를 가지기 때문에 데이터 구조 결정이 미뤄질 수 있음
  • 여러 컬렉션에서 데이터가 중복되는 경우, 데이터가 변경되면 데이터가 중복되는 모든 컬렉션을 업데이트해야 함

SQL은 언제 사용해야 할까?

  • 관계를 맺고 있는 데이터가 자주 수정되는 애플리케이션의 경우
  • 스키마가 사용자와 데이터에게 모두 중요한 경우

NoSQL은 언제 사용해야 할까?

  • 정확한 데이터 구조를 알 수 없거나 변경될 수 있는 경우
  • 읽기 처리를 자주하지만, 데이터가 자주 변경되지 않는 경우
  • 데이터베이스를 수평적으로 확장해야 하는 경우

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글