
백엔드 개발자로서
시스템에 사용,활용되는 데이터를 어떤 형식으로 저장해야 효율적 일지 판단할 필요가 있다.
오늘은 많은 데이터베이스 중에서
"관계형"과 "비관계형" 데이터베이스의 차이와 언제 사용하는 것이 좋을지 알아보자.
RDBMS란?

관계형 데이터베이스, 이름 그대로 데이터 간의 관계를 설정하여 관리할 수 있다.
그리고 관계된 데이터에 대해 join 연산을 통해 정보를 조회할 수 있는 데이터베이스이다.
RDBMS 핵심 특징 2가지
1. 스키마가 명확하게 정해져있다.
2. 하나의 데이터가 여러 테이블에 저장된다.
이런 특징을 가지고 있어서,
데이터베이스를 사용하기에 앞서 테이블 구조와 데이터 타입을 미리 정의해야만 하고,
정의된 스키마 형식에 반드시 맞춰 데이터를 추가 및 조회해야 한다!
어찌 보면
스키마를 미리 확정해야 한다. -> 나중에 수정이 되어야 한다면 힘든 작업이 될 수 있다.
데이터가 여러 테이블에 걸쳐 저장된다. -> 여러 테이블을 조인해서 조회하게돼서 복잡한 쿼리와 성능 문제
그러나, 이러한 특징 때문에 데이터의 무결성이 지켜질 수 있는 장점이 있다.
여기서 잠깐, 데이터 무결성이란?
1. 정확성 : 중복이나 누락이 없는 상태
2. 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태
3. 유효성 : 사용자로부터 값을 입력받을 때 정확한 값만 입력되도록 하는 상태
위 3가지(정확성, 일관성, 유효성)가 보장된다는 의미이다!
즉, RDBMS로 데이터가 야무지게 잘 관리될 수 있다!!

자, 그러면 NoSQL은 어떨까?
NoSQL이란?

비관계형 데이터베이스, 이름 그대로 관계형 모델을 지양하여 비정형 데이터를 저장하고 조회하는데 특화된 데이터베이스이다. 현대의 애플리케이션 발전에 따라, 특정 서비스에 더 적합한 형태로 데이터를 저장할 수 있도록 한다. 보통 key-value, Graph 연결, JSON, BSON, XML 형식, 레코드마다 스키마가 다른 형태로 저장될 수 있다.
NoSQL의 핵심 특징 5가지
1. 테이블이 존재하지 않고, 관계를 정의하지 않는다.
2. 스키마가 없거나, 대략적으로만 설정하여 사용할 수 있다.
4. Scale-Out(수평확장)으로 분산 저장을 통해 대용량 데이터를 관리를 할 수 있다.
5. 데이터 처리 속도가 빠르다.
따라서 스키마가 유연해서 언제든지 구조나 타입을 수정해서 이용할 수 있다.
또한 수평확장을 통해 여러 서버에 데이터를 분산 저장하여 대용량 데이터를 효율적으로 관리할 수 있다.
그리고 애플리케이션에서 필요한 형식으로 저장하기 때문에 데이터 처리 속도가 빠르다.
하지만 이러한 유연함 때문에 데이터 무결성이 보장이 되지 않아서
데이터 중복을 관리해야 하거나, 장애 발생 시 데이터가 유실될 수 있다.
즉, 원하는 형태로 간단하게 저장 및 빠르게 조회할 수 있지만, 데이터 무결성을 보장이 안된다.

그래서 언제 뭘 쓰면 되는데?
RDBMS
1. 데이터 구조가 변경이 잘 안 되는 상황
- RDBMS는 스미카 변경이 힘드니까~!
2. 저장된 데이터가 자주 수정되는 경우
- NoSQL에서 Document 형식으로 저장할 때는 여러 컬렉션 구분 없이 데이터가 저장되므로 수정이 일어나면, 모든 컬렉션에 접근해서 수정해야 하는 단점이 존재
ex ) 금융, ERP, 커머스 시스템
NoSQL
1. 서비스의 정확한 요구사항을 알 수 없거나, 추후 변경될 가능성이 많은 경우
- 스키마 변경에 유연한 특징~! Schema less
2. 조회(Read)는 많이 일어나지만, 수정(Update)이 자주 발생하지 않는 경우
- NoSQL은 애플리케이션에 적합한 형식으로 저장되고, 분산 저장과 병렬 처리 될 수도 있기 때문에 데이터 처리에 뛰어나지만, 수정은 모든 컬렉션에 대해 찾아서 고쳐야 하므로 성능이 좋지 못하다.
3. 대용량 데이터를 저장해야 하는 경우
- NoSQL은 여러 서버에 분산 저장할 수 있기 때문에~!
ex ) 글로벌 데이터 로깅, 소셜 미디어, IoT 시스템
여기서 한 가지 궁금점이 생겼다.
NoSQL은 대용량 데이터를 다루는데 뛰어나기때문에 실시간 스트리밍 서비스, IoT 시스템, 게임에 많이 활용된다.
그런데 어떤 기술적인 특성이 있길래 대용량 데이터를 다루는데 적합할까?
다음에는 어떤 기술적 특징을 가지고 있기에 NoSQL이 대용량 데이터 관리와 처리에 장점이 있는지 알아보자.
Thank you
References
https://www.whatap.io/ko/blog/173/
RDBMS와 NoSQL의 차이
RDBMS와 NoSQL database는 어떻게 다르고, 어떻게 써야 할까요?
www.whatap.io
https://velog.io/@zionedoha/데이터-베이스-무결성이란
[데이터 베이스] 무결성이란?
🌳Integrity(무결성) 정보에 결점이 없도록 유지하는 성질 데이터베이스 내에 저장되는 데이터 값들이 항상 일관성을 갖고 데이터의 유효성, 정확성, 안정성을 유지할 수 있도록 하는 제약조건을
velog.io
https://rural-mouse.tistory.com/38
NoSQL 저장 유형별 간단 정리
NoSQL은 특정한 DB를 말하는 게 아니라 RDB와 달리 데이터 액세스에 SQL만 사용하지 않는 DB들을 일컫는 단어입니다. 따라서 정확한 정의도 없으며 NoSQL을 분류하는 기준도 사람에 따라 모두 다 다릅
rural-mouse.tistory.com
https://code-lab1.tistory.com/53
[DB] NoSQL이란?, NoSQL 특징, NoSQL 종류, NoSQL 장점
NoSQL이란? NoSQL은 비관계형 데이터베이스를 지칭한다. 즉, 관계형 데이터 모델을 지양 하며 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스
code-lab1.tistory.com
'데이터베이스' 카테고리의 다른 글
| NoSQL은 대체 무엇이 빠르다는걸까 (0) | 2024.12.12 |
|---|---|
| Index란 무엇인가. (0) | 2024.10.17 |