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

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

by 데이널 2023. 11. 10.

'데이널'의 컨텐츠에 포함된 정보는?

    NoSQL은 어떤 점이 rdbms와 다를까요?

     

    이글에서는 NoSQL의 등장 배경과 그 특징에 대해 알아보시죠. 결론부터 말하면 NoSQL은 비관계형, 분산, 오픈소스, 수평 확장성이 주요 특징을 가지고 있습니다.

     

     

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

     

    등장 배경

    정통적인 관계형 데이터베이스(rdbms) 생태계를 어느순간 클러스터가 위협하기 시작했습니다. 여기서 클러스터란 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말합니다.

     

    바로 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 데이터베이스는 다양한 유형으로 발전해가고 있습니다.