티스토리 뷰

개발냥이/etc

[DB] SQL과 NoSQL의 차이

데브캣_DevCat 2023. 2. 20. 13:45

1. 특징

 

SQL

  • RDBMS에서 데이터를 저장, 수정, 삭제, 검색할 수 있다.
  • 정해진 데이터 스키마에 따라 테이블에 저장된다.
  • 데이터의 중복을 피하기 위해 관계를 이용해 데이터를 분산한다.

 

NoSQL

  • 키-값DB, 도큐먼트DB, 그래프DB 등으로 구분할 수도 있다.
  • Schema-less한 유연한 구조
  • Scale-out에 의한 서버 확장 용이
  • 대용량 데이터를 처리하는 고성능
  • 여러 대의 백업 서버를 구성할 수 있는 가용성

 

 

2. Scaling(확장)

  • 수직적 확장 : DB 성능을 향상시키는 것 (CPU 업그레이드)
  • 수평적 확장 : 더 많은 서버와 데이터베이스의 분산을 의미

데이터가 저장되는 방식 때문에 관계형DB는 일반적으로 수직적 확장만을 지원한다. 수평적 확장은 NoSQL에서 용이하다.

 

3. 장단점

 

SQL

  • 명확하게 정의된 스키마로 인해 데이터의 무결성을 보장한다.
  • 데이터의 중복이 없다.
  • 덜 유연하다.
  • 관계라는 개념 때문에 조인이 필요하고 그 때문에 복잡한 쿼리가 만들어져서 성능저하로 이어진다.
  • 대체로 수직적 확장만 가능하다.

 

NoSQL

  • 언제든지 데이터를 조정하고 새로운 필드를 추가할 수 있는 유연함
  • 데이터가 애플리케이션이 필요로 하는 형식으로 저장될 수 있어서 읽어오는 속도가 빠르다.
  • 수직, 수평 확장 모두 용이하다.
  • 데이터 중복을 계속 업데이트 해야 하고, 여러 컬렉션에 중복되어 있는 경우 수정 시 모든 컬렉션에서 이를 수행해야 한다.

 

4. 언제 무엇을 사용해야 할까?

 

SQL

  • 데이터가 자주 변경되는 애플리케이션
  • 테이블의 변경 여지가 없고 명확한 스키마가 중요한 경우
  • 데이터의 무결성, 일관성이 중요한 트랜잭션 업무
  • 복잡한 계산이나 실시간 데이터 정합성이 필요한 업무
  • ex) 은행 시스템

 

NoSQL

  • 정확한 데이터 구조를 알 수 없거나 변경/확장될 수 있는 경우
  • 데이터 변경이 적고 읽기를 자주 하는 경우
  • 막대한 양의 데이터를 다루어야 하는 경우(수평적 확장 필요한 경우)
  • 초당 동시 처리가 중요한 업무
  • 로그 및 이력 등의 단순 기록형 업무
  • ex) 낮은 지연 시간, 가용성이 중요한 SNS 시스템
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함