CS

DBMS, RDBMS, RDB

baek-dev 2025. 2. 3. 19:22

1. DBMS

  • 정의 : 데이터베이스를 관리하는 소프트웨어. 데이터를 저장, 검색, 수정, 삭제 등 데이터 관련 작업을 처리함.
  • 역할 : 
    • 데이터를 체계적으로 저장.
    • 데이터를 효율적으로 검색하도록 지원.
    • 다중 사용자가 데이터에 동시에 접근할 수 있도록 관리.
    • 데이터의 무결성(Integrity)과 보안을 보장.
  • 예시 : Oracle DB, MySQL, MongoDB, Microsoft SQL Server 등.
  • 비유 : "도서관에서 책을 관리하는 사서" 사서(DBMS)는 책(데이터)을 분류하고, 독자(사용자)가 원하는 책을 쉽게 찾을 수 있도록 돕는다.

2. RDBMS

  • 정의 : 관계형 모델을 기반으로 데이터를 관리하는 DBMS.
    • 데이터를 표(Table) 형태로 저장하며, 각 표는 열(Column)과 행(Row)으로 구성됨.
    • 데이터 간의 관계를 외래키(FK)로 표현함.
  • 특징 :
    • SQL을 사용하여 데이터 작업을 수행함.
    • 정규화 통해 데이터 중복을 최소화.
    • 데이터 무결성을 보장.
    • 트랜잭션 관리(ACID 특성)를 통해 신뢰성 높은 데이터 처리를 지원.
  • 예시 : MySQL, PostgreSQL, Oracle DB, Microsoft SQL Server 등.
  • 비유 : "엑셀 시트처럼 데이터가 표로 관리되며, 각 표가 서로 연결되어 있는 구조"

3. RDB

  • 정의 : RDBMS에서 관리하는 데이터베이스 자체. 즉, 관계형 데이터베이스
    • 데이터를 표 형식으로 저장하며, 각 표는 고유한 이름을 가지며 행과 열로 구성됨.
  • 특징 :
    • 데이터를 저장하는 방식만을 뜻하며, 실제로 데이터를 처리하는 시스템은 RDBMS임.
  • 비유 : "RDBMS가 아파트 관리 사무소라면, RDB는 아파트 자체"

정리 및 비교

용어 역할
DBMS 데이터베이스를 관리하는 소프트웨어 데이터 저장, 검색, 수정, 삭제 등을 관리.
RDBMS 관계형 모델 기반 DBMS 데이터를 표로 저장하고, 관계를 정의하며, SQL 사용.
RDB 관계형 데이터베이스 표 형태로 저장된 데이터 그 자체.

추가 예시

1. DBMS의 비관계형 예시 :

  • MongoDB, Cassandra, Redis 등은 RDBMS가 아닌 DBMS의 한 예로, 데이터를 표가 아닌 다른 방식(예: JSON, 키-값)으로 저장함.

2. RDBMS의 데이터 구조 :

학생 테이블
---------------------
학생ID   이름     나이
1       홍길동    20
2       김철수    22

수업 테이블
---------------------
수업ID   수업명      학생ID
101     자바프로그래밍  1
102     데이터베이스   2

위 예시에서, 학생 테이블과 수업 테이블은 학생ID로 관계를 표현함.


Q1: 관계형 데이터베이스에서 정규화(Normalization)는 왜 중요한가요?

 

정규화는 데이터베이스 설계 단계에서 데이터 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터 구조를 정리하는 과정.

 

  1. 정규화가 중요한 이유
    1. 데이터 중복 감소
      • 데이터가 여러곳에 중복 저장되면 수정시 관리가 어려워지고, 불일치가 발생할 가능성이 높아짐.
      • 예: 학생 정보가 여러 테이블에 중복 저장되면, 한 테이블에서 데이터를 수정해도 다른 테이블에 반영되지 않을 수 있음.
    2. 데이터 무결성 보장
      • 데이터 간의 관계와 제약 조건을 정의해 데이터의 일관성을 유지함.
      • 예: 외래키를 사용해 연결된 테이블의 데이터가 유효함을 보장.
    3. 효율적인 데이터 관리
      • 데이터를 정규화하면 테이블 구조가 더 간단해지고, 저장소 사용량이 줄어듦.
      • 불필요한 데이터 중복이 줄어들면 디스크 사용량과 쿼리 처리속도가 개선됨.
    4. 유지보수 용이성
      • 정규화된 데이터베이스는 데이터모델을 명확히 정의하므로, 새로운 데이터 추가나 수정이 쉬움.
  2. 정규화 과정 (3NF까지 주요 단계)
    1. 1NF (제1정규형):
      • 각 열이 하나의 값만 가지도록 테이블을 정리.
      • 예: 주소 필드를 "도시", "우편번호"로 나눔.
    2. 2NF (제2정규형):
      • 부분 종속 제거. 기본키의 일부분에만 의존하는 속성을 별도로 분리.
      • 예: 학생 ID와 과목명이 함께 기본키일때, 과목정보는 과목 테이블로 분리.
    3. 3NF (제3정규형):
      • 이행 종속 제거. 기본키가 아닌 컴럼간 종속성을 제거.
      • 예: 학과 이름과 학과 전화번호가 같은 테이블에 있을 경우, 학과 정보를 별도 테이블로 분리.

 

