Transaction 이란?
- Transaction (트랜잭션) 은 다양한 데이터 항목들을 액세스하고 갱신하는 프로그램 수행의 단위
- 트랜잭션은 begin transaction과 end transaction 형태의 명령문 또는 함수 호출로 구분됨
- 하나의 트랜잭션은 이 begin transaction과 end transaction 사이에서 실행되는 모든 연산들을 가리킴
트랜잭션(Transaction)의 성질
Atomicity(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 합니다.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 합니다.
Consistency(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환합니다.
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 합니다.
· 트랜잭션은 일관성 있는 데이터베이스 상태를 유지
Isolation(독립성, 격리성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없습니다.
- 수행중인 트랜잭션은 완전히 완료될 때가지 다른 트랜잭션에서 수행 결과를 참조할 수 없습니다.
Durablility(영속성, 지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 합니다.
출처:
https://velog.io/@bernard717/Transaction
https://blog.naver.com/hj_kim97/222716451210
https://blog.naver.com/hj_kim97/222716451210
https://pro-growth.tistory.com/186
(영문 해석)
What is Transactions?
- A transaction is a set of operations on one or more entities.
- Each transaction is guaranteed to be atomic, meaning that transactions are never partially applied.
- Either all of the operations in the transaction are applied, or none of them are applied.
Using transactions
- Transactions expire after 270 seconds or if idle for 60 seconds.
An operation may fail when:
- Too many concurrent modifications are attempted on the same entity.
- The transaction exceeds a resource limit.
- The Datastore mode database encounters an internal error.
Source:
https://firebase.google.com/docs/reference/js/firestore_.transaction
https://cloud.google.com/datastore/docs/concepts/transactions