병행 제어(Concurrency Control)
in Computer Science / Information-system
교과서 기초 개념 정리
병행 제어(Concurrency Control)
- 동시에 여러 개의
트랜잭션(Transaction)
을 병행 수행할 때 이들 명령이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 상호 작용을 제어하는 기술 - 목적
- 데이터베이스 공유도 최대화
- 시스템 활용도 최대화
- 데이터베이스 일관성 유지
- 사용자 응답 최소화
병행 제어 기법
- 타임스탬프 기법 - 시스템이 각 트랜잭션을 실행할 때 부여하는 값으로 읽거나 변경할 데이터에 대해 트랜잭션을 실행하기 전에 타임스탬프를 부여하고 타임스탬프 순서에 따라 트랜잭션 작업을 수행하도록 하는 기법
- 2PL(Two-Phase Locking) 기법 - 트랜잭션들이 잠금, 잠금해제를 확장,축소단계로 수행하도록 한다
- 확장(Growing) 단계 - 트랜잭션이 잠금만 수행 할 수 있고, 잠금해제는 수행 불가능한 상태
- 축소(Shrinking) 단계 - 트랜잭션이 잠금 해제만 수행할 수 있고, 잠금은 수행할 수 없는 상태
병행 제어의 문제점
- 갱신 분실(Lost Update) - 2개 이상의 트랜잭션이 같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 소실
- 비완료 의존성(Uncommitted Dependency) - 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
- 모순성(Inconsistency, 불일치 분석) - 복수의 사용자가 동시에 같은 데이터를 갱신할 때 데이터베이스 내의 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상
- 연쇄 복귀(Cascading Rollback) - 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 롤백되는 경우 다른 트랜잭션들도 연쇄적으로 롤백되는 현상
잠금(Locking)
- 데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것을 의미
- 데이터를 갱신할 때는 반드시 잠금(Lock), 실행(Execute), 해제(Unlock)의 규칙을 따라야 한다
- 한번에 잠금 할 수 있는 단위(로킹 단위, Locking Unit)로 DB, Table, Record, Field 등을 사용 가능
로킹(Locking) 단위와 공유도
,오버헤드
는 반비례한다
📜 오버헤드
트랜잭션을 처리하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다
트랜잭션(Transaction)
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
- 또는 한꺼번에 모두 수행되어야 할 일련의 논리적인 연산
트랜잭션의 성질 (ACID)
원자성(Atomicity)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반영되지 않아야 한다
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다
- 즉, 트랜잭션의 최종 결과는 항상
Commit
이거나Rollback
이다
일관성(Consistency)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 후의 상태가 같아야 한다
격리성(Isolation, 독립성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다
- 수행 중인 트랜잭션은 완전히 완료될 때 까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다
지속성(Durability, 영속성)
- 성공적으로 완료 된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 한다
회복(Recovery)
- 장애 종류 - 트랜잭션 장애, 시스템 장애, 미디어 장애
- 회복 - 손상 된 데이터베이스를 손상되기 이전의 상태로 복구시키는 작업
- 회복 관리기(Recovery Management) - DBMS의 구성요소로써 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Rollback) 시킨 다음 트랜잭션 수행 이전의 상태로 복구하는 역할
- 회복 수행 - 메모리 덤프(데이터베이스 복사), 로그(갱신 전 후 내용을 별도의 파일로 기록)
보안 생명주기(Secure SDLC, Secure Software Development Life Cycle)
- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것
- 소프트웨어의 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화 하기 위해 등장
- Secure SDLC의 대표적 방법론 - Secure S/W社 CLASP, MS社 SDL
속성 | 설명 |
---|---|
기밀성(Confidentiality) | 정보를 인가된 시간, 사용자, 기관에게만 공개 또는 처리 |
무결성(Integrity) | 데이터를 정확하고 완전한 상태로 보존하는 것. 외부로부터의 정보 변조를 차단 |
인증성(Authentication) | 정보를 보내는 사람의 신원을 확인 |
가용성(Availability) | 권한이 부여된 사용자는 언제든 시스템을 사용 할 수 있음 |
접근 제어(Access Control) | 인가된 사용자만 정보에 접근하도록 제어, 시스템의 자원 이용에 대한 불법적인 접근을 차단 |
부인 방지(Non-Repudiation) | 송신자의 송신 여부와 수신자의 수신 여부를 확인 |