SQL vs NoSQL Database 비교하기

beoms96·2020년 7월 5일
0
post-thumbnail

이번 방학의 목표 중 하나인 Mongo DB 사용법 알기와 Express 와 Mongo DB 를 연결할 수 있는 Mongoose 사용하기를 하기 전에 이전에 기록해둔 Database 의 차이를 포스팅으로 남겨야겠다는 필요를 느꼈다. 그래서 SQL 과 NoSQL 의 차이를 통해 Database (DBMS) 를 비교하고자 한다.

1. Database 란?

1. 개요

Database: 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합, 자료항목의 중복을 없애고 자료를 구조화 하여 저장함으로써 자료 검색과 갱신의 효율을 높임

2. 구성요소

  1. 릴레이션 테이블
  2. 어트리뷰트 속성 , 열 , 칼럼 Columm )) → 다 모으면 개체 타입
  3. 튜플 행 ): 튜플의 수 = 카디날리티 (Cardinality), 릴레이션에서 같은 값 못 가짐
  4. 식별자 : 여러 개의 집합체를 담고있는 관계형 데이터베이스에서 각각의 구분할 수 있는 논리적인 개념

식별자의 특징

  1. 유일성 : 하나의 릴레이션에서 모든 행은 서로 다른 키 값을 가진다
  2. 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성

3. Database 언어 종류

  1. 정의 기능 (DDL): CREATE, ALTER, DROP, TRUNCATE 등 데이터베이스 스키마를 정의, 조작하는 언어
  2. 조작 기능 (DML): SELECT, INSERT, UPDATE, DELETE 등 데이터를 조작하기 위한 언어
  3. 제어 기능 (DCL): 무결성, 보안 및 권한 제어 회복 등을 하기 위한 언어 데이터를 보호하고 데이터를 관리하는 목적으로 사용

2. Database 구분하기

1. SQL Database

SQL은 Structed Query Language의 약자. 관계형 DB (RDS, Relational Database)
Scale-UP의 형태 (관계를 가지는 테이블들이 수평적으로 더 커짐, 굉장히 덩치가 큰 DB 시스템이 되어 관리하기 어려워짐.)
구조의 완전성 보장, 엄격한 스키마

2. NoSQL Database

Non SQL or Not only SQL, Non-relational database. 관계형 테이블로 이루어진 SQL과 달리 데이터 저장을 위한 메커니즘이 다름. Unstructured 된 방대한 데이터를 저장하기에 좋음.
Scale-Out의 형태 (고성능 DB가 아니라 여러 DB 시스템으로 추가), 유연한 Schema 구조

3. SQL Database (RDB)

RDB - Relational Database (관계형 데이터베이스)

1. Oracle


MSSQL, MYSQL 보다 대량의 데이터를 처리하기 좋음.
대기업 주로 사용하고, 글로벌 DB 시장 점유율 1위
비공개 소스

2. MySQL


오픈소스로 이루어진 무료 프로그램 (상업적 사용 시 비용있음)
다수의 중소기업에서 사용 중

3. MsSQL (Microsoft SQL Server)


마이크로소프트에서 개발한 상업용 데이터베이스
윈도우에 특화
비공개 소스로 폐쇄적인 정책 (리눅스 버전은 오픈 소스)
중소기업 주로 사용

이외에도 MariaDB 등 여러 RDB 들이 존재한다.

4. NoSQL Database

NoSQL: 최근 빅데이터가 중요해지면서 데이터베이스의 속도가 중요해 점차 No-SQL의 중요성 올라가는 중이다.

  1. DOCUMENT STORE 또는 DOCUMENT DATABASE: 테이블의 스키마가 유동적, 즉 레코드마다 각각 다른 스키마를 가질 수 있다. 보통 XML, JSON과 같은 DOCUMENT를 이용해 레코드를 저장한다. 트리형 구조로 레코드를 저장하거나 검색하는 데 효과적이다.
    Ex) MongoDB, CouchDB 등

  2. WIDE COLUMN STORE 또는 WIDE COLUMN DATABASE: 행마다 키와 해당 값을 저장할 때마다 각각 다른 값의 다른 수의 스키마를 가질 수 있다. Key에 해당하는 값에 스키마들이 각각 다를 수 있음.
    Column Family 데이터 모델 사용
    Ex) Cassandra, HBase!

  3. KEY-VALUE STORE 또는 KEY-VALUE DATABASE: 기본적인 패턴으로 KEY-VALUE 하나의 묶음(Unique)으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이하다. 주로 SERVER CONFIG, SESSION CLUSTERING등에 사용되고 엑세스 속도는 빠르지만, SCAN에는 용이하지 않다.
    Ex) Redis, Oracle NoSQL Database

  4. GRAPH DATABASE: 데이터를 노드로(그림4에서 파란, 녹색 원) 표현하며 노드 사이의 관계를 엣지(그림4에서 화살표)로 표현, RDBMS 보다 Performance가 좋고 유연하며 유지보수에 용이한 것이 특징. Social networks, Network diagrams 등에 사용할 수 있다.
    Ex) Neo4j, Blazegraph

5. 정리

이상으로 데이터베이스의 특징들을 정리해보았다. Database 를 안다하는 사람들은 SQL / NoSQL 이런식으로 분류된 Database 를 상황에 따라 같이 사용하고, 서비스 별로 관리를 해야할 수도 있다고 한다. 매 프로젝트에서 어떤 Database 를 써야 데이터의 효율적인 관리가 쉬워질지 고민해봐야할 것 같다.

출처: 다양한 Database 공식 홈페이지

profile
beoms96 개발 노트

0개의 댓글