[정처기] 메타코드M 3-2강 (데이터베이스 구축 : SQL 활용 )

정기홍·2024년 12월 6일

정보처리기사

목록 보기
11/28

시작하면서

해당 글은 메타 코드 M에서 지원하는 정처기 필기 장학생에 합격하여 글을 작성하게 되었습니다.

메타 코드 해당 강의 보러 가기

참고 사항

  • 플랫폼 => 이 뜻은 참고할 주제라는 뜻입니다.
  • 이렇게 형관펜이 되어 있는 곳은 시험에 나오거나, 강조하고 싶은 부분이 있을 때 표시할 것입니다.

3-2. 데이터베이스 구축 - SQL 활용

3-2-1. 기본 SQL 작성

트랜잭션

데이터 베이스 관리 시스템에서 수행되는 일련의 작업들을 하나의 단위로 묶은 것.

트랜잭션의 특성(ACID)

  • Atomicity(원자성)
    • 트랜잭션 내의 모든 작업이 모두 수행되거나 모두 수행되지 않아야 함.
    • Commit과 Rollback 명령어에 의해 보장받는 특성
  • Consistency(일관성)
    • 트랜잭션이 시작되기 전과 완료된 후에 데이터베이스의 상태는 규칙에 맞게 일관되어야 함.
  • Isolation(고립성, 격리성)
    • 여러 트랜잭션이 동시에 실행될 때, 트랜잭션 간 서로 영향을 끼칠 수 없음.
  • Durability(지속성)
    • 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 데이터베이스에 저장되어야 함.

트랜잭션의 상태

병행 제어

트랜잭션 간의 충돌을 방지하고 데이터베이스가 항상 일관된 상태를 유지하도록 하는 것.

  • 병행제어의 목적
    • 데이터베이스 공유 최대화
    • 시스템의 활용도 최대화
    • 데이터베이스 일관성 유지
    • 사용자에 대한 응답시간 최소화

병행제어 기법

  • 로킹(Locking)

    • 데이터 항목에 대해 잠금을 설정하여 트랜잭션 간의 충돌을 방지하는 기법
    • 로킹의 대상이 되는 객체의 크기를 로킹 단위 (Locking Granualrity) 라고 함
    • 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
    • 로킹 단위가 크면 병행성 수준이 낮아짐 (여러 트랜잭션이 동시 수행되기 어려워짐)
    • 로킹 단위가 작으면 로킹 오버헤드와 데이터베이스 공유도가 증가
      • 오버헤드 : 작업을 처리하는 데 추가로 드는 시간이나 자원\
  • 타임스탬프

    • 각 트랜잭션에 고유한 타임스탬프를 부여하고, 타임스탬프를 기반으로 트랜잭션의 순서를 결정
    • 트랜잭션이 데이터에 접근할 때 타임스탬프를 비교하여 순서대로 실행되도록 보장.
  • 낙관적 검증(Optimistic Validation)

    • 트랜잭션을 일단 수행하고, 충돌이 발생하면 트랜잭션을 롤백하고 다시 시도하는 기법
    • 충돌이 빈번할 수록 오버헤드가 커짐, 충돌이 적을 수록 효율적임.
  • 다중버전 동시성 제어(MVCC, Multi Version Concurrency Control)

    • 데이터베이스의 각 데이터 항목에 대해 여러 버전을 유지하여, 트랜잭션이 특정 시점의 데이터를 읽도록 하여 충돌을 최소화하는 기법
  • 2 Phase Commit

    • 분산 데이터베이스에서 트랜잭션 일관성을 유지하기 위한 기술
    • 트랜잭션을 준비, 완료의 두 단계로 분리하여 제어
    • 성능이 느리고 복잡한 구현이 필요

트랜잭션의 회복 기법

지연 갱신 회복기법

  • 로그 기반 회복기법으로, 트랜잭션의 의한 DB의 변경 사항을 로그에 기록만 하고 DB에는 커밋 시점에 반영

즉각 갱신 회복기법

  • 로그 기반 회복기법으로, 트랜잭션에 의한 DB의 변경 사항을 즉시 DB에 반영

체크포인트 회복 기법

  • 데이터베이스의 현재 상태를 특정 시점에 저장하여, 장애 발생 시 이 지점부터 복구를 진행

그림자 페이징 회복 기법

  • 트랜잭션의 수행 시 복제본을 생성하고, 수정 완료 후에 기본 버전을 업데이트된 버전으로 대체하여 일관성을 유지

메타코드 M 해당 강의 보러가기

profile
하나를 알고 그걸로 모든걸 관통한다.

0개의 댓글