<CS 지식> SQL vs NoSQL

Google 아니고 Joogle·2022년 4월 19일
0

CS 지식

목록 보기
5/22

🗎Database

  • 컴퓨터 시스템에 저장되는 구조화된 정보 혹은 데이터 집합

🗎DBMS

  • DB에서 데이터를 정의(define), 저장(store), 검색 및 인출(retrieve), 관리(manage)하기 위해 사용되는 소프트웨어

🗎SQL

  • 관계형 데이터베이스 형태 (Relational DBMS)
  • 데이터는 정해진 데이터 스키마에 따라 테이블(Column, Row) 형태로 저장
  • 데이터는 관계를 통해 여러 테이블에 분산

SQL의 장점과 단점

  • 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없음
  • 명확하게 정의된 스키마, 데이터 무결성 보장
  • 관계는 각 데이터를 중복없이 한 번만 저장
  • 덜 유연하고 관계를 매고 있어서 Join문이 많은 복잡한 쿼리가 만들어질 수 있음
  • 대체로 수직적 확장만 가능

SQL DB의 사용이 더 좋을 때

  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
  • 전자 상거래를 비롯한 모든 금융 서비스를 위한 S/W 개발에서는 반드시 ACID 성질 준수

🗎NoSQL

  • 비관계형 데이터베이스 (Non-RDBMS), Not Only SQL
  • Join을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 효율적
  • Document(Json Type, Mongo DB), Graph(노드 관계, e.g. facebook의 tao), Key-Value (Redis, Dynamo등), Wide-Column (구조적인 Column 형태를 가지되 유연하게 사용)
  • Key-Valu를 Document와 비교해 보았을 때, 어떤 종류의 DB를 얻을 수 있는지가 제한적

NoSQL의 장점과 단점

  • 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
  • 데이터는 애플리케이션이 필요로 하는 형식으로 저장, 읽어오는 속도가 빨라짐
  • 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
  • 데이터 중복을 계속 업데이트 해야 함
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행

NoSQL DB사용이 더 좋을 때

  • 정확한 데이터 구조를 알 수 없거나 (정형화되지 않은 데이터) 변경/확장 될 수 있는 경우
  • 읽기를 자주 하지만 데이터 변경은 자주 없는 경우
  • 데이터베이스를 수평적으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)

🗎확장성 Scalability

  • 일반적으로 SQL 기반의 관계형 DB는 수직적으로 확장
  • 높은 메모리, CPU를 사용하는 확장
  • DB가 구축된 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 든다
  • 여러 서버에 걸쳐 DB 관계를 정의할 수 있지만 매우 복잡하고 시간이 많이 소모됨
  • NoSQL로 구성된 DB는 수평적으로 확장
  • NoSQL DB를 위한 서버를 추가적으로 구축하면, 많은 트래픽을 보다 편리하게 처리
profile
Backend 개발자 지망생

0개의 댓글