ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RDBMS vs NoSQL
    DB 2024. 3. 1. 16:37

    [RDBMS]

    • 2차원 테이블 구조: 데이터를 테이블 형태로 저장하고, 테이블 간 관계를 정의하여 데이터를 관리합니다.
    • ACID 속성:
      • 원자성 (Atomicity): 트랜잭션은 모두 성공하거나 모두 실패해야 한다는 원칙.
      • 일관성 (Consistency): 트랜잭션이 시작되기 전과 후에 일관되게 논리적인 무결성을 지켜야한다해당 데이터베이스에 정의된 규칙 (스키마의 제약 조건이나 데이터 값의 논리적 무결성, 또는 비즈니스 규칙)을 지켜야한다
      • 격리성 (Isolation): 동시에 여러 트랜잭션이 실행될 때, 다른 트랜잭션에 영향을 미치지 않도록 함.
      • 지속성 (Durability): 트랜잭션이 완료되면 그 결과는 영구적으로 저장됨.
    • 정규화: 데이터를 중복을 줄이고, 효율적으로 저장하기 위해 정규화 과정을 거칩니다. 이로 인해 데이터의 중복성이 최소화됩니다.
    • 트랜잭션 보장: 모든 트랜잭션은 ACID 특성을 준수하며, 데이터의 무결성을 유지합니다.
    • 스케일 아웃이 어려운 이유: RDBMS는 기본적으로 수평 확장이 어려운 구조로 설계되어 있습니다. 데이터의 관계가 엄격하게 정의되고, 이를 분산해서 처리하는 데 어려움이 있습니다. 수평 확장을 위해선 추가적인 복잡한 설정이나 비용이 필요합니다.

     

    RDBMS 장점

    ACID를 보장하여 트랜잭션이 안정적이고 신뢰성이 높음

    데이터가 테이블 형식으로 명확히 구조화되어 있어 SQL을 통해 데이터 검색과 조작이 쉽고 효율적임

     

    RDBMS 단점

    Scale Out이 어려움 (수평적 확장이 어렵고, 수직적 확장은 기하급수적인 비용이 듬)

    고정된 스키마로 유연성이 떨어져 빠르게 변화하는 애플리케이션 환경에 부적합


    [NoSQL (Not Only SQL)]

     

    SQL을 안쓴다는 것이 아니라

    SQL 뿐만 아니라 다른 기능도 지원한다는 것이다

     

    NoSQL은 관계형 데이터베이스보다 더 다양한 데이터(정형 데이터 + 비정형, 반정형)를 저장할 수 있고

    데이터 저장과 검색에 있어 매우 뛰어난 성능을 나타낸다

     


    [NoSQL의 등장한 배경]

     

    NoSQL이란(Not Only SQL)의 약자로 말 그대도 위에서 설명한 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하고 있습니다. 또한 NoSQL에서는 RDBMS와는 달리 테이블 간 관계를 정의하지 않습니다. 데이터 테이블은 그냥 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 일반적으로 테이블 간 Join도 불가능합니다. 

     

    NoSQL은 점점 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS에 단점인 성능을 향상시키기 위해서는 장비가 좋아야 하는 Scale-Up의 특징이 비용을 기하급수적으로 증가시키기 때문에 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장하였습니다.

     


    [NoSQL 유형]

     

    1. Key-Value

    2. Document

    3. Graph


    [NoSQL의 장점]

     

    1. 다양한 데이터 형식을 저장할 수 있다

     

    정형, 반정형, 비정형 데이터 모두 처리가 가능하다

    그 이유는 유연한 스키마 때문이다

    관계형 데이터베이스 예시

     

    위 그림처럼 관계형 데이터베이스의 경우

    다른 형식의 데이터가 들어오면 필요한 column을 추가하고

    스키마를 정의(집주소 column에 들어갈 데이터 크기와 유형 정의)해줘야한다

    key-value 형 NoSQL 예시

     

    하지만 NoSQL은 테이블 구조 변경과 스키마 정의 없이

    그냥 테이블에 데이터를 추가해주면 된다

     

    비정형, 반정형 데이터의 경우

    데이터 형식이 제각각이지만(column이나 데이터 타입이 달라도)

    그대로 저장이 가능하다

     

    2. 수평 확장(Horizontal Scale Out)이 가능하다

     

    컴퓨터 용량이 부족할때를 생각해보자

     

    수직확장의 경우 컴퓨터에 추가로 스토리지(HDD SDD)를 장착해 저장공간을 늘리는 것을 말한다

    관계형 데이터베이스는 수직확장만 가능하다

    (수직확장 시 스토리지 추가뿐만 아니라 성능을 위해 자원(CPU, RAM)도 확장)

     

    수평확장은 내 컴퓨터 용량을 늘리는 대신 다른 컴퓨터(노드)를 저장소로 사용하는 것이다.

    이것을 분산 데이터베이스라고 한다

    NoSQL은 수평확장이 가능하기 때문에 저장공간이 더 필요하면 무한대로 컴퓨터만 붙이면 된다. 즉 확장성이 좋다!

     

    이때 관계형 데이터베이스가 수평확장이 안되는 이유

    수평확장을 해서 데이터가 여러 컴퓨터에 분산되어 있으면 일관성이 떨어져(여러 컴퓨터에 복제된 데이터가 있어서)

    관계형 데이터베이스의 가장 큰 장점인 JOIN과 ACID트랜잭션 기능을 사용하지 못하기 때문이다.

     

    3. 성능이 좋다

    일반적인 NoSQL은 분산 저장으로 JOIN 기능을 사용할 수 없기 때문에

    쿼리 수행 복잡도가 감소해 처리 속도가 빠르다

    (분산 저장할때 조인이 필요한 데이터는 같이 중복저장한다)

     

    또한 데이터가 여러 컴퓨터(노드)에 분산 중복 저장되어 있어 일부 컴퓨터가 시스템 오류 또는 데이터 손실이 일어나도 데이터베이스는 정상적으로 사용 및 복구할 수 있다.

     

    NoSQL은 RDBMS와는 다르게 데이터구조에 따라 여러가지 모델이 있다

    JOIN 기능을 제공하는 Document key-value NoSQL 모델도 있고

    작동원리는 모르겠지만 ACID 트랜잭션을 지원하는 NOSQL(MongoDB)도 있다

     

    그래서 원하는 데이터 관리 방식 및 구조(key-value, wide column, graph, document 등)에 따라

    NoSQL 데이터베이스 모델을 정해야한다.

     


    [NoSQL의 단점]

     

    ACID 지원을 보장하지 않아 중복된 데이터가 존재할 수 있다

    ACID가 필요한 경우 치명적인 단점으로 부각됨

     

    복잡한 쿼리 처리

    • 관계형 데이터베이스처럼 SQL을 사용한 복잡한 쿼리와 조인이 어려움.
    • 데이터를 조작하거나 분석하는 작업이 더 복잡할 수 있음.

    UPDATE하는데 비교적 느리다 -> Scale out 으로 분산되어있을때는 중복되는걸 다 바꿔주느라??


    [NoSQL의 CAP이론]

     

    • CAP 이론: NoSQL은 일관성(Consistency), 가용성(Availability), 분산 허용(Partition Tolerance) 중 두 가지를 보장할 수 있습니다.
      • 일관성 (Consistency): 모든 노드가 동일한 데이터를 제공한다는 보장.
      • 가용성 (Availability): 데이터가 언제나 접근 가능하다는 보장.
      • 분산 허용 (Partition Tolerance): 네트워크 분할이 발생해도 시스템은 계속 작동한다는 보장.
    • 원자성 포기: NoSQL 시스템에서는 ACID의 원자성을 보장하지 않는 경우가 많습니다. 대신 BASE라는 개념을 따르며, Basically Available, Soft state, Eventual consistency를 추구합니다. 이로 인해 트랜잭션의 완전한 원자성 대신, 일정 시점 후 데이터가 일관성 상태로 들어간다고 보장합니다.
    • 스케일 아웃이 쉬움: NoSQL 시스템은 수평 확장에 최적화되어 있으며, 여러 서버에 데이터를 분산하여 쉽게 확장할 수 있습니다. 특히 분산 시스템의 특성상 데이터를 여러 노드에 분산하여 저장하는데 적합합니다.
    • 대용량 데이터 처리: NoSQL은 대규모의 비정형 데이터를 효율적으로 저장하고 처리하는 데 유리하며, 특히 소셜 미디어, 로그, 센서 데이터와 같은 대용량 데이터를 처리할 때 강점을 보입니다.

    - 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음
    - 직접 프로그래밍을 하는 등의 NoSQL Interface를 통한 데이터 액세스
    - 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
    - 관계형 데이터베이스에서는 ACID 미보장
    - 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의 (Schema-less)
    - 데이터베이스의 중단 없는 서비스와 자동 복구 기능지원
    - 확장성, 가용성, 높은 성능

     


    [RDBMS와 NoSQL의 선택 기준]

     

    애플리케이션의 요구 사항에 따라 RDBMS와 NoSQL을 선택하는 기준을 정리해보겠습니다.

     

    첫째, 데이터 안정성이 중요한 경우 RDBMS를 선택하는 것이 좋습니다.

    왜냐하면 트랜잭션을 통해 데이터의 일관성을 유지할 수 있기 때문입니다.

     

    둘째, 대규모 데이터 처리와 빠른 응답 속도가 중요한 경우 NoSQL을 선택하는 것이 좋습니다.

    왜냐하면 수평적 확장이 가능하고, 데이터 중복을 허용하기 때문입니다.

     

    셋째, 데이터 구조가 자주 변경되는 경우 NoSQL을 선택하는 것이 좋습니다.

    왜냐하면 유연한 데이터 모델을 제공하기 때문입니다.

     

    넷째, 복잡한 데이터 구조를 가진 애플리케이션의 경우 RDBMS를 선택하는 것이 좋습니다.

    왜냐하면 조인 연산을 통해 여러 테이블의 데이터를 결합할 수 있기 때문입니다.

     

    따라서, 애플리케이션의 요구 사항을 분석하고, 적절한 데이터베이스를 선택하는 것이 중요합니다.

     

    https://www.samsungsds.com/kr/insights/1232564_4627.html

     

    NoSQL이란 무엇인가? 대량데이터 동시처리위한 DBMS 종류와 특징 | 인사이트리포트 | 삼성SDS

    NoSQL이란 무엇인가? 대량데이터 동시처리위한 DBMS 종류와 특징

    www.samsungsds.com

     

    'DB' 카테고리의 다른 글

    정규화 역정규화  (0) 2024.06.07
    스케일인 스케일아웃  (0) 2024.03.29
    옵티마이저  (0) 2024.03.27
    데이터베이스 엔진  (0) 2024.03.03
    DB 서버 vs DBMS vs DB 엔진  (0) 2023.10.13