트랜잭션과 동시성 제어
개념 설명
ACID 속성을 바탕으로 한 트랜잭션 처리와 낙관적/비관적 락을 활용한 동시성 제어 기법.
핵심 포인트
- ACID: 원자성(All or Nothing), 일관성(제약조건 유지), 격리성(간섭 방지), 지속성(영구 보존)
- 낙관적 락: 버전 체크로 충돌 감지, 성능 우수하나 충돌 처리 복잡
- Saga 패턴: 분산 트랜잭션에서 보상 트랜잭션으로 일관성 보장
- 격리 수준: READ UNCOMMITTED < READ COMMITTED < REPEATABLE READ < SERIALIZABLE
예시 코드
// 낙관적 업데이트와 롤백
class OptimisticUpdater {
constructor() {
this.pendingUpdates = new Map();
}
async update(id, updates, apiCall) {
const original = this.getCurrentData(id);
// 즉시 UI 업데이트
this.applyToUI(id, updates);
this.pendingUpdates.set(id, { original, timestamp: Date.now() });
try {
const result = await apiCall(id, updates);
this.pendingUpdates.delete(id);
return result;
} catch (error) {
// 실패 시 롤백
this.applyToUI(id, original);
this.pendingUpdates.delete(id);
throw error;
}
}
}더 많은 내용을 확인하세요! 📚
“트랜잭션과 동시성 제어”의 전체 내용을 보시려면 프리미엄 플랜이 필요합니다.
✨ 모든 기술 문서 무제한 액세스
📝 실습 예제와 상세한 코드 설명
🎯 면접 예상 질문과 답변 가이드