본문 바로가기

스터디/Spring Boot

RDBMS, NoSQL이란

RDB란?
  • 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해 주고, DB를 관리하는 시스템이다.
  • RDB란 관계형 데이터 모델에 기초를 둔 데이터베이스다.
  • 관계형 데이터 모델이란 데이터를 구성하는데 필요한 방법 중 하나로 모든 데이터를 2차원의 테이블 형태로 표현해 준다.
    • 쉽게 말하면 각 데이터를 ‘테이블’이라는 표형태의 구조에 저장한다.
  • 데이터베이스에 들어오는 값들을 순차적으로 차곡차곡 쌓아가는 방식이다.
    • Java의 개념 중 스택의 개념과 비슷하다고 보면 좋을 것 같다.
    • 스택이란 LIFO(Last In First Out)처럼 순차적으로 값을 추가하고 삭제하는 ArrayList 같은 배열기반 컬렉션이 적합하다.
    • 이러한 구조 덕분에 함수호출이나 수식 계산에 사용된다.

[MySQL을 활용한 DB 예시]

RDB의 장점은 무엇일까?
  • 많은 데이터들을 정렬하고 흐름에 따라 설계해서 저장하기 때문에 안정성 또한 높다.
  • 그러므로 데이터의 분류, 정렬, 탐색하는 속도가 매우 빠른 편이다.
  • 테이블 형태로 데이터를 관리하기 때문에 유지보수가 편하다.
  • 오래 사용해도 될 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장한다.
반대로 단점은?
  • 미리 작성된 스키마를 수정하기 까다롭다.
  • 시스템이 복잡해지면 Join문을 통해 복잡한 쿼리가 만들어질 수 있다.
  • 다른 DB에 비해 많은 자원, 리소스가 활용되어 시스템 부하가 높아진다.
  • 성능 향상을 위해 Scale-up만을 지원해 비용이 기하급수적으로 비싸질 수 있다.

RDB방식을 사용하는 대표적인 DB로는 Oracle, MySQL, MSSQL, IBM의 DB2 등이 있다.

만약 기존의 단순한 탐색, 입출력이 필요한 서비스에서는 RDB 방식이 적합하다.

 

RDBMS란?

 

RDBMS란 앞에서 설명한 RDB(관계형 데이터베이스)의 개념을 사용하여 데이터의 CRUD기능을 제공하는 시스템이다.

RDB가 데이터베이스의 구조 및 개념이고 해당 개념을 사용 및 관리하기 위한 시스템인 RDBMS로 Oracle, MySQL.. 등의 DB를 사용하는 것이다.

정리하자면 RDB종류, RDBMSRDB가 적용된 데이터베이스 종류,

RDBMS데이터의 일관성과 확장성에 중점을 두어 전통적인 비즈니스 애플리케이션에 적합하다.


NoSQL이란?

기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며,

관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다.

그렇게 기존의 RDBMS와 같은 데이터 모델을 지양하며 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화된 데이터베이스로

스키마 없이 사용하거나 느슨한 스키마를 제공하는 저장소이다.

주로 빅데이터 같은 대용량 데이터 처리에 적합하다.

 

NoSQL의 특징
  1. RDBMS는 외래키 설정 및 Join관계를 통해 연관관계 설정으로 연산을 수행하지만, NoSQL은 Key-Value형태로 데이터가 저장되기 때문에 Join연산이 불가능하다.
  2. RDBMS보다 대용량 데이터 처리에 적합하다.
  3. 분산형 구조로 설계되어 특정 서버에서 에러가 발생하여도 다른 서버의 피해를 최소화한다.
  4. RDB와 달리 테이블의 스키마가 유동적이고 데이터를 저장하는 칼럼이 다른 이름과 다른 타입을 가지는 것을 허용한다.
NoSQL의 종류

 

Key-Value : 저장소

  • 데이터는 Key-Value방식으로 저장된다.
  • 매우 단순한 데이터 모델로, 키와 값을 빠르게 검색이 가능하다.
  • 주로 사용되는 DB : Redis, DynamoDB, Riak
  • 주 사용처 : 세션 관리, 캐싱, 사용자 프로필 저장
  • 데이터 형식 : 들어오는 데이터는 JSON, 숫자, 같은 문자열 등등 어떠한 형태가 될 수 있다.

Redis

    • DBMS를 이용하여 DB에 데이터를 저장하고, 저장 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근하기 때문에 시간이 더 걸린다.
      • 그래서 자동 복구를 통해 안정적으로 운영되는 완전 관리형 클라우드 인메모리 캐시 서비스인 Redis를 사용한다.
      • Redis에서 제공하는 Sorted-Set이라는 자료구조를 사용하여 데이터를 더 빠르고 간단하게 정렬이 가능하다.
      • String, List, Hash, Set, Sorted와 같은 다양한 자료형들을 지원하여 다양한 서비스에서 사용되며 검증된 기술이다.
      • Redis는 지속성을 보장하기 위해 DISK에 저장할 수 있다. 서버가 종료되어도 DISK에 저장된 데이터를 읽어서 메모리에 로딩한다.  이때 DISK에 저장하는 방식으로는 2가지가 잇다.
        • RDB 방식 : 순간적으로 메모리에 있는 내용을 DISK 전체로 옮겨 담는 방식
        • AOF 방식 : Redis의 모든 작성 / 업데이트 여산 자체를 모두 log파일에 기록하는 형태
      • 이러한 구조들로 인해 RDBMS의 MySQL보다 훨씬 빠르다.

2. 문서 저장소

  • 각 데이터는 문서로 저장되며 문서마다 고유한 ID를 가지게 된다.
  • 문서는 일반적으로 JSON, BSON, XML형식으로 저장된다.
  • 주로 사용되는 DB : MongoDB, CouchDB 등등
  • 주로 사용처 : 콘텐츠 관리 시스템, 전자 거래 사이트
  • 데이터 형식 : JSON, BSON, CouchDB같이 수많은 형식 중에 JSON이 일반적이다.
NoSQL 장점
  1. RDBMS보다 자원에 주는 부하가 적어 분산처리와 병렬처리가 가능하다.
  2. 비정형 데이터 구조 설계로 설계 비용이 감소한다.
  3. 대용량 데이터 처리에 적합
  4. 테이블의 칼럼을 가변적인 구조로 데이터 저장이 가능
단점

 

데이터 업데이트 중 장애가 발생하면 데이터가 손실될 수 있다.

  • 이때 데이터를 알고리즘에 의해 여러 노드에 분산해서 저장한다.
  • 만약 데이터 저장소를 추가로 확장해야 한다면 여러 노드에 저장된 데이터들을 다시 배치해야 한다.
    • 이를 리밸런싱이라고 한다.

가변구조로 인한 데이터 저장 공간이 넉넉하게 필요

데이터의 일관성이 항상 보장되지 않는다.

NoSQL가용성과 확장성에 중점을 두어 대용량 데이터 같은 비정형 데이터 처리에 적합하다.

 

 

이러한 RDBMS, NoSQL에 대해서 알아보았는데, 데이터의 일관성 및 해당 구조에서 데이터를 CRUD 하려면 RDBMS를 사용하고,

데이터의 일관성이 보장되지 않는 단점이 있지만 빠르고 대용량 데이터 처리를 해야 한다면 NoSQL을 사용하는 것이 좋을 것 같다.

 

'스터디 > Spring Boot' 카테고리의 다른 글

모놀리식 아키텍처  (0) 2024.08.15
[Spring Boot] JPA란  (0) 2024.05.19
[Spring Boot] 스프링 부트란?  (0) 2024.05.19