- Amazon DynamoDB의 트랜잭션 기능은 여러 테이블에 걸친 복잡한 비즈니스 로직을 구현할 때 데이터의 일관성과 정확성을 보장하는 강력한 도구입니다.
- 이 기능을 통해 개발자는 여러 작업을 원자적으로 처리할 수 있어, 금융 거래나 재고 관리와 같은 중요한 애플리케이션을 더욱 안전하게 구축할 수 있습니다.
1.1 DynamoDB 트랜잭션의 특징
- ACID 보장: 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장합니다.
- 다중 테이블 지원: 하나 이상의 테이블에 걸쳐 항목을 추가, 업데이트, 삭제하는 작업을 조정할 수 있습니다.
- 모든 작업 성공 또는 실패: 트랜잭션 내의 모든 작업이 성공하거나, 아니면 전체가 실패합니다.
2 트랜잭션 작업 모드
- 읽기 모드:
- 최종 일관성 읽기
- 강력한 일관성 읽기
- 트랜잭션 읽기
- 쓰기 모드:
3 트랜잭션 작업 유형
- TransactGetItems: 하나 이상의 GetItem 작업을 수행합니다.
- TransactWriteItems: 하나 이상의 PutItem, UpdateItem, DeleteItem 작업을 수행합니다.
4 트랜잭션의 용량 소비
- 트랜잭션 작업은 일반 작업에 비해 2배의 읽기 용량 단위(RCU)와 쓰기 용량 단위(WCU)를 소비합니다.
- 이는 DynamoDB가 각 항목에 대해 '준비'와 '커밋' 두 단계의 작업을 수행하기 때문입니다.
5 트랜잭션 사용 예시

- 이 예시에서는 하나의 트랜잭션으로 두 개의 테이블을 동시에 업데이트합니다:
AccountBalance
테이블의 계좌 잔액을 업데이트합니다.
BankTransactions
테이블에 새로운 거래 기록을 추가합니다.
- 이 두 작업은 하나의 원자적 트랜잭션으로 처리되어, 둘 다 성공하거나 둘 다 실패합니다.
6 트랜잭션 용량 계산
- 쓰기 트랜잭션 예시:
- 초당 3회의 트랜잭션 쓰기, 항목 크기 5 KB
- 필요한 WCU = 3 * (5 KB / 1 KB) * 2(트랜잭션 비용) = 30 WCUs
- 읽기 트랜잭션 예시:
- 초당 5회의 트랜잭션 읽기, 항목 크기 5 KB
- 필요한 RCU = 5 * (8 KB / 4 KB) * 2(트랜잭션 비용) = 20 RCUs
- (5 KB는 상위 4 KB 단위인 8 KB로 반올림됩니다)
7 트랜잭션의 사용 사례
- 금융 거래: 계좌 간 송금, 결제 처리 등
- 주문 관리: 재고 감소와 동시에 주문 생성
- 게임: 플레이어 간 아이템 교환, 점수 업데이트 등
- 데이터 일관성이 중요한 모든 애플리케이션