[Spring] Database (1)

이연우·2025년 7월 24일

TIL

목록 보기
37/100

🗄️ Database란?

  • 여러 사람이 공유하고 사용할 목적으로 조직화된 데이터의 집합
  • 효율적인 데이터 관리와 사용을 위해 DBMS(데이터베이스 관리 시스템)을 통해 제어됨
    → 핵심: 데이터의 저장소
    → 목적: 다수 사용자, 안전한 관리, 빠른 처리

📦 DBMS (Database Management System)

  • 데이터를 정의하고, 저장하고, 검색하고, 수정하고, 삭제할 수 있도록 도와주는 소프트웨어

📌 주요 역할

역할설명
데이터 정의테이블 구조, 타입 등을 정의 (DDL)
데이터 관리물리적 저장, 최적화된 구조 제공
데이터 보안권한, 암호화, 감사 로그 등
트랜잭션 관리ACID 보장 (안전한 데이터 처리)
백업 및 복구장애 대비용 데이터 백업/복원
동시성 제어여러 사용자의 요청 충돌 방지

📘 DBMS의 종류

1. 관계형 DMBS(RDBMS)

  • 가장 많이 사용하는 데이터베이스
  • 데이터를 테이블 형태로 구조화하여 저장하고 관리하는 시스템
  • 테이블 간의 관계를 이용해 데이터 연결

2. 비관계형 DBMS(NoSQL)

  • 테이블이 아닌 key-value, document, graph 등의 다양한 형태로 데이터를 저장하고 관리
  • 스키마가 고정되지 않고, 대규모 데이터 처리와 높은 확장성 제공
    • ex) MongoDB, Cassandra, Redis 등

3. 다중 모델 DBMS

  • 하나의 데이터베이스 관리 시스템에서 여러 데이터 모델을 지원하는 시스템
  • 동일한 DBMS에서 관계형 데이터뿐만 아니라 문서형, 그래프형 데이터를 함께 관리할 수 있음
    • ex) Amazon DynamoDB, Microsoft Azure Cosmos DB 등

💡 트랜잭션 (Transaction)

  • 데이터베이스에서의 하나의 논리적인 작업 단위
  • 모든 작업이 완전히 성공하거나, 모두 실패해야 함 (롤백)

💸 예시 - 계좌 이체
철수 → 영희 이체: 차감 + 입금 → 하나라도 실패하면 전체 취소

📦 ACID 속성

속성의미
Atomicity원자성: All or Nothing
Consistency일관성: 무결성 유지
Isolation독립성: 동시에 실행해도 영향 X
Durability지속성: 영구 저장 보장

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

  • 데이터 간의 관계를 정의하고,
    이러한 관계를 바탕으로 복잡한 Query를 실행할 수 있는 기능 제공

1. 테이블 기반 저장

  • 데이터는 행(Row)과 열(Column)로 구성테이블에 저장
  • 컬럼: 속성 / 행: 레코드(tuple)
  • 무결성(정확성, 일관성) 확보

2. 관계 (Relationships)

유형설명
1:1주민번호 - 사람
1\:N유저 - 주문
N\:M학생 - 수강과목 (중간 테이블 필요)

외래 키(FK)로 테이블 간 연결

3. SQL (Structured Query Language)

  • 데이터 조작 및 정의를 위한 표준 언어
    - CRUD: Create, Read, Update, Delete
    - DDL, DML, DCL 등 명령문 제공

4. 키 (Keys)

키 종류설명
기본 키 (PK)각 행을 유일하게 식별
외래 키 (FK)다른 테이블의 PK 참조
유일 키 (UK)중복 X, NULL O (PK와 다름)

5. 정규화 (Normalization)

  • 데이터 중복을 줄이고, 무결성 유지
    - 1NF~3NF 이상 단계 존재
    - 목적: 이상 현상(삽입·삭제·갱신) 방지

6. 데이터 무결성 (Data Integrity)

무결성 종류설명
엔터티 무결성PK는 NULL X, 중복 X
참조 무결성FK는 유효한 값만 가짐
도메인 무결성값의 타입, 범위 유효성 보장

7. 인덱스 (Index)

  • 특정 컬럼의 검색 성능 향상
    • 자주 조회하는 컬럼에 인덱스 적용
    • 단점: 삽입/수정 시 성능 저하 가능

🔥 대표적인 RDBMS

DBMS특징
❗️MySQL오픈소스, 빠르고 무료, 전 세계에서 가장 많이 사용
PostgreSQL객체지향 + 관계형 지원, 매우 강력한 기능
Oracle상용 제품, 안정성 최고, 가격 비쌈
MSSQLMS의 관계형 DB, 기업 환경에 강함

0개의 댓글