도서 개발 공부/정보 처리 기사 필기

5. 정보 시스템 구축 관리 - IT 프로젝트 정보 시스템 구축 관리(회복. 병행제어, 교착상태, 데이터 표준화)

캐티시 2022. 4. 17. 22:26

187. 회복 / 병행제어

1) 회복

: 트랜잭션 수행 중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업

 

1. 장애 유형

  • 트랜잭션 장애 : 트랜잭션 내부의 비정상적인 상황으로 프로그램 실행이 중지
    • ex) 입력 데이터 오류. 불명확한 데이터, 시스템 자원 요구 과다, etc.
  • 시스템 장애 : 데이터베이스에 손상을 입히지는 않으나 모든 트랜잭션의 연속적 수행을 방해하는 현상
    • ex) 하드웨어 오동작, 소프트웨어 손상, 교착상태, etc.
  • 미디어 장애 : 데이터베이스의 일부나 전부가 물리적으로 손상된 상태
    • ex) 디스크 블록 손상, 디스크 헤드 충돌, etc.

 

2. 회복 관리기(Recovery Management)

: DBMS의 구성 요소 중 하나로 데이터베이스의 회복을 담당

  • Undo : 트랜잭션 실행이 성공적으로 완료되지 못했을 때 해당 트랜잭션으로 데이터베이스에 발생한 변화를 모두 취소
  • Redo : 정상적인 데이터베이스로 회복한 상태에서 완료되지 못한 트랜잭션을 재실행
  • 메모리 덤프와 로그를 이용하여 회복 수행
    • 덤프 (Dump) : 주기적으로 데이터베이스 전체를 복사해 두는 것
    • 로그 (Log, Journal) : 데이터베이스가 갱신되기 전후의 내용을 기록하는 별도의 파일 

 

3. 회복 기법

  • 연기 갱신 기법 (Deferred Update) : 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적 갱신을 연기하는 방법
    • 트랜잭션 수행 동안의 갱신 내용을 일단 Log에 보관
    • 트랜잭션 부분 완료(성공적 완료 직전) 시점에 Log의 갱신 내용을 실제 데이터베이스에 기록
    • 트랜잭션 부분 완료 전에 Rollback이 일어나면 Undo 작업 필요 없이 무시
    • Redo 작업만 가능
  • 즉각 갱신 기법 (Immediate Update) : 수행 중인 트랜잭션이 데이터를 갱신하는 즉시 실제 데이터베이스에 반영하는 기법
    • 회복 작업을 대비하여 모든 갱신 내용은 Log에 보관
    • Redo와 Undo 작업 모두 가능
  • 그림자 페이징 기법 (Shadow Paging) : 트랜잭션 Rollback 시 데이터베이스의 복사본인 그림자 페이지를 이용해 회복하는 기법
    • 데이터베이스를 일정 크기의 페이지 단위로 구성하고, 각 페이지 마다 복사본인 그림자 페이지를 별도 보관
    • Rollback 시 갱신된 내용이 있는 페이지를 그림자 페이지로 대체하여 회복
    • 로그, Undo, Redo 알고리즘 불필요
  • 검사점 기법 (Check Point) : 트랜잭션의 특정 단계를 저장하는 검사점을 이용해 데이터베이스를 회복하는 기법
    • 검사점 : 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용, 시스템 상황 등의 정보를 로그에 저장한 것
    • 회복 필요 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 수행하여 시간을 절약

 

2) 병행 제어 (Concurrency Control)

: 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간 상호작용을 제어하는 것

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

 

1. 병행 제어 기법

  • 로킹 (Locking) : 주요 데이터에 대한 접근을 상호 배타적으로 수행하도록 하는 것
    • 트랜잭션들이 로킹 단위에 접근하기 전에 Lock(잠금)을 요청하고, 허락을 받아야만 그 로킹 단위에 접근 가능
    • 로킹 단위 (Locking Granularity) : 한꺼번에 로킹할 수 있는 객체의 크기 (데이터베이스, 파일, 레코드, 필드, etc.)
    • 로킹 단위가 크면 발생하는 로크 수가 작아 관리가 용이하지만 병행성 수준이 감소
    • 로킹 단위가 작으면 로크 수가 많아지고 오버헤드가 증가하지만 병행성 수준이 증가
  • 타임 스탬프 순서 (Time Stamp Ordering) : 트랜잭션 실행에 시간표 (Time Stamp)를 부여하여 부여한 시간에 따라 트랜잭션 작업을 수행하는 기법
    • 트랜잭션 간 처리 순서를 미리 선택하는 기법 중 가장 보편적인 기법
    • 교착상태가 발생하지 않음
  • 최적 병행 수행 (검증 기법, 확인 기법, 낙관적 기법)
    • 병행 수행되는 대부분의 트랜잭션이 읽기 전용(Read Only)일 때, 병행 제어를 사용하지 않고도 대부분의 트랜잭션에서 시스템이 일관성을 유지함을 이용한 기법
  • 다중 버전 기법 (다중 타임 스탬프 기법) : 트랜잭션이나 데이터가 이용될 때의 시간을 시간표로 관리하는 것이 아니라 갱신마다의 버전을 부여하여 관리하는 기법

 

2. 병행 수행의 문제점

: 병행 제어 없이 트랜잭션이 데이터베이스에 동시에 접근하도록 허용할 경우 발생하는 문제점

  • 갱신 분실 (Lost Update) : 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신 결과의 일부가 사라지는 현상
  • 비완료 의존성 (Uncommitted Dependency, 임시 갱신) : 한 트랜잭션의 실패 후 회복하기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
  • 모순성 (Inconsistency, 불일치 분석) : 두 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용하여 발생하는 문제
  • 연쇄 복귀 (Cascading Rollback) : 병행 수행되던 트랜잭션들 중 하나가 Rollback되는 경우 다른 트랜잭션들도 함께 Rollback되는 현상

