[CS] 데이터베이스

U·2025년 2월 23일

CS

목록 보기
1/23

🔎 파일시스템과 데이터베이스의 차이

파일 시스템(File System)이란

  • 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록 유지 및 관리하는 방법
  • 데이터베이스가 개발되기 전 데이터 관리를 위해 사용
  • 업무 별 애플리케이션이 개별 데이터를 데이터 파일에 저장/관리하는 시스템
  • 대량의 데이터가 누적되다 보면 데이터 중복으로 인해 데이터 불일치가 발생하게 됨

파일 시스템의 한계

운영체제의 파일 시스템 관리 기능을 사용하여 파일에 텍스트 형태로 특정 저장 형식을 두어 저장하게 됨 → 어떠한 데이터를 일관적으로 관리하는 기능을 제공하기 어렵다

파일 시스템과 데이터베이스의 차이

1. Data Dependency (데이터 종속성)

  • 데이터와 상호작용하는 물리적 혹은 논리적 종속성을 의미
  • 데이터가 관리될 때는 물리적, 논리적 독립성을 유지하는 것이 매우 중요
  • 실제 물리적 디스크 혹은 데이터의 논리적 구조가 변경되더라도 프로그램 입장에서는 동일한 코드로 사용할 수 있어야 한다는 것을 의미
  • 파일 데이터의 수정은 빈번히 일어남
    • 파일 시스템은 데이터가 변경될 때마다 프로그램 자체를 수정해야 함
    • 데이터베이스는 DBMS를 이용해 데이터를 받기 때문에 변경이 쉬움

2. Data Redundancy (데이터 중복성)

  • 데이터는 중복되어 저장되면 안됨
  • 파일 시스템은 응용 프로그램 별로 독립된 파일을 가지므로 데이터의 중복 저장이 발생할 수 있으며 이로 인해 데이터 값의 불일치 발생
  • 데이터베이스는 데이터를 조직적으로 통합하여 중복을 없애고 자료를 구조화함

3. Integrity Problems (무결성 제약조건)

  • 파일 시스템은 수많은 파일을 복제하기 때문에 새로운 제약조건이 발생했을 때 모든 파일에 제약 조건을 추가하기 어려움
  • DBMS는 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입, 길이, 값의 범위 등에 대한 정보를 가지고 있음

🔎 데이터베이스의 정의와 DBMS의 역할

데이터베이스(Database)란

  • DBMS를 도입하여 데이터를 통합 관리하는 시스템
  • DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능 수행
  • 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
  • 데이터의 검색과 변경(삽입, 삭제, 수정 등의 작업)을 주로 수행
  • 기존 파일 시스템의 단점을 보완하기 위해 만들어짐

DBMS(Database Management System)란

  • 데이터베이스를 관리하는 소프트웨어 시스템
  • 데이터의 생성, 조회, 업데이트, 삭제를 포함한 다양한 작업을 가능하게 함

DBMS의 주요 역할

1️⃣ 데이터 저장 및 검색 : 데이터를 저장하고 효율적으로 검색하는 방법 제공
2️⃣ 데이터 무결성 : 데이터가 정확하고 일관되게 유지되도록 보장
3️⃣ 동시성 제어 : 여러 사용자가 동시에 데이터베이스에 접근할 수 있도록 하여 데이터 충돌을 방지
4️⃣ 보안 : 데이터에 대한 접근 제어를 설정하여 권한 있는 사용자만 데이터에 접근하도록 함
5️⃣ 백업 및 복구 : 데이터를 안전하게 백업하고, 문제가 발생했을 때 복구할 수 있게 함

🔎 RDBMS와 릴레이션 모델의 기본 개념

RDBMS(Relational Database Management System)

  • 데이터를 테이블 형식으로 저장하는 데이터베이스 관리 시스템
  • 릴레이션 모델을 기반으로 데이터를 관리.
  • 테이블 간 관계를 정의하고 이를 통해 데이터를 효율적으로 관리
  • ex) MySQL, Oracle, PostgreSQL, SQL Server 등

릴레이션 모델

  • 릴레이션(Relation) = 테이블

    • 행(Row)과 열(Column)로 구성되며, 각 행은 레코드(tuple)를, 각 열은 속성(Attribute)을 나타냄
  • 기본키(Primary Key)

    • 테이블에서 각 레코드를 고유하게 식별하는데 사용되는 속성
  • 외래키(Foreign Key)

    • 다른 테이블과의 관계를 정의하는 데 사용되는 속성
    • 외래키는 다른 테이블의 기본키를 참조
  • 정규화(Normalization)

    • 데이터의 중복을 최소화하고 데이터 무결성을 유지하기 위한 테이블 설계 방법

🔎 데이터베이스 키와 무결성 제약조건

데이터베이스 키

  • 기본키(Primary Key)

    • 각 행을 고유하게 식별
    • 중복이 없으며 NULL 값을 가질 수 없음
  • 대체키(Alternate Key)

    • 기본키 외에도 테이블에서 고유한 값을 가지는 속성
    • 기본키를 제외한 다른 후보키
  • 외래키(Foreign Key)

    • 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 정의
    • 참조 무결성을 보장함
  • 슈퍼키(Super Key)

    • 테이블에서 레코드를 고유하게 식별할 수 있는 속성들의 집합
    • 기본키는 슈퍼키의 특수한 경우
  • 복합키(Composite Key)

    • 두 개 이상의 속성으로 구성된 키

무결성 제약조건

1️⃣ 개체 무결성 : 기본키는 NULL 값을 가질 수 없으며, 각 레코드는 고유해야 함
2️⃣ 참조 무결성 : 외래키가 참조하는 기본 키 값이 항상 유효해야 하며, 외래키가 참조하는 테이블에서 해당 값이 존재해야 함
3️⃣ 도메인 무결성 : 각 속성의 값은 해당 속성이 정의한 도메인에 맞아야 함
4️⃣ 널 값 제약 : 특정 열이 NULL 값을 가질 수 있는지 여부를 제한하며 필수적인 정보는 NULL 값을 허용하지 않음

🔎 MySQL과 InnoDB의 주요 특징 및 동작 원리

MySQL

  • 오픈 소스 관계형 데이터베이스 관리 시스템 = RDBMS
  • 빠르고 안정적인 성능 제공
  • 다양한 저장 엔진을 지원하며, 각 엔진은 서로 다른 특성을 가지고 있음
    • 대표적인 엔진은 InnoDB, MyISAM 등이 있음

InnoDB

  • MySQL의 기본 저장 엔진
  • ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션 속성을 지원함
  • 트랜잭션 지원
    • 트랜잭션을 지원하여 데이터베이스 작업의 일관성과 무결성 보장
  • 외래 키 지원
    • 외래 키 제약조건을 지원하여 테이블 간 관계 유지
  • 행 수준 잠금
    • 테이블 전체가 아닌 행 단위로 잠금을 수행하여 높은 동시성 지원
  • Crash Recovery
    • 시스템 장애 발생 시 데이터를 복구할 수 있는 기능 제공
  • 지연된 쓰기
    • 데이터를 디스크에 즉시 기록하지 않고 일정한 주기로 디스크에 저장함
profile
백엔드 개발자 연습생

0개의 댓글