5. 정보 시스템 구축 관리 - IT 프로젝트 정보 시스템 구축 관리(회복. 병행제어, 교착상태, 데이터 표준화)
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) 데이터 표준화 절차
데이터 표준화 요구사항 수집 | ▶ | 데이터 표준 정의 | ▶ | 데이터 표준 확정 | ▶ | 데이터 표준 관리 |
- 데이터 표준화 요구 사항 수집
- 데이터 표준화 관련 요구 사항 수집
- 시스템별 데이터 표준 수집
- 표준화 현황 진단
- 데이터 표준 정의
- 표준화 원칙 정의
- 표준 단어, 표준 도메인. 표준 코드, 표준 용어 정의
- 데이터 표준 확정 : 데이터 표준 검토, 확정 및 공표
- 데이터 표준 관리
- 데이터 표준 관리 절차 수립
- 데이터 표준 이행