188. 교착 상태 (Dead Lock)

: 상호 배제로 인해 둘 이상의 프로세스자원을 점유한 상태에서 서로 다른 프로세스가 점유하는 자원을 요구하며 무한정 기다리는 현상

  • VS 무한 연기
    • 교착 상태와 무한 연기 모두 무한정 기다리는 상태의 문제를 뜻함
    • 무한 연기의 경우 해결 가능성이 있는 상태에서 기다리는 문제
    • 교착 상태는 전혀 해결 가능성이 없는 상태에서 기다리는 문제

 

1) 교착 상태의 필요 충분 조건

: 교착 상태는 아래의 네 가지 조건 중 하나라도 충족되지 않으면 발생하지 않음

  • 상호 배제 (Mutual Exclusion) : 한 번에 한 프로세스만이 공유 자원을 사용할 수 있다
  • 점유와 대기 (Hold and Wait) : 최소 하나의 자원을 점유한상태에서 다른 프로세스에 할당된 자원을 추가로 점유하기 위해 기다는 프로세스가 존재한다
  • 비선점 (Non-preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 선점할 수 없다
  • 환형 대기 (Circular Wait) : 대기하는 프로세스들이 원형으로 모두가 구성되어 자신의 앞이나 뒤에 있는 프로세스의 자원을 요청한다

 

2) 교착 상태 해결 방법

- 예방 (prevention) : 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 기법

  • 교착 상태의 필요 충분 조건 중 어느 하나를 미리 제거(부정)하여 해결
  • 자원 낭비가 가장 심한 기법

 

- 회피 (Avoidance) : 교착 상태가 발생하면 적절히 피해나가는 방법

  • 주로 은행원 알고리즘을 사용하여 해결
  • 은행원 알고리즘 : 자원 할당 상태를 안전 상태와 불안전 상태로 나누어 안전 상태가 유지되는 자원 할당 요구만 받아들이는 방식

 

- 발견 (Detection) : 시스템 내에 교착 상태가 발생했는지 점검하고, 교착 상태에 있는 프로세스와 자원을 발견하는 방법

  • 교착 상태 발견 알고리즘, 자원 할당 그래프 등을 사용

 

- 회복 (Recovery) : 교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 상태를 해결하는 방법


189. 데이터 표준화

: 시스템을 구성하는 데이터 요소의 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하고 적용하는 것

  • 데이터 용어나 항목 이름이 중복되지 않고, 직관적이며, 공통된 의미로 전달되도록 표준 항목명 부여
  • 데이터 요소(개체, 속성, 테이블, 컬럼, etc.)에서 사용되는 단어에 대해 일정한 규칙 적용
  • 구성 요소 : 데이터 표준, 데이터 관리 조직, 데이터 표준화 절차

 

- 데이터 표준화 대상

  • 데이터 명칭 : 유일성, 의미 전달의 충분성, 업무적 보편성을 만족하는 이름으로 정의
  • 데이터 정의 : 제 3자도 이해할 수 있도록 해당 데이터가 의미하는 범위, 자격 요건 등을 규정
  • 데이터 형식 : 일관된 데이터 형식을 정의하여 데이터 입력 오류, 통제 위험 등을 최소화
  • 데이터 규칙 : 발생 가능한 데이터 값을 사전에 지정하여 데이터의 정합성 및 완전성 향상

 

- 데이터 표준화의 기대 효과

  • 명확한 의사 소통 가능
  • 필요한 데이터의 의미나 위치를 쉽게 파악 가능
  • 입력 오류 방지 및 의사 결정 오류 방지 -> 데이터 품질의 향상
  • 전사적 데이터 관리 시 시스템 간 데이터 공유에도 변환이나 정제 작업이 불필요
  • 향후 데이터 유지보수와 운영의 효율성 증가
  • 데이터 관리 비용 절감

 

1) 데이터 표준

: 데이터 모델이나 DB에서 정의할 수 있는 모든 오브젝트를 대상으로 데이터 표준화를 수행

 

- 데이터 표준의 종류

  • 표준 단어 : 업무에서 사용하고 일정한 의미를 갖는 최소 단위의 단어
  • 표준 도메인 : 컬럼을 성질에 따라 그룹화한 개념
  • 표준 코드 : 발생 가능한 값을 정형화 하기 위해 기준에 맞게 이미 정의된 코드 값, 도메인의 한 유형
  • 표준 용어 : 정의된 단어, 도메인, 코드를 바탕으로 구성한 용어

 

2) 데이터 관리 조직

: 데이터 표준 원칙이나 데이터 표준의 준수 여부 등을 관리하는 사람들

  • 데이터 관리자 (DA) : 조직 내의 데이터에 대한 정의, 체계화, 감독 등의 업무를 담당하는 직책

데이터 관리자와 데이터베이스 관리자의 역할 비교

 

3) 데이터 표준화 절차

데이터 표준화 요구사항 수집 데이터 표준 정의 데이터 표준 확정 데이터 표준 관리
  • 데이터 표준화 요구 사항 수집
    • 데이터 표준화 관련 요구 사항 수집
    • 시스템별 데이터 표준 수집
    • 표준화 현황 진단
  • 데이터 표준 정의
    • 표준화 원칙 정의
    • 표준 단어, 표준 도메인. 표준 코드, 표준 용어 정의
  • 데이터 표준 확정 : 데이터 표준 검토, 확정 및 공표
  • 데이터 표준 관리
    • 데이터 표준 관리 절차 수립
    • 데이터 표준 이행