게으른 나에게

[CS] - 데이터베이스 본문

My Study/CS

[CS] - 데이터베이스

handbefore 2025. 3. 21. 16:36

데이터 베이스 개념

데이터베이스(Database)는 체계적으로 정리된 데이터의 집합.

여러 사용자와 애플리케이션이 데이터를 효율적으로 저장, 관리, 검색할 수 있도록 지원하는 시스템.

 

데이터 베이스 정의

  1. 통합 데이터: 중복된 데이터에 대해서 데이터를 통합하여 자료의 중복을 최소화한 데이터의 모임으로 구성
  2. 저장 데이터: 컴퓨터가 접근할 수 있는 매체에 데이터 저장
  3. 운영 데이터: 조직의 목적을 위해 존재하고 활용되는 데이터
  4. 공유 데이터: 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터

 

데이터 베이스 기능 특징

  1. 실시간 접근성 : 사용자 데이터 실시간 응답
    • ex) 쇼핑몰 - 상품 검색 / 주문
  2. 동시 공용 : 서로 다른 데이터 동시 사용 + 같은 데이터 동시 사용
    • ex) 쇼핑몰 - 여러 고객이 동시에 상품 조회 / 구매
  3. 계속 변화 : 항상 최신의 데이터 유지 (삽입, 삭제, 수정)
    • ex) 데이터 삽입, 삭제, 갱신
  4. 내용 기반 참조 : 데이터 내용으로 데이터 위치나 주소로 찾음
    • ex) C언어 포인터, URL 주소

 

DBMS (Database Management System)

데이터 베이스를 관리하는 소프트 웨어

 

데이터 베이스 종류

  • 관계형 데이터베이스: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
  • 비관계형 데이터베이스: MongoDB, Redis, Cassandra, Firebase, DynamoDB, HBase

 

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

  • 데이터를 테이블(table) 형태로 저장하며, 각 테이블은 행(row)과 열(column)로 구성됨.
  • 데이터 간 관계(relation) 를 설정하여 정규화를 통해 중복을 최소화함.
  • SQL(Structured Query Language) 을 사용하여 데이터를 관리하며, 트랜잭션을 보장하는 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 유지함.

ACID

속성 설명 예시
Atomicity (원자성) 트랜잭션이 완전히 수행되거나(Commit), 전혀 수행되지 않아야(Rollback) 하는 성질. 즉, 중간 단계에서 실패하면 전체가 취소됨. 계좌 이체 중 오류 발생 시, 돈이 빠져나갔지만 상대 계좌에 입금되지 않는 문제를 방지.
Consistency (일관성) 트랜잭션이 성공적으로 수행되면 데이터베이스가 항상 일관된 상태를 유지해야 함. 트랜잭션 전후 데이터 규칙이 유지됨. 은행 계좌의 총 금액이 트랜잭션 후에도 변하지 않아야 함.
Isolation (고립성) 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않고 독립적으로 수행되어야 함. A가 상품을 구매하는 동안, B가 같은 상품을 구매하면 재고가 올바르게 유지됨.
Durability (지속성) 트랜잭션이 완료(Commit)되면 데이터는 영구적으로 저장되어야 하며, 시스템 장애가 발생해도 유지되어야 함. 전원이 꺼져도 주문이 취소되지 않고 데이터베이스에 저장됨.

 

장점

  • 데이터 무결성 보장 (정확하고 신뢰할 수 있는 데이터 저장)
  • 트랜잭션 보장 (ACID 속성)
  • 강력한 SQL 쿼리를 활용한 복잡한 데이터 분석 가능

단점

  • 데이터가 지나치게 크거나, 분석쿼리를 자주 돌려야 하는 환경에서 속도 떨어짐
  • 확장 비용이 커질 수 있음

 

2) NoSQL 데이터베이스

  • 관계형 DB처럼 테이블과 행 대신 다양한 데이터 모델(Key-Value, Document, Column, Graph) 을 활용.
  • SQL을 사용하지 않고, 트랜잭션보다는 수평적 확장성(Scalability) 에 중점을 둠.
  • 일반적으로 BASE(Basically Available, Soft state, Eventually consistent) 모델을 따르며, 데이터 일관성보다는 가용성을 중시함.

 

장점

  • 높은 확장성과 가용성 (수평적 확장이 가능해 대량의 데이터를 효율적으로 처리 가능)
  • 스키마가 유연하여 데이터 구조 변경이 쉬움
  • 빠른 읽기/쓰기 성능

단점

  • 데이터의 일관성(정합성)이 항상 보장되지 않고, 기존 SQL과 호환되지 않음 (BASE 모델을 따르기 때문)
  • 대용량 데이터나 분산 처리에 매우 빠르게 대응이 가능 (페이스북, 스냅챗과 같은 SNS에서 쓰임)
  • 데이터 중복이 발생할 수 있음

 

데이터 베이스 VS NoSQL

데이터 베이스 NoSQL
관계형 데이터베이스 관리 시스템 비관계형 데이터베이스 관리 시스템
미리 정의된 스키마가 있는 구조화된 데이터에 적합 (스키마 고정) 비정형 및 반정형 데이터에 적합 (스키마 유연)
JOIN 및 복잡한 쿼리 지원 JOIN 및 복잡한 쿼리를 지원하지 않음
정규화된 데이터 구조 사용 비정규화된 데이터 구조 사용
다중행 트랜잭션에 더 적합 비정형 데이터에 더 적합
수직적 확장이 가능 수평적 확장이 가능
ACID 지원 BASE 지원