NoSQL vs SQL*

이재홍·2022년 6월 28일
0

NoSQL vs SQL

웹 애플리케이션 개발을 위한 첫 걸음을 내딛은 이후에 한가지 선택사항을 마주하게 됩니다. MySQL와 같은 SQL을 사용할 것인가? 아니면 MongoDB같은 NoSQL을 사용할 것인가?
Node.js에 익숙하신 분들이라면 NoSQL (MongoDB)이 더 좋다는 인상을 가지고 계실지도 모르겠지만 잘못된 생각입니다.
이 글에서는 SQL과 NoSQL 데이터베이스의 핵심적인 개념을 소개하고 각 솔루션의 차이점 그리고 장단점을 설명하도록 하겠습니다.

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

'구조화 된 쿼리 언어 (Structured Query Language)'의 약자

장점

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

단점

상대적으로 덜 유연합니다. 데이터 스키마는 사전에 계획되고 알려져야 한다. (나중에 수정하기가 번거롭거나 불가능 할 수 도 있습니다.)
관계를 맺고 있기 때문에, JOIN문이 많은 매우 복잡한 쿼리가 만들어 질 수 있다.
수평적 확장이 어렵고, 대체로 수직적 확장만 가능하다. 즉 어떤 시점에서 (처리 할 수 있는 처리량과 관련하여) 성장 한계에 직면하게 된다.

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

NoSQL은 기본적으로 SQL(관계형 데이터베이스)와 반대되는 접근방식을 따르기 때문에 지어진 이름

  • 스키마 없음
  • 관계 없음

NoSQL세상에서는 레코드를 문서(documents)라고 부른다.
이것은 단순히 이름만 다른 것이 아니라, 핵심적인 차이점 이있다. SQL 세상에서는 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(= SQL에서의 테이블)에 추가할 수 있다.

NoSQL의 장점

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

NoSQL의 단점

유연성 때문에, 데이터 구조 결정을 하지 못하고 미루게 될 수 있다.
데이터 중복은 여러 컬렉션과 문서가 (SQL 세계에서 처럼 하나의 테이블에 하나의 레코드가 아니라) 여러 개의 레코드가 변경된 경우 업데이트를 해야 한다.
데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정(update)를 해야 하는 경우 모든 컬렉션에서 수행해야 함을 의미한다.

(SQL 세계에서는 중복된 데이터가 없기 때문에 한번만 수행하면 됩니다.)

0개의 댓글