1. 트랜잭션(Transaction)
- 여러 개의 작업을 하나로 묶은 실행 유닛이다
- 하나로 묶여 있는 작업 중 한 개라도 실패하면 유닛 전체가 실패한 것으로 판단한다
- 트랜젝션은 '성공' 과 '실패' 두 개의 결과만 존재한다
2. ACID(Atomicity Consistency Isolation Durability)
- 데이터베이스에서 트랜잭션이 발생할 경우 안정성을 보장할 수 있는 성질이다
1) 원자성(Atomicity)
- 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해서 결과를 예측할 수 있어야 한다
- 트랜젝션의 여러 작업이 부분적으로 실행된다면, 업데이트가 일어났지만 누가 업데이트했는지 모르거나, 업데이트 날짜가 누락되는 등 데이터가 오염될 수 있다
- A의 작업은 성공했지만 B의 작업이 실패했다면 트랜잭션은 실패로 결론내어 데이터를 보호해야 한다
2) 일관성(Consistency)
- 데이터베이스의 상태가 일관되어야 한다는 성질이다
- 하나의 트랜잭션 이전과 이후에 데이터베이스의 상태는 이전과 같이 유효해야 한다
- 트랜잭션이 일어난 이후의 데이터베이스는 데이터베이스의 제약이나 규칙을 만족해야 한다
- 데이터베이스의 제약조건을 만족하지 않으면 실패로 간주한다
3) 고립성(Isolation), 격리성
- 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다
- 동시에 여러 개의 트랜잭션들이 수행될 때, 각각의 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타낸다
- 각각의 트랜잭션은 독립적으로 서로의 작업을 확인하거나 영향을 줄 수 없으며, 영향을 줄 경우 실패로 간주한다
- 트랜잭션이 동시에 실행될 때와 연속으로 실행될 때의 데이터베이스 상태가 동일해야 한다
4) 지속성(Durability)
- 하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그가 남아야 한다
- 런타임 오류나 시스템 오류가 발생하더라도, 해당 기록은 영구적이어야 한다
- 로그로 기록하기 전에 오류로 인하여 종료가 된다면 실패로 간주하여 작업 이전의 상태로 돌아가야 한다
'관계형 데이터베이스' 카테고리의 다른 글
관계형 데이터베이스 - SQL - ERD(Entity-Relationship Diagram)설계 (0) | 2022.06.13 |
---|---|
관계형 데이터베이스 - SQL 설계 (0) | 2022.06.10 |
관계형 데이터베이스 - MySQL 설치 (0) | 2022.06.09 |
관계형 데이터베이스 - SQL(Structured Query Language) (0) | 2022.06.09 |