Databasemedium면접 빈도: medium

RDBMS vs NoSQL

RDBMS vs NoSQL

📝 RDB (Relational Database)

키(key)와 값(value)을 테이블화한 데이터베이스

RDB 장점

  1. 정형화된 데이터 저장

    • 데이터 형태와 크기를 미리 정의
    • 테이블 단위로 구분하여 저장
  2. ACID 보장

    • 트랜잭션을 통한 안정적 데이터 관리
    • 원자성, 일관성, 격리성, 지속성
  3. 복잡한 질의 처리

    • JOIN 등 복잡한 조건의 데이터 검색 가능
  4. 정규화

    • 데이터 중복성 감소
    • 데이터 무결성 개선

🔧 RDBMS (Relational Database Management System)

행과 열을 가진 표 형식 데이터 저장

SQL 언어로 조작

종류: MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MariaDB


💾 MySQL

세계 2위 DBMS

특징:

  • 대부분 OS와 호환
  • C, C++로 제작
  • MyISAM 인덱스 압축 기술
  • B-tree 기반 인덱스
  • Thread 기반 메모리 할당
  • 최대 64개 인덱스 제공

MySQL 장점

✅ 대용량 데이터베이스 설계 ✅ 롤백, 커밋, 이중 암호 지원 ✅ 쿼리 캐시 지원 ✅ 모듈식 스토리지 엔진 아키텍처


MySQL 단점

❌ 복잡한 쿼리 시 성능 저하 ❌ 트랜잭션 지원 불완전 ❌ 사용자 정의 함수 사용 어려움


🐘 PostgreSQL

세계 4위 DBMS

빠른 성장 속도

PostgreSQL 장점

  1. 라이선스 비용 없음

    • BSD 라이선스
    • 소스 변경 후 재배포 가능
  2. 안정성

    • 오래된 오픈소스
    • 대용량 데이터 처리 문제 없음
    • 표준 SQL 준수
  3. 지속적 발전

    • 빠른 업데이트 속도
  4. 독창적 자료형 및 문법

    • 장점이자 단점
    • 국내 자료 부족

🏢 Oracle

세계 1위 DBMS

유닉스 체제에서 가장 많이 사용

Oracle 장점

✅ 멀티플 데이터베이스 튜닝 ✅ 다수 사용자 동시 접근 ✅ 변화 관리 기능 ✅ 경고 시스템 ✅ 분산 처리 ✅ 고성능 트랜잭션 처리


Oracle 단점

❌ 비용 부담 ❌ 초보자 사용 어려움 ❌ 높은 하드웨어 사양 필요


선택 기준

중소기업: MySQL 선호 (저렴한 비용)

대기업: Oracle 선호 (복잡한 비즈니스, 충분한 예산)


🚀 NoSQL (Not only SQL)

웹의 기하급수적 성장 → 비정형 데이터 대량 생산

문제:

  • 이미지, 동영상 등 멀티미디어 데이터
  • SNS 자유로운 형태의 텍스트
  • 로그 기록 등 비정형 데이터
  • 관계 DB로 처리 시 엄청난 비용

해결: NoSQL 등장


🔑 NoSQL 특징

1. 대량 비정형 데이터 처리

ACID 트랜잭션 기능 제공 안 함

대신: ✅ 저렴한 비용 ✅ 여러 컴퓨터에 분산 저장/처리 ✅ 클러스터 환경에 적합


2. 융통성 있는 데이터 모델

스키마 없이 동작

장점: ✅ 데이터 구조 미리 정의 불필요 ✅ 수시로 구조 변경 가능 ✅ 비정형 데이터 저장 적합 ✅ 대부분 오픈 소스


3. 빅데이터 처리

빠른 속도로 대량 생산되는 데이터

특징:

  • 관계 데이터 모델 고집 안 함
  • 미리 정의된 스키마 사용 안 함
  • 클러스터 환경에 최적화

🤝 RDB vs NoSQL

경쟁자가 아닌 보완 관계

사용 목적이 다름


RDB 특징

✅ 트랜잭션으로 일관성 유지 ✅ 외래키로 테이블 간 관계 표현 ✅ 복잡한 질의 처리 가능 ❌ 대량 비정형 데이터 저장 비효율


NoSQL 특징

✅ 대량 비정형 데이터 빠르게 저장/처리 ✅ 자유롭게 구조 변경 ❌ 트랜잭션 기능 없음 ❌ 정해진 스키마 없음 ❌ 데이터 마이닝 등 별도 분석 필요


💾 MongoDB

도큐먼트 기반 데이터베이스

특징:

  • JSON으로 데이터 접근
  • BSON 형태로 저장
  • 와이어드타이거 엔진

