/ DB

NoSQL vs SQL

SQL vs NoSQL

: 어떤 프로젝트를 시작하는데 있어, 데이터베이스를 정하는 것은 매우 중요한 일이다. 데이터 베이스는 어떠한 서비스에서도 필수적인 요소이기 때문이다. 그렇기 때문에 데이터 베이스를 정하기 위해서는 자신이 원하는 서비스에 맞게 선택해야한다. 그렇지 않으면 도중에 데이터베이스 바꾸게되는 일이 발생하는데, 그럼 DB 모델링을 다시 해야하는 불필요한 비용이 발생하게 된다. 보통은 MySQL로 대표되는 관계형 DB와 MongoDB로 대표되는 NoSQL DB사이에서 많은 고민을 하는데 두 데이터베이스가 어떻게 다르고 각각 어떤 장점을 가지고 있는지 살펴보자.

1. SQL(RDB)

: SQL DB는 일반적으로 관계형 데이터베이스로 알려져있다. 여기서 SQL은 Structed Query Language의 약자이다. 관계형 데이터 베이스답게 행과 열로 이루어진 테이블(relation)이 있고, 테이블들에 대한 스키마(schema)가 존재한다.그 관계를 중심으로 쿼리를 사용할 수 있다. SQL 데이터베이스의 경우 급격히 데이터가 늘어나면 시스템의 크기가 커져 데이터를 관리하기가 어렵다. (Scale in)

sql

  • 장점
    1. DB스키마를 한번 완성하면 데이터 및 구조의 완전성이 보장된다. -> 시스템이 자주 변경되지않는 보수적인 형태에 적합
    2. 정해진 관계를 바탕으로 쿼리를 유연하게 할 수 있다.(테이블간의 Join기능)
  • 단점
    1. 데이터 양이 많아질 경우 DB 시스템 자체가 매우 커질 수 있다.
    2. 쿼리 비용이 상대적으로 많다.
    3. 트래픽이 많은 상황에서는 확장성이 떨어진다.

2. NoSQL

: NoSQL은 Non-SQL 또는 Not Only SQL 또는 비관계형데이터베이스로 불린다. 보통의 경우, 구조화되지 않은 대량의 데이터를 저장하기에 용이하다. 데이터가 급격히 늘어날 경우 용이하다. 인 메모리 키-값 스토어, 그래프 데이터모델, 문서스토어, JSON등 다양한 데이터 모델을 사용한다. (Scale out)

  • Architecture

nosql

  • 장점
    1. 큰 데이터 양, 짧은 지연시간, 유연한 데이터 모델이 필요한 애플리케이션에 최적화 되어있다.
    2. 더 큰 규모와 빠른 응답성으로 빅데이터를 처리하는데 유용하다.
    3. 데이터 구조가 간단하여 수평적 확장이 쉽게 이루어진다.
  • 단점
    1. 쿼리가 유연하게 쓰일 수 없을 때가 많다. 일부 조건에서만 빠른 쿼리가 가능하다. 다시말해, 복잡하고 다양한 쿼리는 불가능하거나, 쿼리 비용이 매우 크다.
    2. 데이터 구조의 제약 조건이 완화되었기 때문에, 데이터 구조에 대한 데이터의 일관성이 보장되지 않을 수 있다.