728x90
반응형

비교하기 전 사전 이해

<데이터베이스(Database)>

데이터베이스란 통합하여 관리되는 데이터의 집합체 를 의미한다.
중복된 데이터를 없애고 자료를 구조화하고 효율적으로 처리할 수 있도록 관리된다.
따라서, 여러 사용자가 데이터베이스를 사용할 수 있다.

<DBMS (Database Management System)>

위에서 설명한 데이터베이스를 관리하기 위한 시스템이 바로 DBMS 라고 한다.
사용자와 데이터베이스 사이에서 사용자의 요청을 해석해서 데이터베이스의 데이터를 관리할 수 있도록 해주는 시스템을 말한다.

<SQL (Structured Query Language)>

SQL 은 관계형 데이터베이스 관리 시스템에 저장된 데이터를 관리하기 위해 사용되는 언어를 말한다.

<Schema>

데이터베이스를 구성하는 개체, 속성, 관계 및 제약 조건 등에 대해 전반적으로 정의한 메타데이터의 집합을 말한다.

 


RDBMS

RDBMS 는 Relational DataBase Management System 의 약자로 관계형 데이터베이스 관리 시스템을 말한다.
사전에 말한 DBMS 에서 Relational 의 R 이 붙은 것처럼 관계형 데이터베이스를 관리하기 위한 시스템이라고 보면 된다.
외래키(Forign Key) 를 통해 여러 테이블 간의 관계를 나타내어 테이블 간의 Join 이 가능하다는 특징을 가지고 있다.
그리고 모든 데이터를 2차원 테이블 형태로 표현한다.

 

예를 들어, 사용자 테이블과 구매 테이블이 있다고 했을 때 이 두 개의 테이블 모두 사용자 ID 를 외래키로 가지고 있다.
이렇게 사용자 ID 라는 외래키를 통해 각 테이블 간의 관계를 연결해주게 된다.

 

<장점>

RDBMS 의 장점으로는 명확한 데이터 구조를 갖는다는 점이다.
데이터가 중복되지 않아 한번만 저장할 수 있다.
또한 다른 테이블과의 관계가 정의되어있어 여러 테이블의 Join 이 가능하다는 점이다.

 

<단점>

테이블 간의 관계를 정의해놓고 사용하다보니 Join 을 많이 하게 되면 쿼리가 복잡해질 수 있다.
데이터베이스의 성능 향상을 위해서는 Scale-Up 만 가능하다. 즉, 서버를 늘리는 것보다는 서버의 스펙을 올려야 한다.
Scale-Up 을 하게 되면 비용이 많이 증가한다.
스키마가 정의되어있기 때문에 정해진 틀을 벗어나기 어렵다. 기존의 데이터를 변경하기가 매우 번거롭다.

 


NoSQL

NoSQL 은 Not only SQL 의 약자로 RDBMS 와는 다르게 관계가 정의되어있지 않은 형태로 데이터를 저장한다.
오랫동안 RDBMS 를 사용해오고 있다가 더이상 처리가 힘들만큼 복잡하고 큰 데이터들이 생기면서 NoSQL 에 대한 필요성이 부각되었다고 한다.
RDBMS 와는 다르게 각 테이블 간의 관계를 정의하지 않습니다. 따라서, Join 이 어렵다는 특징이 있다.

 

<장점>

스키마가 정의되어있지 않기 때문에 자유로운 데이터 구조를 가질 수 있다. 유연함
언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다.
데이터 분산이 용이하고 성능 향상을 위해서는 Scale-Up 뿐만 아니라 Scale-Out 도 가능하다.
즉, 서버의 스펙을 올려도 되지만 서버의 수를 증가시킬 수 도 있다.
복잡도가 많이 떨어지기 때문에 많은 데이터를 저장하고 관리할 수 있다.

 

<단점>

데이터 중복이 발생할 수 있다. 따라서 중복된 데이터가 변경되면 모든 데이터를 수정해주어야 한다.
스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않아 데이터 구조를 결정하기 어렵다.
다른 테이블과의 Join 이 어렵다.
인덱스가 정의되어있지 않아 쿼리 실행이 비교적으로 느리다.

 

