eunnnn 2023. 3. 25. 11:25

RDBMS 

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

Relational DataBase를 관리하는 시스템이라는 뜻인데, Relational DataBase는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.

 

다음 그림과 같이 각 테이블들이 다른 테이블과 관계를 맺고 집합체로서 모여있는 것이 RDBMS이다.

관계를 나타내기 위해 외래 키를 사용하고, 그 키를 이용하여 테이블 간 Join이 가능하다는 특징이 있다.

 

장점

  • SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있다.
  • 작업의 안정성을 보장한다.
  • 데이터의 UPDATE가 빠르다.
  • 데이터의 중복을 방지할 수 있다.

단점

  • 반드시 스키마 규격에 맞춰서 데이터를 다뤄야 한다.
  • 데이터 처리에 대한 부하 발생 시, 처리가 어렵다.
  • 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어 질 수 있다.
  • 스키마 변경 시 데이터의 관리가 번거롭고 어렵다(유연하지 못하다)

 

NoSQL

NoSQL이란 Not Only SQL의 약자로, 관계형 데이터베이스와는 반대로 데이터, 테이블간의 관계를 정의하지 않는 저장 기술이다.

빅데이터를 다룰 때 RDBMS만으로는 트래픽을 감당하기가 어려워졌고, 이를 해결하기 위해 등장했다. 그래서 NoSQL의 핵심은 Horizontal Scalability(수평 확장)과 High Availability(고가용성) 이다.

많은 데이터량을 갖고, 데이터 처리량이 계속적으로 증가하는 환경에서 RDBMS가 부딪힌 한계점은 다음과 같다.

  • 스키마 문제 : 빅데이터를 RDB의 스키마에 맞춰 변경해서 넣으려면 매우 긴 시간의 down time이 발생한다.
  • Scale Up(서버 성능 증가)의 한계 : 관계형 모델과 트랜잭션의 연산, 일관성, 속성을 유지하면서 분산 환경(Scale Out)에서 RDBMS를 조작하는 것은 어렵다.

그래서 이를 개선한 NoSQL의 특징은 다음과 같다.

  • 대용량 데이터 저장이 가능하다.
  • 분산형 구조를 통해 여러 대의 서버에 분산하여 저장하고 상호 복제하여 데이터 유실이나 서비스 중지에 대비한다.
  • Schema-less : 데이터 간의 관계를 정의하지 않기 때문에 테이블 간 join이 불가능하다.
  • RDBMS에 비하여 읽기와 쓰기 성능이 빠르다.

장점

  • 유연하며 자유로운 데이터 구조를 가질 수 있다.
  • 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능합니다.

단점

  • 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 변경을 수행을 해야 다.
  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않는다.

 

NoSQL의 종류

Key-Value Database (ex. redis)

데이터가 Key와 Value의 쌍으로 저장된다. Key는 Value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있다.

 

Document Database (ex. MongoDB)

Documnet Database 데이터는 Key와 Document의 형태로 저장된다. 이 때 Document는 객체와 유사하며, 하나의 단위로 취급되어 저장된다. 도큐먼트 모델에서는 질의의 결과가 JSON이나 xml 형태로 출력되기 때문에 그 사용 방법이 RDBMS에서의 질의 결과를 사용하는 방법과 다르다는 특징이 있다.

 

Wide Column Database

Column-family Model 기반의 Database로, Key안에 (Column, Value)조합으로 된 여러 개의 필드가 존재한다. 그래서 Key 내에서 필드가 결정되는 특징이 있다.

 

Graph Database

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

 

RDBMS vs NoSQL

RDBMS 사용이 용이한 경우

  • 데이터 구조가 변경 될 여지가 없고, 명확한 스키마 명시가 중요한 경우
  • 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 경우 (데이터 무결성을 최대한 보장하기 때문에 데이터 변경시에 유리하다)

NoSQL 사용이 용이한 경우

  • 정확한 데이터 구조를 알 수 없을 때
  • 막대한 데이터 저장을 위해 Database를 Scale-Out해야 할 때
  • 데이터 변경이 많이 이루어지지 않는 경우(중복된 데이터가 변경 될 시에 매우 불편할 수 있음)

 

 

출처

더보기