Dev.끄적끈적

SQL 과 noSQL 차이 본문

Database

SQL 과 noSQL 차이

YeouidoSexyDeveloper 2022. 6. 10. 16:41

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

SQL은 '구조화 된 쿼리 언어 (Structured Query Language)'를 말합니다. 따라서 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는 데 사용 하는 쿼리 언어입니다. 

SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있습니다.

이러한 관계형 데이터베이스에는 두 가지 주요 특징이 있습니다.

 

  • 데이터는 엄격한 데이터 스키마(= structure)를 따라 데이터베이스 테이블에 저장됩니다.
  • 데이터는 관계를 통해서 연결된 여러 테이블에 분산됩니다.

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

NoSQL은 기본적으로 SQL데이터베이스와 반대되는 접근방식을 따르기 때문에 붙여진 이름입니다.

 

  • 스키마 없음
  • 관계 없음

NoSQL 세계에서는 테이블(table)을 컬렉션(Collection)으로,  레코드(record)를 문서(documents)라고 부릅니다.

그러나 단순히 이름만 다른 것이 아니라, 핵심적인 차이가 있습니다. SQL 세계에서는 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없었지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(= SQL에서의 table)에 추가할 수 있습니다.


# Scaling (확장) - 처리 할 읽기 및 쓰기 요청 수 증가할 때

SQL - 수직(Vertical Scaling) 확장:

  • 단순히 db 서버 성능을 향상 (ex. cpu 업그레이드)

noSQL -수평(Horizontal Scaling) 확장

  • 더 많은 서버가 추가되고 db가 전체적으로 분산. 여러 호스트에서 작동. 쉽게 분할 가능

# 장점 

SQL의 장점

  • 명확하게 정의 된 스키마, 데이터 무결성 보장
  • 관계를 통해 각 데이터를 중복없이 한 번만 저장할 수 있습니다 

 

NoSQL의 장점

  • 스키마가 없기때문에, 유연성이 높습니다.. 즉, 저장된 데이터를 언제든지 조정하고 새로운 "필드"를 추가할 수 있습니다.
  • 데이터는 애플리케이션에 필요한 형식으로 저장됩니다. 이렇게 하면 데이터를 가져오는 속도가 빨라집니다.
  • 수직 및 수평 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기 / 쓰기 요청을 처리 할 수 있습니다.

# 단점

SQL의 단점

  • 상대적으로 덜 유연하며, 데이터 스키마는 미리 알고 계획해야합니다. (나중에 수정하는 것이 어렵거나 불가능 할 수 있습니다.)
  • JOIN문이 많은 매우 복잡한 쿼리가 만들어 질 수 있습니다.
  • 수평 확장이 어렵고, 보통 수직 확장만 가능합니다. 즉 어느 시점에서 처리량/처리 능력과 관련하여 약간의 성장 한계에 직면하게 될 수 있습니다.

NoSQL의 단점

 

  • 유연성 때문에, 데이터 구조 결정을 늦어질 수 있습니다.(바로 계획, 결정해야하는 것이 아니기 때문에)
  • 복사된 데이터가 변경되면 여러 콜렉션과 문서를 수정해야 합니다.

# 결론

1. 관련 데이터가 자주 변경되는 경우, 데이터 구조가 극적으로 변경되지 않을때 ? -> SQL

2. 맺고있는 관계가 자주 수정되는 경우, 읽기 처리를 변경보다 자주할 경우. 막대한 양 데이터 다뤄야할 경우 -> noSQL

 

감사합니다. 여의도섹시개발자 였습니다.