트랜잭션(transaction)
• '데이터베이스의 상태를 변화시키는 작업의 모음' 이라고 표현한다.
• 주로 데이터베이스의 상태를 변화시키는 INSERT, DELETE, UPDATE 중 한 개 이상의 DML과 같이 사용된다.
ACID
• Atomicity, Consistency, Isolation, Durability
• 각 단어는 데이터베이스내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위해 필요한 성질을 의미한다.
1) 원자성 (Atomicity)
• 하나의 트랜잭션을 구성하는 작업들 중 하나가 실패하면 전부 실패해야한다. 부분적으로 성공하여 실행이 되면 안되는 성질이다.
• SQL로 특정 쿼리를 실행했는데 부분적으로 실패하는 부분이 있다면 전부 실패하게 된다.
2) 일관성 (Consistency)
• 하나의 트랜잭션 이전과 이후 데이터베이스 상태는 이전과 같이 유효해야 한다.
• 예를 들어 user 라는 테이블에는 id 와 name 이 있어야하는 데이터베이스 제약이 있다고 하자. 이때 id 가 없는 새로운 고객을 추가하는 쿼리나 기존 user의 name만을 삭제하는 쿼리는 일관성에 위배된다.
3) 고립성 (Isolation)
• 하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다.
• 실제로 동시에 여러 개의 트랜잭션들이 수행될 때에 각 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타내야 한다.
4) 지속성 (Durability)
• 하나의 트랜잭션이 성공적으로 수행되었을 시, 해당 트랜잭션에 대한 로그가 남고 런타임 오류, 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다.
'코드스테이츠 AI 부트캠프 > Section 3' 카테고리의 다른 글
AIB_321_복습정리 : 디버깅, 함수, 클래스, 데코레이터, 파이썬 기본문법 (0) | 2021.12.27 |
---|---|
[비공개] AIB_314_복습정리 : DB API (0) | 2021.12.27 |
AIB_312_복습정리 : SQL (0) | 2021.12.27 |
AIB_311_복습정리 : 환경 세팅하기 (0) | 2021.12.27 |