database computer_science cs Database DBMS

[CS/Computer Science][데이터베이스 / Database] 데이터베이스의 기본

Kwangjin Park

May 01, 2025 · 5 min read

Follow

1. 데이터베이스와 DBMS

데이터 베이스란?

  • "원하는 기능 동작"을 위해 반드시 저장해야 하는 정보 집합
    • 사전적 의미 : 여러 사람이 공유해 사용할 목적으로 체계화하여 통합/관리하는 데이터 집합

DBMS?

  • 데이터베이스는 웹 서비스의 정체성, 성능 등 중대한 영향을 미치는 요소 ⇒ 이러한 데이터베이스를 관리하기 위한 수단이 DBMS(DataBase Management System)

DBMS의 종류

  • RDBMS
    • 관계형 데이터베이스 관리 시스템
    • Relational DataBase Management System
    • MySQL, Oracle, PostgreSQL, SQLite, MariaDB, Microsoft SQL Server 등
      • 점유율 가장 높은 RDBMS : MySQL (2023년, 약 6만 명 대상 조사 결과)
    • 대부분의 개발자들은 RDBMS 활용

  • NoSQL DBMS
    • Not Only SQL DBMS
    • 유연한 형태의 대규모 데이터 관리 용이
    • 확장성이 좋음
    • MongoDB, Redis

서버로서의 DBMS

  • DBMS는 사용자와 간접적으로 상호작용
    • 사용자 대신 사용자가 만든 프로그램(응용 프로그램)과 상호작용
    • 응용 프로그램이 바라보는 DBMS는 마치 “클라이언트-서버”간 상호작용과 유사
    • DBMS 클라이언트 → DBMS에 쿼리 보냄 (마치, 데이터베이스에 질의하는 과정)
      • 데이터베이스 언어를 통해 상호작용 image1
  • 데이터베이스 언어의 종류
    • 사용자/응용 프로그램은 데이터베이스 언어를 통해 DBMS를 다룰 수 있음
    • 데이터베이스에 질의(Query)를 보내기 위해 구조화된 언어
      • 대표 : SQL (Structured Query Language)

    • SQL의 4대 분류
      • DDL (Data Definition Language) : 데이터 정의
        • CREATE : 데이터 베이스 객체 생성 (데이터베이스, 테이블, 뷰, 인덱스 등)
        • ALTER : 데이터베이스 객체 갱신
        • DROP : 데이터베이스 객체 삭제
        • TRUNCATE : 테이블 구조를 유지한 채 모든 레코드 삭제
      • DML (Data Manipulation Language) : 데이터 조작
        • SELECT : 테이블 레코드 조회
        • INSERT : 테이블 레코드 삽입
        • UPDATE : 테이블 레코드 갱신
        • DELETE : 테이블 레코드 삭제
      • DCL(Data Control Language) : 데이터 제어
        • COMMIT : 데이터베이스에 작업 반영
        • ROLLBACK : 작업 이전의 상태로 되돌림
        • SAVEPOINT : 롤백 기준점 설정
      • TCL (Transaction Control Language) : 트랜잭션 제어
        • GRANT : 사용자에 권한 부여
        • REVOKE : 사용자로부터 권한 회수

2. 데이터베이스 vs 파일 시스템

파일 시스템 대신 데이터베이스

  • 파일 시스템의 한계 : 데이터 단순 나열 후 저장
  • 쉽게 말해서, 파일 시스템은 데이터의 체계적 정리가 이루어져 있지 않음

5가지 이유

  1. 데이터 일관성 및 무결성 제공이 어려움
    • 데이터베이스는 여러 사용자가, 동시다발적으로 사용함
      • 데이터의 일관성 이슈 : 레이스 컨디션 문제 발생 가능
        • 레이스 컨디션 : 두 개 이상의 프로세스/스레드가 공유 자원을 서로 이용하기 위해 경합하는 현상 → 모든 자원을 공유하게 됨으로서 동기화 문제 발생
      • 데이터의 무결성 이슈 : 데이터의 무결성을 보장하기 어려움
        • 개발자가 파일에 명시된 데이터의 결함이 없음을 일일이 검사하기 번거로움 (무결성 증명의 번거로움)
  2. 불필요한 중복 저장 방지
    • 쌓여서 큰 저장 공간 낭비를 불러옴
  3. 데이터 변경 시, 연관 데이터 변경이 어려움
    • 파일 시스템에서, A 인덱스에서 X라는 값이 Y라고 변경되었을 경우 → A 인덱스에서 X라는 값을 갖고 있던 모든 요소들의 값을 Y로 변경해주어야 함
  4. 정교한 검색이 어려움
    • 문자열 검색에 국한되지 않고, 정교한 데이터 검색을 위해서는 데이터베이스가 필요함
  5. 백업 및 복구 어려움
    • 파일 시스템은 백업 / 복구 기능을 기본적으로 제공하지 않음
    • 추가 제공 기능도 부족한 수준

