본문 바로가기

웹프로그래밍/부트캠프 - Codeit

[8주차] 위클리 페이퍼 - 관계형 데이터베이스를 사용하는 이유를 설명해주세요.

728x90

관계형 데이터베이스를 사용하는 이유

  1. 데이터 무결성과 일관성 유지
    • ACID 속성을 통해 데이터 무결성과 일관성을 유지
      • 원자성 (Atomicity): 모든 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함을 보장
      • 일관성 (Consistency): 트랜잭션이 데이터베이스를 일관된 상태로 유지하도록 보장
      • 고립성 (Isolation): 동시에 실행되는 트랜잭션이 서로 간섭하지 않도록 보장
      • 지속성 (Durability): 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저장됨을 보장
    • 동시성 제어: MVCC(Multi-Version Concurrency Control)나 잠금(Locking) 메커니즘을 통해 다수의 사용자가 동시에 안전하게 데이터에 접근 가능
  2. 데이터 중복 최소화
    • 데이터베이스의 저장 공간을 절약하고 데이터 일관성을 유지
      • 정규화: 데이터 중복을 줄이고, 테이블 간의 관계를 명확히 하여 데이터 일관성을 유지
      • 데이터 무결성 제약: 기본 키, 외래 키, 고유 제약 등을 통해 데이터 무결성을 보장
  3. 강력한 쿼리 및 성능 최적화 기능
    • SQL(Structured Query Language)을 사용하여 복잡한 쿼리와 데이터 조작을 쉽게 수행
    • *인덱스(Index)**를 통해 데이터 검색 속도를 향상
      • B-Tree 인덱스, 해시 인덱스 등 다양한 구조 지원
    • *뷰(View)**를 사용해 특정 데이터만 제공하거나 복잡한 쿼리를 단순화
    • *스토어드 프로시저(Stored Procedure)**와 **트리거(Trigger)**를 통해 서버 단 로직 처리 및 자동화 가능
  4. 데이터 보안
    • 다양한 보안 기능을 제공하여 데이터 접근을 제어하고 보호
      • 사용자 권한 관리: 사용자별 데이터 접근 권한을 설정
      • 암호화: 데이터 암호화를 통해 저장 데이터 보호
      • 감사 로그(Audit Log): 데이터 변경 이력을 추적하여 보안 사고 분석에 활용
  5. 트랜잭션 관리
    • 여러 작업을 하나의 단위로 묶어 처리해 데이터 일관성을 유지
      • 트랜잭션: 작업 중 일부 실패 시 전체 취소 가능
      • 롤백(Rollback) 및 커밋(Commit) 기능 제공
  6. 데이터 관계 모델링
    • 엔터티 간의 관계를 명확히 모델링하여 복잡한 데이터 구조를 이해하고 관리
      • ER 다이어그램: 엔터티-관계 다이어그램을 통해 데이터 모델을 시각적으로 표현
      • 참조 무결성: 외래 키를 통해 데이터 간 관계 보장
  7. 확장성 및 호환성
    • 다양한 규모의 데이터베이스를 효율적으로 관리, 다양한 애플리케이션과 호환
      • 확장성: 수직 확장(성능 향상) 가능, 필요 시 샤딩(Sharding)으로 수평 확장
      • 호환성: 다양한 플랫폼 및 애플리케이션과 연동
  8. NoSQL 대비 장점
    • 스키마 기반 구조로 복잡한 관계 데이터 처리에 강점
    • 다중 테이블 조인(Join) 및 복잡한 질의 처리에 유리
    • 트랜잭션 처리와 데이터 무결성 보장에 더 적합

사용 시 고려해야 할 단점

  • 수평 확장성 제한: 대규모 데이터 분산 저장 시 샤딩 구현 복잡
  • 스키마 변경 비용: 운영 환경에서 테이블 구조 변경이 어렵고 위험할 수 있음
  • 대규모 비정형 데이터 처리에는 비효율적

실제 활용 사례

  • 전자상거래: 주문·결제·배송 정보를 일관성 있게 관리
  • 금융 시스템: 계좌 이체, 결제 처리 시 ACID 보장
  • 공공 행정: 주민 정보, 세금 기록 등 관계형 데이터 관리
  • ER 다이어그램 예시
  • 고객(Customer) ──< 주문(Order) >── 상품(Product)

참고자료

728x90