본문 바로가기
데이터베이스

NoSQL의 특징 - RDBMS와 어떻게 다를까?

by Data Lib 2023. 11. 10.

이번 포스팅에서는 NoSQL의 등장 배경과 특징에 대해 살펴보겠습니다. 어떤 특징이 rdbms와 다른 지도 알아보겠습니다. 결론부터 말하면 NoSQL은 비관계형, 분산, 오픈소스, 수평 확장성이 주요 특징을 가지고 있습니다.

 

 

"No! SQL"이 아니라 "Not Only SQL"이라고 하죠. SQL을 사용하지 않는다는 것이 아니라 SQL만 의존하지 않는다는 이야기입니다. 오해하시면 안됩니다. 그럼 등장 배경부터 살펴보겠습니다. 

 

등장 배경

정통적인 관계형 데이터베이스 생태계를 클러스터가 위협하기 시작했습니다. 여기서 클러스터란 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말합니다. Scale Out이 가능한 데이터베이스들이 주목을 받았다는 이야기죠. 만약 Scale Up, Scale Out이 궁금하다면 링크를 참고하시기 바랍니다. 

 


웹의 규모가 극적으로 성장하기 시작하면서 대량의 데이터 발생, 대규모 업무 처리가 가능한 데이터베이스가 필요했습니다. 그리고 기존 rdbms로 구축하기에는 비용이 너무 많이 들었던 거죠. 그래서 가성비가 좋은 클러스터 환경을 갖춘 NoSQL이 등장하게 됩니다. 

 

NoSQL의 특징

NoSQL이 관계형 데이터베이스와 확연히 차이가 나는 특징 4가지에 대해 설명하겠습니다. 아래 4가지 중요한 특징이니 이것만 알아두어도 충분합니다. 처음 NoSQL 데이터베이스인 카산드라를 사용했을 때 좀 의아했습니다. 어떻게 데이터 모델링으로 구조를 설계 해야 할지 난감하더군요. 아래 특징들을 보시면 어느 정도 이해하실 거라 믿어요. 

 

1. KEY/VALUE로 구성

  • 우선 테이블, 컬럼이라기 보다는 키와 벨류로 구성되어 있습니다. 물론 NoSQL 종류에 따라 Key/Value, Key/Column Family, Document / Graph 등 다양합니다. 

2. No 조인, No 트랜잭션

  • 아래 그름에서 볼 수 있듯이 개체 간에 관계를 설정하지 않습니다. 그래서 참조 무결성도 조인도 없다고 생각하면 됩니다. 결국은 데이터 모델링의 1,2,3 정규형 같은 정규화가 의미 없습니다. 

 

3. 데이터 무결성/정합성 보장 어려움

  • 개체간의 관계가 없으므로 참조 무결성도 보장되지 않습니다. 만약 필요하다면 애플리케이션에서 처리할 수 있게 설계해야 합니다. 

4. 애플리케이션에 최적화된 설계

  • 어플리케이션에 맞게 설계해야 하는 것이 핵심입니다. 만약 동일한 데이터라고 하더라도 애플리케이션이 추가되거나 바뀌면 새롭게 구조를 설계해야 합니다.  

 

RDBMS vs NoSQL 비교
RDBMS vs NoSQL 비교

 

NoSQL과 RDBMS와 차이점

 

관계형 데이터베이스와 NoSQL의 가장 큰 차이점은 NoSQL은 애플리케이션에 맞게 데이터를 설계한다는 것입니다. 그런 이유로 빠른 응답 속도를 낼 수가 있습니다. 대신에 애플리케이션이 추가되거나 변경될 때마자 구조의 변경이 불가피합니다. 

 

관점 관계형 데이터베이스 NoSQL 데이터베이스 비고
설계 방식
정형화된 업무의 데이터 무결성/ 정합성/일관성 있는 저장구조 설계
대용량 데이터에서 빠른 응답 성능과 확장성, 가용성 좋은 저장구조 설계
저장구조에 대한 설계
구성 요소
개체, 관계, 속성
Key, Value, Column
관계를 제외하고 대응되는 부분 존재
정규화
1NF, 2NF, 3NF, BCNF
정규화 개념 없음
 
조인과 트랜잭션
조인 존재
트랜잭션 존재
No 조인
No 트랜잭션
 
참조무결성
참조무결성 존재
참조무결성 없음
 
어플리케이션
어플리케이션 특이성에 독립적으로 설계
어플리케이션에 최적화된 설계
 
데이터
기업의 회계정보, 고객정보, 상품 등 핵심 데이터
중요치 않으나 데이터 양이 많고 급격히 늘어나는 데이터
Bigdata 환경에 적합
환경
일반 환경
클라우드 컴퓨팅처럼 수천, 수만 대의 서버로 이뤄진 분산 환경
 
장점
무결성과 정합성(데이터 신뢰도)
비용과 확장성
NoSQL 은 오픈소스

 

마무리

NoSQL은 데이터베이스 관리의 패러다임 전환했다고 볼 수 있습니다. RDBMS에서 데이터 구조 설계가 유연성과 일관성 등을 고려한 신중한 설계가 필요했습니다. 하지만 NoSQL은 개발자가 애플리케이션 요구 사항과 확장성을 고려해 어플리케션에 최적화하게 설계할 수 있습니다.

 

지금 시장에 나와 있는 NoSQL은 도큐먼트 지향 데이터베이스(MongoDB 등), Key-Value 스토어(Redis 등), 와이드-칼럼 스토어(Apache Cassandra 등) 및 그래프 데이터베이스(Neo4j 등)가 있습니다. 이렇게 NoSQL 데이터베이스는 다양한 유형으로 발전해가고 있습니다.