SQL vs NoSQL

·2023년 5월 12일
0

개발 지식

목록 보기
75/96
post-thumbnail
post-custom-banner

RDBMS (SQL)

정의

데이터베이스 유형 중에 하나로, 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다. 테이블의 구조와 데이터 타입 등을 사전에 정의한다. 그리고 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 특정한 형식을 지키키 때문에, 데이터를 정확히 입력했다면 데이터를 사용할 때에 수월하다는 장점이 있다.

종류

  • MySQL
  • Oracle
  • SQLite
  • MariaDB
  • PostgresSQL

SQL

관계형 데이터베이스는 테이블 간의 관계가 구조화된 데이터 모음이기에 SQL(구조화된 쿼리 언어)를 사용한다. RDBMS 프로그램은 기본적인 SQL을 지원한다.

특징

  • 행/열 데이터로 표현된다.
  • 상호관련성을 가진 테이블의 집합으로 구성된다.
  • 테이블 사이의 관곌르 외래키로 나타낸다.
  • 스키마 변경이 어렵다.
  • 수직확장(하드웨어 스펙 확장), 행 구간 확장(양적 확장)은 클수록 힘듬
  • 유지보수에 대한 비용이 크다.
  • SQL을 사용해 데이터를 다룬다.
  • ACID 성질을 갖는다.

장점

  • 스키마는 명확하게 정의되어 있으며, 데이터의 무결성을 보장한다.
  • 관계는 각 데이터를 중복없이 한번만 저장한다.

단점

  • 스키마는 매우 신중하게 정해야한다.(향후 수정이나 변경이 어렵다)
  • 스키마간 관계에 대한 쿼리를 사용해야하는 경우, 매우 복잡하고 방대한 쿼리가 사용될 수 있다.
  • 수평적 확장이 어렵다.

비관계형 DB (NoSQL)

정의

Not only SQL의 약자로, 일반적으로 SQL을 사용하는 관계형 데이터베이스가 아닌 모든 데이터베이스를 총칭한다.

종류

Key-Value

속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장한다. Redis가 대표적인 Key-Value 형식의 데이터베이스이다.

도큐먼트

데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미한다. 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다. 대표적으로 MongoDB가 있다.

특징

  • 스키마리스 함. (형식이나 명시된 제약이 정해지지 않음)
  • 행 구간 확장이 쉽다.
  • 유연하다.
  • 비용이 저렴하고 오픈소스도 많다.
  • 다른 스키마를 신경쓰지 않아도 됨

장점

  • 스키마가 없기 때문에 유연하다.
  • 어플리케이션에 최적화된 형식으로 저장할 수 있다. 이는 일반적으로 스키마의 관계를 통해 조회하는 것 보다 훨씬 빠른 조회 속도를 보여주는 경우가 많다.
  • 수직 및 수평확장이 가능하다.

단점

  • 중복되는 데이터가 존재, 여러 컬렉션에 동일한 데이터가 들어감. 이 경우 업데이트시 한번의 업데이트는 여러 컬렉션에 업데이트가 반영되어야 함
  • 구조화되어 있지 않기 때문에 데이터의 상대적으로 원자성을 보장하기 어려움

SQL vs NoSQL

  • 데이터가 자주 변경되며, 향후 데이터 구조를 계속 이어가면서 사용자와 데이터가 중요한 경우는 SQL
  • 데이터가 자주 변경되지 않으며, 데이터 구조를 알 수 없거나 상황에 따라 구조에 대한 예외사항들이 존재하거나, 데이터베이스를 수평적으로 확장할 여지가 존재하는 경우는 NoSQL

참고
SQL vs NoSQL (MySQL vs. MongoDB)
[데이터베이스] SQL(구조화 쿼리 언어) vs NoSQL(비구조화 쿼리 언어)

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.
post-custom-banner

0개의 댓글