SQL vs NoSQL

업데이트:

  • 연구주제 : SQL vs NoSQL
  • 연구목적 : SQL과 NoSQL 비교 연구
  • 연구일시 : 2020년 1월 22일 01:00~06:00
  • 연구자 : 이재환 ljh951103@naver.com
  • 연구장비 : HP EliteDesk 800 G4 TWR
  • 관련연구 : SQL, RDBMS, DBMS, DB, NOSQL, MongoDB


서론

이전 포스팅에서 NoSQL의 정의와 등장배경, 간단한 특징에 대하여 알아보았다. 거기서 설명한 내용만 보면 분명 데이터 관리에 있어서 혁신적인 기술은 맞다.
그럼 이렇게 좋은 NoSQL이 있는데 RDBMS는 왜 계속 쓰는거지? 이러한 의문을 가질 수 있다.
그렇다면 지난 포스팅에 이어서 이 두 가지의 DB의 차이를 알아보고 몽고DB까지 알아보도록 하자.


본론

SQL vs NoSQL

image

사실, SQL과 NoSQL은 반대의 개념이나 경쟁상대 모두 아니다. 대부분의 회사들이 두 타입의 데이터베이스 모두 동시에 사용하기도 한다.

즉, SQL의 특징을 필요로 하는 서비스가 많이 존재한다면 NoSQL의 특징을 필요로 하는 서비스도 많이 존재한다는 말이된다.

그럼 어떠한 데이터베이스 선택에 있어서 가장 합리적인 선택은 무엇일까?


  1. SQL

우선 SQL의 장점은 다음과 같다.

  • 명확하게 정의된 스키마
  • 데이터 무결성 보장
  • 관계는 데이터의 중복없이 1번만 저장

이러한 장점을 지니고 있기 때문에 SQL은 다음과 같은 서비스를 제공하는 경우 사용된다.

  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션일 경우 (NoSQL이라면 여러 컬렉션을 모두 수정해야함.)
  • 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요할 경우


  1. NoSQL

우선 NoSQL의 장점은 다음과 같다.

  • 스키마가 없기 때문에 훨씬 더 유연함. 즉, 언제든지 데이터를 조정하고 필드를 추가할 수 있음.
  • 데이터는 애플리케이션이 필요로 하는 형식으로 저장되기 때문에 읽어오는 속도가 빠름.
  • 수직 및 수평 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기 / 쓰기 요청을 처리할 수 있음.

이러한 장점을 지니고 있기 때문에 NoSQL은 다음과 같은 서비스를 제공하는 경우 사용된다.

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


여기서 잠깐, 위에서 설명한 내용 중에 두 가지 큰 차이점에 대하여 짚고 넘어가겠다!

RDBMS에서는 주요한 두 가지 특징이 있는데 다음과 같다.

  • 데이터는 엄격한 스키마에 따라 데이터베이스 테이블에 저장된다.
  • 데이터는 관계를 통해 여러개의 테이블에 분산된다.

여기서 엄격한 스키마란, 규정된 데이터 스키마를 통해 데이터를 접근해야만 하며 그렇지 않을 경우 접근이 불가능하다? 정도로 설명할 수 있다.

관계는 지금껏 사용해오면서 알 듯이, 데이터를 여러 테이블에 나누어 관계를 가져 중복된 데이터를 억제한다.


NoSQL에는 엄격한 스키마와 관계가 존재하지 않는다!

NoSQL의 경우 정해진 스키마가 없기 때문에 다른 구조의 데이터도 같은 컬렉션에 추가할 수 있다. 또한 관계가 없기 때문에 복잡한 조인을 사용할 필요가 없다.


수직적 & 수평적 확장이란?

두 종류의 데이터베이스의 차이점을 설명할 때 중요한 개념이 확장이다.

  • 수직적 확장은 데이터베이스 서버의 성능만을 향상시키는 것이다.
  • 수평적 확장은 더 많은 서버가 추가되고 데이터베이스가 분산됨을 의미한다.

데이터가 저장되는 방식 때문에 기존의 RDBMS은 수직적 확장만을 지원한다.
하지만 NoSQL은 수평적 확장 또한 지원한다!

image


하지만 이러한 두 종류의 DB는 장점뿐만 아니라 단점 또한 존재한다.

SQL의 단점

  • 상대적으로 덜 유연하다. 데이터 스키마는 사전에 계획되고 알려져야 한다. 즉, 나중에 수정하기가 번거롭거나 불가능할 수도 있다.

  • 관계를 맺고 있기 때문에, join문이 많은 매우 복잡한 쿼리가 만들어 질 수 있다.

  • 수평적 확장이 어렵고, 대체적으로 수직적 확장만 가능하다. 즉, 어떤 시점에 도달하면 처리할 수 있는 데이터량에 한계점에 다다르게 된다.


NoSQL의 단점

  • 유연성 때문에, 데이터 구조 결정을 하지 못하고 미루게 될 수 있다.

  • 데이터 중복은 여러 컬렉션과 문서가 여러 개의 레코드가 변경된 경우 업데이트를 해야 한다. 이는 SQL에서의 하나의 테이블에 하나의 레코드인 방식과 다르다.

  • 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정을 해야 하는 경우 모든 컬렉션에서 수행해야 한다.


결론

image

위의 통계를 보면 여전히 RDBMS가 강세인 것을 확인할 수 있다.
NoSQL만의 장점도 많고 독보적이지만, 아직까지는 안정적이고 검증된 RDBMS를 아직 대다수의 기업에서 다루고 있다. 다음 연구에서는 NoSQL에서 가장 유명하고 널리 쓰이고 있는 MongoDB에 대하여 다루겠다.


향후과제

NoSQL의 대표격인 MongoDB에 대하여 알아보자.


참고자료

https://siyoon210.tistory.com/130
https://m.blog.naver.com/PostView.nhn?blogId=shakey7&logNo=221558533513&proxyReferer=https%3A%2F%2Fwww.google.com%2F
https://brunch.co.kr/@kooslab/181
https://namu.moe/w/DBMS


Writer: Jae-Hwan Lee

댓글남기기