Q2: RDBMS와 NoSQL 데이터베이스의 차이를 실제 사용 사례를 기반으로 설명해주세요.

  1. RDBMS
    • 특징:
      • 관계형 데이터 모델 기반.
      • 데이터를 테이블로 저장하고, SQL을 사용해 데이터를 처리.
      • 데이터 무경성과 ACID 트랜잭션을 보장.
    • 사용 사례:
      • 은행 시스템: 고객 계좌 정보, 트랜잭션 기록 등.
        • 이유: 트랜잭션이 안전하게 처리되어야 하며 데이터 무결성이 매우 중요함.
      • ERP 시스템: 회사의 재고, 주문, 관리 등.
        • 이유: 데이터 관계를 명확히 정의하고, 정확한 데이터 관리를 위해.
  2. NoSQL
    • 특징:
      • 비관계형 데이터베이스.
      • 데이터를 문서, 키-값, 그래프 등의 형태로 저장.
      • 스키마가 유연하며, 수평 확장이 쉬움.
    • 사용 사례:
      • SNS 플랫폼: 사용자 프로필, 게시물, 댓글.
        • 이유: 데이터 구조가 자주 변경되며, 데이터 읽기/쓰기 성능이 중요함.
      • IoT 데이터 처리: 센서 데이터 로그 저장.
        • 이유: 대량의 비정형 데이터를 빠르게 처리해야 함.

 

비교 표

항목 RDBMS NoSQL
데이터 구조 테이블 (행과 열) 문서, 키-값, 그래프 등
확장성 수직 확장 수평 확장
트랜잭션 지원 ACID 지원 일부 BASE 모델 적용
스키마 고정 스키마 유연한 스키마
사용 사례 은행, ERP, 전자상거래 SNS, 로그 처리, IoT 데이터

 

Q3: RDBMS에서 사용하는 ACID 특성(Atomicity, Consistency, Isolation, Durability)을 각각 자세히 설명해주세요.

ACID특성은 데이터베이스에서 트랜잭션(일련의 작업)을 안전하고 일관성 있게 처리하기 위한 원칙.

 

  1. Atomicity(원자성)
    • 트랜잭션은 모두 성공하거나 모두 실패해야함.
    • 예: 은행 송금시, A 계좌에서 돈을 출금하고 B 계좌로 입금하는 작업은 둘 다 성공하거나 둘 다 실패해야함.
  2. Consistency(일관성)
    • 트랜잭션이 실행되기 전후에 데이터베이스는 항상 일관된 상태를 유지해야 함.
    • 예: 상품 재고가 10개에서 2개 판매되면, 재고는 항상 8개로 업데이트 되어야 함.
  3. Isolation(독립성)
    • 여러 트랜잭션이 동시에 실행될 때, 서로의 작업이 영향을 미치지 않아야 함.
    • 예: 동시에 같은 계좌에 접근하더라도, 한 트랜잭션이 끝날때까지 다른 트랜잭션은 대기.
  4. Durability(지속성)
    • 트랜잭션이 성공적으로 완료되면, 그 결과는 시스템 장애가 발생해도 영구히 보존됨.
    • 예: 트랜잭션 후 전원이 꺼지더라도, 데이터는 그대로 유지.

 

요약

  1. 정규화는 데이터 중복을 줄이고 무결성을 높이는 과정.
  2. RDBMS vs NoSQL: RDBMS는 정형 데이터, 무결성이 중요한 곳에 적합. NoSQL은 대규모, 비정형 데이터에 적합.
  3. ACID는 트랜잭션의 신뢰성을 보장하는 네 가지 필수 원칙.

 

 

 

 

출처 : ChatGPT

'CS' 카테고리의 다른 글

동기, 비동기  (3) 2025.02.06
JMeter 성능테스트  (1) 2025.02.04
Redis 레디스  (0) 2025.02.01
화이트보드 설계  (1) 2025.01.30
CORS (Cross-Origin Resource Sharing)  (0) 2025.01.29