SQL vs NoSQL

원태연·2022년 3월 21일
0
post-custom-banner

SQL과 NoSQL

  • SQL (Structured Query Language)

관계형 데이터베이스(RDBMS)의 데이터를 관리 및 처리하기 위해 설계된 질의(Query) 언어

DB와 DBMS

단순히 정보를 저장하고 있는 공간을 DB(DataBase)라고 하진 않는다. 예를 들어,메모장에 수많은 맛집 목록에 대한 정보를 저장한다면 필요한 데이터를 저장하는 역할을 하고있지만 일반적으로 데이터베이스라고 하진 않는다는 말이다.
DB는 다음과 같이 정의할 수 있다.

DB는 컴퓨터 시스템에 어떤 방식으로도 구조화된 정보 혹은 데이터의 집합이다

앞선 예시에서 맛집에 대한 정보를 구조화하여 메모장에 저장되어 있다면, DB에 대한 개념을 만족하기에 DB라 부를 수 있다.
메모장 뿐만 아니라 많은 프로그램들이 DB의 역할을 수행하고 있고, 대표적으로 엑셀, 스프레드 시트 등이 있다.

이러한 DB에 대하여 데이터를 저장하는 공간으로서의 역할 뿐만 아니라 저장, 검색, 백업 등 다양한 관리를 할 수 있는 기능들이 제공된다면 DBMS라 부를 수 있다.

DBMS : DataBase Management System

DBMS들도 데이터의 구조화 방식에 따라 RDBMS와 Non-RDBMS로 나뉜다.

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

Relataional-DBMS

관계형 데이터 베이스는 다음과 같은 특징을 가진다.

  • 데이터가 테이블(colum, row) 형태로 저장된다.
  • 테이블 사이의 관계(Relation)로 구조를 형성 할 수 있다.
  • SQL을 사용한다.

앞서 메모장에 저장하려했던 맛집을 예시로 테이블을 만들어 보자.

맛집위치음식특징대표메뉴
AlocA한식김치볶음밥
BlocB중식짬뽕
ClocC양식크림리조또

이때, 대표 메뉴에 대해 또 다른 정보를 저장하고 있다면,

음식칼로리주재료
김치볶음밥800Kcal김치

맛집 - 음식 이라는 관계를 형성할 수 있다.

맛집위치음식특징대표메뉴
AlocA한식(음식 ->) 김치볶음밥

이어 붙히면,

맛집위치음식특징음식칼로리주재료
AlocA한식김치볶음밥800Kcal김치

이렇게 표현할 수 있다는 뜻이다.

이러한 작업(Join)을 포함하여 데이터에 대하여 SQL이라는 언어를 통해 원활하게 사용하거나 관리할 수 있다.

RDBMS로는 MySQL, ORACLE, PostgreSQL등 여러 프로그램들이 있지만 ANSI SQL이라는 Standard형태의 언어로 부터 제조사 마다 조금씩 변형하여 사용되므로 ANSI SQL을 숙지한다면 여러 RDBMS를 다루기에 용이할 수 있다.

NoSQL

Non-RDBMS

테이블로만 저장하는 RDBMS의 문제점에 대해 고안하며 개발되어온 형태.

Table형식이 아닌 Document(mongoDB), Graph(Neo4j), Key-Value(redis) 등 다양한 데이터 구조를 활용하여 저장한다는 특징이 있다.

앞서 살펴본 맛집 테이블 에서 맛집에서 "점포" 컬럼이 추가된 경우,

맛집위치음식특징대표메뉴점포
AlocA한식(음식 ->) 김치볶음밥1호점
BlocB중식짬뽕NULL
ClocC양식크림리조또29호점

프랜차이즈 사업을 하지 않는 B식당의 "점포" 정보는 NULL이 들어간다.

데이터의 변동이 잦거나 형식을 규격화 하기 어려운 경우 테이블의 장점이 크게 줄어들 수 있다.

웹에서 자주 사용되는 Document방식(JSON)으로 저장한다면,

{
  "맛집" : "A",
  "위치" : "locA",
  "음식특징" : "한식",
  "대표메뉴" : {
    "음식" : "김치볶음밥",
    "칼로리" : 800,
    "주재료" : "김치"
  },
  "점포" : "1호점"
},
{
  "맛집" : "B",
  "위치" : "locB",
  "음식특징" : "중식",
  "대표메뉴" : {
    "음식" : "짬뽕",
    "칼로리" : 900,
    "주재료" : "해물"
  }
// 점포는 존재하지 않음
}

이런식으로 필요한 컬럼(?)만 저장할 수 있다는 특징이 있다.

이러한 유연성은 불필요한 정보를 저장하지 않아도 되기 때문에 용량적인 면에서 이점을 가질 수 있고, 새로운 데이터를 추가하는데 있어서도 자유롭다.

SQL vs NoSQL

각각의 장단점이 존재한다.

제공하는 서비스 혹은 사용 목적에 맞게 필요한 DBMS를 사용하자

SQL의 장단점

장점

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

단점

  • 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
  • 대체로 수직적 확장만 가능함

from : https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

NoSQL의 장단점

장점

  • 유연성 : 스키마 선언 없이 필드의 추가 및 삭제가 자유로운 Schema-less 구조
  • 확장성 : 스케일 아웃에 의한 서버 확장이 용이
  • 고성능 : 대용량 데이터를 처리하는 성능이 뛰어나다
  • 가용성 : 여러 대의 백업 서버 구성이 가능하여 장애 발생 시에도 무중단 서비스가 가능

단점

  • 스키마가 정해져 있지 않아, 데이터에 대한 규격화가 되어 있지 않다.
  • 데이터가 여러 컬렉션에 중복되어 있어서 데이터를 UPDATE 하는 경우 모든 컬렉션에서 수행해야하기 때문에 느리다.
  • 데이터 중복으로 인한 수정 작업의 번거로움

from : https://sujl95.tistory.com/83

profile
앞으로 넘어지기
post-custom-banner

0개의 댓글