<NoSQL 데이터 타입 구분>

NoSQL 은 다양한 형태로 데이터를 저장합니다.

  • Key-Value Database
    데이터가 key 와 value 로 저장한다.
    key 값을 통해 value 에 접근하게 되고 value 값에는 어떠한 형태의 데이터라도 담을 수 있다. 이미지나 비디오도 가능하다.
    간단한 API 를 제공하는 만큼 속도가 굉장히 빠르다.
    대표적으로, redis, AWS Dynamo DB 가 있다.
  • Document Database
    데이터가 key 와 Document 로 저장한다.
    key-value 와 다른 점은 value 의 값이 계층적인 document 형태로 저장된다.
    객체와 유사하므로 document 하나의 단위로 저장된다. 객체 형태로 저장하기 때문에 여러 곳에 나누어 저장할 필요가 없다.
    검색에 최적화 되어 있다.
    다만 사용이 번거롭고 기존의 SQL 과는 쿼리가 다르다.
    대표적으로, MongoDB, CouthDB 가 있다.
  • Wide Column Database
    column-family 모델 기반으로 데이터를 저장한다.
    Key 를 통해 필드를 결정한다. key 는 row 값과 column-family, column-name 을 가지고 있다.
    연관된 데이터는 column-family 에 속해있고 각각 column-name 을 가진다.
    관계형 모델로 설명해자면 속성이 계층 구조를 가지고 있는 거라고 생각하면 된다.
    하나의 커다란 테이블로 표현이 가능하고 질의는 row, column-family, column-name 을 통해 수행된다.
    대표적으로, HBase 가 있다.
  • Graph Database
    그래프 구조를 사용하여 데이터를 표현하고 저장한다.
    페이스북이나 트위터 같은 소셜 네트워크에서 적합하고 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 데이터 베이스로 적합하다.
    대표적으로, Neo4J 가 있다.

 


사용 용도

그럼 RDBMS 와 NoSQL 은 어떤 용도로 사용될까?

<RDBMS>

데이터 구조가 명확해 변경될 가능성이 없는 데이터의 경우 (스키마가 명확하게 정의된 경우)
중복된 데이터가 없어 데이터의 변경이 용이한 경우 (데이터 무결성)

 

<NoSQL>

정확한 데이터 구조가 필요하지 않고 데이터의 변경 또는 확장이 필요한 경우
중복된 데이터가 있을 수 있어 업데이트가 많이 이루어지지 않을 경우
많은 데이터를 저장해야하는 경우 (Scale-Out 이 필요한 경우)

 

정리

마지막으로 비교가 가능한 특징들에 대해서 표로 한번 구분해보았다.

비교 RDBMS NoSQL
정의 Relational Database Management System
관계형 데이터베이스 관리 시스템
Not only SQL
SQL 만 사용하지 않는 데이터베이스 관리 시스템
테이블 관계 표현 가능 표현 불가
테이블 조인 가능 불가능
확장 가능 Scale-Up Scale-Up, Scale-Out
데이터 중복 불가능 가능
사용 용도 데이터 구조가 명확한 경우
데이터 스키마 변경 가능성 없는 경우
데이터 구조 불명확한 경우
데이터 변경 및 확장이 필요한 경우
데이터가 많아 수평 확장이 이루어져야 하는 경우

 

 

 

- 참고 사이트

https://khj93.tistory.com/entry/Database-RDBMS와-NOSQL-차이점

 

[Database] RDBMS와 NoSQL의 차이점

이번 포스팅에서는 RDBMS와 NoSQL의 차이점을 알아보려고 합니다. 그전에 RDBMS는 무엇이고 왜 사용하며 NoSQL은 무엇이고 왜 사용을 할까요? 그리고 그 두 DB의 차이점은 무엇이며 서로에 대한 장단점

khj93.tistory.com

 

728x90
반응형
복사했습니다!