3. 데이터베이스 저장단위

엔티티(entity)

  • 정의 : 독립적으로 존재할 수 있는 객체
    • “어떠한 특성을 가진 대상”
  • 데이터베이스는 다양한 속성을 지닌 엔티티를 저장할 수 있음
    • 속성(attribute) : 엔티티의 특성
    • 같은 속성을 공유하는 엔티티 → 같은 엔티티 집합에 속한다
      • ex) 1과 2 / 3과 4 : 같은 엔티티 집합에 속함 image2
    • 도메인(domain) : 엔티티의 속성이 가질 수 있는 값의 집합
      • ex) ‘구매자 성별’ 속성이 가질 수 있는 도메인 : (남자, 여자)
  • 엔티티 집합의 표현
    • 릴레이션(relation) : RDMBS에서 표현되는 이차원 테이블 형태의 엔티티 집합
    • 컬렉션(collection) : MongoDB(NoSQL DBMS의 일종)에서 저장하는 엔티티 집합의 단위
  • 엔티티의 저장
    • 레코드 : 데이터베이스에 기록된 각각의 엔티티
    • 필드 : 데이터베이스에 저장된 엔티티 속성
    • DBMS 별 표현법
      • RDBMS
        • 개별 레코드 : 테이블 행
        • 필드 : 테이블 열
      • NoSQL DBMS
        • 개별 레코드 : 도큐먼트 단위(json 형태)
        • 필드 : json의 키
          • 필드의 수 : 차수(degree)
          • 하나의 필드에 대한 고유값의 수 : 카디날리티(cardinality)

스키마(schema)

  • 정의 : 데이터베이스에 저장되는 레코드의 구조 및 제약조건을 정의한 것
    • 개별 레코드(달고나) ↔ 스키마(달고나의 틀)
  • DBMS 별 스키마
    • RDBMS : 명확한 스키마가 정의됨
      • 레코드를 테이블 내 행으로 저장
      • RDBMS는 정해진 스키마에 따라 제약조건(테이블 구조 / 필드의 데이터 타입 등)을 준수 image3
    • NoSQL RDBMS : 명확한 스키마가 정의되지 않음
      • 스키마-리스(schema-less) 데이터베이스
      • 레코드들이 지켜야 할 제약 조건 X → RDBMS보다 자유로운 형태의 레코드 저장 image4

4. 트랜잭션

  • 정의
    • 데이터베이스와의 논리적 상호작용 단위
    • 데이터베이스가 처리하는 작업의 단위
      • 관련 지표 : 초당 트랜잭션 (transaction per second)
      • 트랜잭션은 하나의 쿼리만 나타내지는 않음
  • ACID
    • 앞서 언급하였듯, 데이터베이스는 일반적으로 여러 사용자/프로그램이 동시다발적으로 사용
      • 이를 고려할 떄, 안전한 트랜잭션을 보장하기 위해 지켜야 하는 성질이 ACID
    • 4가지 ACID 구성요소
      1. 원자성 (Atomicity)
        • 하나의 트랜잭션의 결과가 모두 성공 혹은 모두 실패하는 성질
          • 트랜잭션 내의 모든 실행은 하나의 단위로 처리되기 때문
          • All or Nothing
      2. 일관성 (Consistency)
        • 데이터베이스가, 트랜잭션 전후로 일관된 상태를 유지하는 성질
          • 여기서, 일관된 상태 : 데이터베이스가 지켜야 하는 일련의 규칙 image5
      3. 격리성 (Isolation)
        • 동시에 수행되는 여러 트랜잭션은 서로 간섭하지 않도록 보장하는 성질
          • 레이스 컨디션 방지
          • ex) A라는 트랜잭션이 모 데이터에 접근하여 조작중일 때, 다른 트랜잭션은 접근 불가
      4. 지속성 (Durability)
        • 트랜잭션이 성공적으로 완료된 후, 그 결과가 영구적으로 반영되는 성질
          • 시스템 장애가 발생하더라도, 그 결과는 손실이 없어야 함
          • 이를 보장하기 위하여, 오늘날 DBMS는 대체로 자체 회복 메커니즘 구현

이렇게 데이터베이스의 기초적인 내용에 대해 살펴보았습니다. 다음 포스트에서는 본격적으로 RDBMS에 대해 알아보겠습니다.

chat_bubble 0

chat_bubble 댓글남기기

댓글남기기