데이터베이스 트랜잭션
데이터 베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다.
이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대한 원자성, 일관성, 고립성, 영구성을 보장한다. 이 성질을 첫 글자를 따 ACID라 부른다. 그러나 실제로는 성능 향상을 위해 이런 특성들이 종종 완화되곤 한다.
어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위로 불린다.
트랜잭션의 목적
데이터 베이스 기능 중, 트랜잭션을 조작하는 기능은 사용자가 데이터 베이스 완전성 유지를 확신하게 한다.
단일 트랜잭션은 데이터 내에 읽거나 쓰는 여러 개 쿼리를 요구한다. 이때 중요한 것은 데이터 베이스가 수행된 일부 쿼리가 남지 않는 것이다. 또한 트랜잭션은 서로 간섭하지 않아야 한다.
1) 원자성(Atomicity): 트랜잭션은 분리할 수 없는 하나의 단위이며 작업이 모두 수행되거나 하나도 수행되지 않아야 한다.
2) 일관성(Consistency): 트랜잭션에서 사용되는 모든 데이터는 일관 되어야 한다.
3) 격리성(Isolation): 현재 트랜잭션이 접근하고 있는 데이터는 다른 트랜잭션으로부터 격리되어야 한다는 것을 의미한다. 트랜잭션이 발생하기 이전 상태나 완료된 이후 상태를 볼 수는 있지만, 트랜잭션이 진행중인 중간 데이터를 볼 수 없다.
4) 영속성(Durability): 트랜잭션이 정상적으로 종료되면, 그 결과는 시스템 오류가 발생하더라도 시스템에 영구적으로 적용되어야 한다.
회복
회복이란 데이터 베이스 운영 도중 예기치 못한 장애가 발생할 경우, 데이터베이스를 장애 발생 이전의 일관된 상태로 복원시키는 것, 데이터베이스 관리 시스템에 회복 기능이 없을 경우 데이터베이스에 저장된 내용을 신뢰 할 수 없으므로 핵심적인 역할을 담당하는 회복 관리가 필요하다.
[데이터베이스 회복을 위한 주요 요소]
구분 |
요소 |
개념 |
회복의 기본원칙 |
데이터 |
데이터의 중복 |
Archive 또는 Dump |
다른 저장장치로 자료의 복사 및 덤프 |
|
Log 또는 Journal |
갱신된 속성의 과거값/갱신값을 별도의 파일에 유지 |
|
회복을 위한 조치 |
REDO |
회복된 DB 상태로 DB 복원 |
UNDO |
원래의 데이터베이스 상태로 복원 |
|
시스템 |
회복관리기 |
신뢰성 제공을 위한 DMBS 서브시스템 |
[장애의 유형]
유형 |
기본개념 |
트랜잭션 장애 |
논리적 오류: 내부적인 오류로 트랜잭션을 완료할 수 없음 시스템 오류: 데드락 등의 오류 조건으로 활성 트랜잭션을 강제 종료 |
시스템 장애 |
전원, 하드웨어, 소프트웨어 등의 고장 시스템 장애로 인해 저장 내용이 영향 받지 않도록 무결성 체크 |
디스크 장애 |
디스크 스토리지의 일부 또는 젠체가 붕괴되는 경우 가장 최근의 덤프와 로그를 이용항여 덤프 이후에 완결된 트랜잭션을 재실행 |