장점: ✅ 확장성 뛰어남 ✅ 빅데이터 저장 시 성능 좋음 ✅ 고가용성, 샤딩, 레플리카셋 지원 ✅ 스키마 없이 데이터 삽입 ✅ 다양한 도메인 분석, 로깅에 강점

ObjectID: 유니크한 기본키 자동 생성


🔴 Redis

인메모리 키-값 데이터베이스

특징:

  • 기본 타입: 문자열 (최대 512MB)
  • Set, Hash 등 지원

사용처:

  • Pub/Sub 채팅 시스템
  • 캐싱 계층
  • 세션 정보 관리
  • 실시간 순위표 서비스

📊 RDBMS vs NoSQL 비교

| 구분 | RDB | NoSQL | |------|-----|-------| | 처리 데이터 | 정형 데이터 | 정형 + 비정형 | | 대용량 | 성능 저하 | 대용량 지원 | | 스키마 | 미리 정의 필요 | 없거나 자유로움 | | 트랜잭션 | ACID 보장 | 보장 어려움 | | 검색 | 복잡한 검색 가능 | 단순한 검색 | | 확장성 | 클러스터 부적합 | 클러스터 적합 | | 라이선스 | 고가 | 오픈소스 | | 사례 | MySQL, Oracle | MongoDB, Redis |


🎯 선택 기준

RDBMS 적합

정형화된 데이터 관리

예시:

  • 기업 인사, 회계 자료
  • 일관성 중요
  • 복잡한 질의 처리 필요

NoSQL 적합

비정형 데이터 관리

예시:

  • SNS 이미지, 텍스트
  • CCTV 영상
  • 센싱 데이터
  • 빠른 속도로 대량 생성
  • 삽입 연산 위주

❓ 면접 질문 예시

Q1. RDB의 특징은?

답변: RDB는 키와 값을 테이블화한 데이터베이스로 1) 정형화된 데이터를 테이블 단위로 저장, 2) 트랜잭션을 통해 ACID를 보장하여 안정적 데이터 관리, 3) JOIN 등 복잡한 조건의 데이터 검색 가능, 4) 정규화를 통해 데이터 중복성을 줄이고 무결성을 개선하는 특징이 있습니다.

Q2. NoSQL이 생겨난 이유와 특징은?

답변: 웹이 기하급수적으로 성장하면서 이미지, 동영상, SNS 텍스트, 로그 등 비정형 데이터가 빠른 속도로 대량 생산되었습니다. 관계 데이터베이스로 이를 처리하면 엄청난 비용이 들고 클러스터 환경에 비효율적이었습니다. NoSQL은 ACID 트랜잭션 기능을 제공하지 않는 대신, 저렴한 비용으로 여러 컴퓨터에 데이터를 분산 저장/처리할 수 있으며, 스키마 없이 동작하여 비정형 데이터 저장에 적합합니다.

Q3. RDB와 NoSQL을 비교해서 설명해주세요.

답변: RDB는 정형 데이터를 미리 정의된 스키마로 저장하며, 트랜잭션을 통해 ACID를 보장하고 복잡한 질의 처리가 가능하지만 대용량 처리 시 성능이 저하되고 클러스터 환경에 부적합합니다. NoSQL은 정형/비정형 데이터를 스키마 없이 저장하며, 대용량 데이터 처리를 지원하고 클러스터 환경에 적합하지만 트랜잭션을 지원하지 않아 일관성 유지가 어렵고 단순한 검색만 가능합니다.

Q4. MySQL과 Oracle의 차이는?

답변: MySQL은 세계 2위 DBMS로 오픈소스이며 대부분 OS와 호환되고 쿼리 캐시를 지원하지만, 복잡한 쿼리 시 성능이 저하되고 트랜잭션 지원이 불완전합니다. Oracle은 세계 1위 DBMS로 고성능 트랜잭션 처리, 분산 처리, 멀티플 데이터베이스 튜닝이 가능하지만 비용이 비싸고 높은 하드웨어 사양이 필요합니다. 일반적으로 중소기업은 MySQL을, 대기업은 Oracle을 선호합니다.

Q5. MongoDB와 Redis의 차이는?

답변: MongoDB는 도큐먼트 기반 데이터베이스로 JSON을 통해 데이터에 접근하고 BSON 형태로 저장하며, 스키마 없이 데이터를 삽입할 수 있어 다양한 도메인 분석이나 로깅에 강점이 있습니다. Redis는 인메모리 키-값 데이터베이스로 문자열을 기본 타입으로 하며, Pub/Sub 채팅 시스템, 캐싱 계층, 세션 정보 관리, 실시간 순위표 서비스에 사용됩니다.


📚 원본 참고 자료

출처: 2023-CS-Study

추가 학습 자료

⬅️이 문서를 참조하는 문서

이 개념을 기반으로 하는 고급 주제들입니다.