RDB vs NoSQL

RDB와 NOSQL의 차이

RDB(Relational Database)

관계형 데이터베이스인 RDB(Relational Database)는 관계형 모델을 기반으로 하는 데이터베이스이다. 이를 관리하기 위한 시스템을 RDBMS(Relational Database Management System)라 하고 이러한 RDBMS는 주로 SQL을 이용해 데이터를 조작하게 된다.

관계형 데이터베이스 특징

  • 2차원 데이터로 표현(행/열)
  • 상호 관련성을 가진 테이블의 집합으로 구성
  • 테이블 사이의 관계를 외래키로 나타냄
  • 스키마 변경이 어렵다.
  • 수직 확장(Scale-up)은 가능하지만, 수평 확장(Scale-out)은 어렵다.
    • 수직 확장 같은 경우 하드웨어 확장을 의미, 수평 확장의 경우 양적 확장을 의미한다.

회원 Table

회원 번호(PK)회원 이름나이
1회원A20
2회원B25

주문 Table

주문 번호(PK)주문 회원 번호(FK)주문 가격
20220704bsad150000
20220703sdsd2100000

NOSQL (Not only SQL)

NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하여 데이터의 저장 및 검색을 제공하는 데이터베이스이다. RDB와는 달리 테이블 간 관계를 정의하지 않는다.

NoSQL은 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS에서 처리하려면은 비용이 기하급수적으로 증가(RDB에서는 성능 향상하려면 장비를 추가하는 수직 확장인 Scale-up)하기 때문에 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 수평 확장 방식인 Scale-out을 위해 등장했다.

저장 방식에 따른 NoSQL 분류

Key-Value Model

Key와 Value 쌍으로 저장되는 데이터 저장 방식으로 대표적으로 Redis가 있다. 단순한 저장구조로 인하여 복잡한 조회 연산을 지원하지 않는다. 고속 읽기와 쓰기에 최적화된 경우가 많다.

Document Model

Key-Value 모델을 확장한 구조로 하나의 키에 하나의 구조화된 문서를 저장하고 조회한다. 또한 검색에 최적화 되어 있다. Key-Value Model과 다른 점은 Document Model 같은 경우 Value가 계층적인 형태인 문서로 저장된다. 대표적으로 MongoDB가 있다.

Wide Column Model

하나의 키에 여러 개의 컬럼 이름과 컬럼 값의 쌍으로 이루어진 데이터를 저장하고 조회한다. 키는 Row(키 값)와 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 대표적으로 HBase가 있다.

Graph Model

노드와 엣지로 그래프에 데이터를 표현하는 데이터베이스로 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라 할 수 있으며, 데이터 간의 관게가 탐색의 키일 경우 적합하다. 대표적으로 Neo4J가 있다.

그래서 RDB, NoSQL 어떨 때 사용해야 될까?

RDB는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋다. 또한 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합.

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋다. 하지만 데이터 중복이 발생할 수 있어 변경이 많이 이루어지지 않는 시스템이 좋고 또한 막대한 데이터를 저장하기 위해 수평확장(Scale-out) 해야 되는 시스템에 적합하다.


참고

*틀린 부분이 있으면 언제든지 말씀해 주시면 공부해서 수정하겠습니다.


© 2022. All rights reserved.

Powered by 애송이