본문 바로가기

CS

[ DB -1 ] 관계형 데이터베이스(RDB)와 NoSQL의 차이점

반응형
💡 [DB] 관련 글 읽기

 DB - 2 ] 트랜잭션(Transaction): 데이터 무결성이란

[ DB - 3 ] 인덱싱(Indexing)이란? : 인덱싱을 하는 이유

 

 


 

1. 관계형 데이터베이스(RDB, Relational Database)

  • 데이터를 테이블(표) 형식으로 저장하는 데이터베이스.
  • 행(Row)과 열(Column)로 데이터를 관리하며, 데이터 간의 관계를 정의하고 연결.
  • 특징:
    • 정해진 스키마를 기반으로 데이터를 저장.
    • 데이터 중복을 최소화하기 위해 정규화를 사용.
    • 강력한 트랜잭션 처리(ACID 특성)로 데이터 무결성을 보장.

2. NoSQL (Not Only SQL)

  • 테이블 형식이 아닌 다양한 방식으로 데이터를 저장하는 데이터베이스.
  • 정형화된 데이터뿐만 아니라 비정형 데이터(문서, JSON 등)를 저장 가능.
  • 특징:
    • 유연한 스키마로 데이터를 저장하므로 구조 변경이 용이.
    • 대량의 데이터를 빠르게 읽고 쓰는 데 적합.
    • 데이터의 중복을 허용하며, 데이터 업데이트 시 여러 컬렉션에서 수정이 필요할 수 있음.

3. 관계형 데이터베이스(RDB)와 NoSQL의 차이점

구분 관계형 데이터베이스(RDB) NoSQL
예시 MySQL, PostgreSQL, Oracle MongoDB, Cassandra, Redis
스키마 고정된 스키마 (정형 데이터 저장) 유연한 스키마 (정형, 비정형 데이터 모두 저장 가능)
개발 목적 데이터의 무결성과 정확성 보장, 트랜잭션 중심 대규모 데이터 저장 및 빠른 조회
데이터 저장 모델 테이블 기반 (행과 열 구조) 문서(Document), 키-값(Key-Value), 컬럼(Columnar) 등
장점 데이터 중복 최소화, 강력한 트랜잭션 지원 (ACID) 확장성, 빠른 읽기/쓰기, 대규모 비정형 데이터 처리 가능
단점 확장성 한계, 대규모 데이터 처리에 성능 저하 데이터 중복, 트랜잭션 처리 미흡
적용 사례 금융, ERP, 재고 관리 소셜 미디어, 로그 데이터, 추천 시스템

 

  • RDB는 데이터 무결성이 중요하고 데이터 수정이 빈번한 경우에 적합.
  • NoSQL은 대규모 데이터를 빠르게 처리하고 저장해야 하는 상황에 유리.

 

4. 관계형 데이터베이스(RDB)와 NoSQL 예시 코드

 4-1. RDB 예시 코드 (MySQL)

테이블 생성

CREATE TABLE users ( 
id INT AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(50)NOT NULL, 
email VARCHAR(100) UNIQUE NOT NULL,
age INT );

데이터 삽입

INSERT INTO users (name, email, age) 
VALUES ('Alice', 'alice@example.com', 25),
       ('Bob', 'bob@example.com', 30);

 

데이터 조회

SELECT * FROM users WHERE age > 25;
 

결과

id name email age
2 Bob bob@example.com 30

 


4-2. NoSQL 예시 코드 (MongoDB)

컬렉션 생성 및 데이터 삽입

db.users.insertMany([
    { name: "Alice", email: "alice@example.com", age: 25 },
    { name: "Bob", email: "bob@example.com", age: 30 }
]);

데이터 조회

db.users.find({ age: { $gt: 25 } });
 

결과

[
    {
        "_id": ObjectId("..."),
        "name": "Bob",
        "email": "bob@example.com",
        "age": 30
    }
]

 

 


반응형