RDBMS와 NoSQL의 차이

이민석·2022년 3월 24일
0

CS

목록 보기
4/7
post-custom-banner

Database

차이를 배우기 전에 DB의 간단한 정의를 알아보자

DB

  • database의 약자로 우리가 사용하는 정보는 db에 저장하지 않고 연결이 끊어지면 휘발성으로 인해 사라진다. 그러므로 db에 저장하여 다른 사람들과 정보를 공유하기 위해 만들어진 공간이다.

  • 사전적 용어로 말하자면, 컴퓨터 시스템에 전자 방식으로 저장되어 있는 구조화된 정보 또는 데이터의 체계적인 집합을 말한다.

DBMS

  • 데이터베이스 관리 시스템으로 사용자와 데이터 사이에서 사용자의 요청에 의해 데이터의 생성 조회 등 데이터베이스를 관리해주는 역할을 한다.

SQL

  • 관계형 데이터베이스 관리 시스템(RDBMS)의 관리를 위해 제작된 언어로써, 자료의 검색과 재조합, 스키마 생성과 수정과 같은 데이터베이스 객체 조정 관리를 위해 사용되고 있다.

RDBMS / NOSQL

특징

RDBMS

  • Relational DataBase Management System의 약자로, 관계형 데이터베이스 관리 시스템을 의미한다.

  • 데이터 테이블 간의 정보가 서로 관계성을 가지고 있는 것이 특징이고, 2차원의 행(row) 렬(column)로 테이블을 표현하는 데이터 베이스이다. 이러한 관계를 통해 테이블 간 join이 가능하다.

  • ACID(Atomicity, Consistency, Isolation, Durability) 원칙을 기본으로 구성된 방식이다.

NoSQL

  • Not Only SQL의 약자로, 테이블 간 상호관계가 없는 것이 특징이다. 관계가 없으므로 다른 테이블과 join도 할 수 없다.

  • RDBMS의 복잡성과 용량의 한계를 극복하기 위해 등장했다. RDBMS와 다르게 스키마가 존재하지 않아 자유롭게 데이터를 저장할 수 있다.

NoSQL하면 일반적으로 MongoDB를 떠올리지만, NoSQL 방식 중 하나인 Document방식이다. 아래와 같은 여러 방식도 지원하고 있으니 알아보자.

1. Key-Value DB

  • Key-Value 방식으로 데이터를 저장

  • Key값은 모든 데이터 타입을 수용할 수 있고, 중복되지 않는 유니크한 값

  • 간단한 구조인 만큼 속도가 빠른 편이다.

  • 대표적으로 Redis, AWS DynamoDB, Riak 등이 있다.

2. Document DB

  • Key-Value에서 확장된 방식으로, Key-Document 형태로 저장된다.

  • Document는 계층적인 데이터 타입(JSON, XML)으로 저장되는 장점이 있다.

  • JSON 타입을 사용하므로 HTTP 기반의 웹서버의 경우 데이터를 편리하게 주고받을 수 있다.

  • 대표적으로 MongoDB, Couch DB 등이 있다.

3. Gragh DB

  • 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 저장한다.

  • 객체와 관계를 그래프 형태로 표현한 것으로 관계형모델이라고 할 수 있으며, 데이터 간의 관계가 키일 경우에 적합하다.

  • SNS, Network Diagrams 등에 사용되고, SNS에서 함께 아는 친구 찾기, 추천 등 연관된 데이터를 추천해주는 엔진이나 패턴 기능에 사용된다.

  • 대표적으로 Neo4j가 있다.

4. Column DB

  • Key, Value와 유사한 형태이다. 데이터가 내부에서 Key를 기준으로 오름차순 저장되는 차이점이 있다. Order by를 제공하지 않는 NoSQL에서 다양한 방법으로 활용할 수 있다는 장점이 있다.

  • 이전의 모델들이 key-value 값을 이용해 필드를 결정했다면, 특이하게도 이 모델은 키에서 필드를 결정한다. 키는 Row(key값)와 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 이렇게 저장된 데이터는 하나의 커다란 테이블로 표현이 가능하며, 질의는 Row, Column-family, Column-name을 통해 수행된다.
    정리 원본

  • 대표적으로 HBase, Hypertable이 있다.


장단점

RDBMS

장점

  • 정해진 스키마에 따라 데이터를 저장해야 하므로 명확한 데이터 구조를 보장받을 수 있다.

  • 각 테이블 간의 관계를 정의해야 하므로, 데이터의 중복이 발생하지 않는다.

단점

  • 테이블 간 관계가 정의되어 있으므로, 시스템이 커질 경우, JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.

  • 성능 향상의 방법으로 Scale-up만을 지원하므로, 처리 비용이 크다.

  • 정해진 스키마로 인해 데이터가 유연하지 못하다. 스키마가 변경될 경우 번거롭기 때문에, 스키마가 자주 바뀌지 않는 서비스에 사용한다.

NoSQL

장점

  • 스키마가 없기 때문에 데이터 구조가 유연하고, 자유롭게 필드를 추가할 수 있다.

  • 성능 향상의 방법으로 Scale-up / Scale-out 모두 사용 가능하다.

단점

  • 스키마가 존재하지 않아서, 데이터의 일관성이 존재하지 않는다.

  • 데이터 중복이 발생할 수 있으며, 이 데이터가 변경될 경우 모든 컬렉션에서 update해야 하는 번거로움이 있다.

[참조]

DB, DBMS, SQL 개념 정리

RDBMS의 한계와 NoSQL의 장단점

RDBMS Join 기본 개념

RDBMS와 NoSQL의 차이점

스키마란 무엇인가?

profile
오늘은 무엇을 배울까
post-custom-banner

0개의 댓글