데이터베이스 NoSQL vs RDBMS 차이점 및 선택 가이드

2024. 6. 16. 23:38Back-end/Database

반응형

 

데이터베이스에는 여러 종류가 있는데 이번 포스팅에서는 mongoDB가 대표적인 NoSQL과 MySQL,Oracle이 대표적인 RDBMS에 대해서 정리한다.

 

1.  NoSQL과 RDBMS의 기본 개념

1) NoSQL 데이터베이스

 

비정형 데이터를 저장하는 다양한 데이터 모델을 제공하며 전통적인 관계형 데이터베이스와 다른 방식으로 접근한다.

NoSQL은 "Not Only SQL"의 약자로 SQL 기반의 관계형 데이터베이스 외에도 다양한 데이터 모델을 지원한다는 뜻이다.

 

📌 특징

  • 유연한 스키마 : 데이터 구조가 유연하며, 변경이 용이하다.
  • 수평적 확장성: 서버 추가를 통해 쉬운 확장이 가능하다.
  • BASE 속성 : 결국 일관성(Eventual Consistency)을 중시한다.  → 높은 가용성과 성능을 제공하는 대신, 일관성 보장을 지연시킨다.

BASE 속성의 구성 요소

1. Basically Available (기본적 가용성): 시스템은 언제든지 부분적인 가용성을 보장한다.

2. Soft state (가변 상태): 데이터의 상태가 언제든지 변경될 수 있으며, 시스템이 업데이트를 지속적으로 반영하므로 항상 최신 상태를 유지하지 않아도 된다.

3. Eventual consistency (결국 일관성) : 모든 업데이트가 반영되어 최종적으로 모든 노드가 동일한 데이터 상태를 갖는다.

 

📌 대표적인 NoSQL 데이터베이스

문서-지향형 MongoDB, CouchDB
키-값 저장소 Redis, DynamoDB
열 지향형 Cassandra, HBase
그래프 데이터베이스 Neo4j, ArangoDB

 

2) RDBMS (관계형 데이터베이스)

 

관계형 데이터베이스는 데이터를 행과 열로 구성된 테이블 형식으로 저장한다.

각 테이블은 고정된 스키마(schema)를 가지며, 데이터는 SQL을 통해 관리된다.

 

📌 특징

  • 고정된 스키마 : 데이터 구조가 미리 정의되어 있어야 한다.
  • ACID 속성 : 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장한다.
  • 강력한 데이터 무결성 : 데이터 무결성을 엄격하게 유지한다.

📌 대표적인 RDMS 데이터베이스 : MySQL, PostgreSQL, Oracle, SQL Server

 

2. NoSQL vs RDBMS 주요 차이점

구분 NoSQL RDBMS
데이터 모델 다양한 모델(문서, 키-값, 그래프 등) 테이블 기반
스키마 유연한 스키마 고정 스키마
확장성 수평적 확장 수직적 확장
ACID vs BASE BASE ACID

 

3. 언제 NoSQL을 선택해야 할까?

  • 대량의 비정형 데이터를 처리할 때
  • 유연한 스키마가 필요할 때
  • 높은 확장성과 성능이 요구될 때
// mongoDB 데이터 방식 예시

{
  "_id": ObjectId("60c72b2f9f1b2c001f8e4e3b"),
  "name": "John Doe",
  "email": "john.doe@example.com",
  "age": 29,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  },
  "hobbies": ["reading", "traveling", "swimming"]
}

 

4. 언제 RDBMS를 선택해야 할까?

  • 복잡한 쿼리와 트랜잭션이 필요한 경우
  • 고정된 스키마가 필요한 경우
  • 데이터 무결성이 중요한 경우

 

5. 사용환경 비교

1) NoSQL

  • 빅데이터 애플리케이션
    • 예시 : 소셜 미디어 분석, 로그 데이터 수집 및 분석, IoT 데이터 저장
    • 대용량 데이터 처리와 수평적 확장성
  • 실시간 웹 애플리케이션
    • 예시 : 채팅 애플리케이션, 실시간 게임
    • 빠른 읽기/쓰기 성능과 낮은 지연 시간
  • 비정형 데이터 관리
    • 예시 : 문서 관리 시스템, 블로그 플랫폼
    • 유연한 스키마와 다양한 데이터 모델 지원

대규모 데이터 처리, 유연한 데이터 구조, 높은 확장성과 성능을 요구하는 환경에 적합

 

 

2) RDBMS

  • 트랜잭션 처리 시스템
    • 예시 : 은행, 금융 거래 시스템
    • ACID 속성을 통한 높은 데이터 무결성 및 일관성 제공
  • 기업용 애플리케이션
    • 예시 : ERP 시스템, CRM 시스템
    • 복잡한 쿼리와 데이터 분석에 강함
  • 정형 데이터 관리
    • 예시 : 인사 관리 시스템, 재고 관리 시스템
    • 고정된 스키마와 관계형 데이터 모델에 적합

데이터 무결성, 트랜잭션 관리, 복잡한 쿼리 처리와 정형 데이터 관리를 요구하는 환경에 적합

반응형

'Back-end > Database' 카테고리의 다른 글

[mysql] 데이터베이스 InnoDB의 장점과 단점  (0) 2024.05.18
top
bottom