JAVA공부/4-트렌젝션

1. 트렌젝션이란 무엇인가?

으노으뇨 2024. 10. 28. 23:29
728x90
반응형
SMALL

24년간 프로젝트를 마무리하면서 이제 처절하게 배우고 또 배웠던..

트랜젝션에 대해서 이제 다시 학습하고 다음 프로젝트 또는 개인 프로젝트에서 다양하게 응용 또는 개발 시 이해할 수 있도록 하기 위해 포스팅을 작성해보겠습니다 ㅠ

정말 오랜만에 작성하는 포스팅이에요!

언제또 바빠져서 티스토리 근처에 얼씬 못할 수 도있으니 1주일동안 여유로울때 빠짝! 트렌젝션을 학습해 보겠습니다.

트렌젝션의 개념과 이해, 분산 트랜젝션의 작동원리와 WAS에서의 Distributed 트랜젝션의 구현 원리, 자바 ㅌ느랜젝션 관련 API, EJB에서 트랜잭션들을 학습해보겠습니다.

1. 트렌젝션이란??

트렌젝션이란, 중단 없이 시작에서 부터 종료까지 한번에 수행되어야 하나의 작업 단위

중간에 작업이 실패되었을 경우엔 작업 수행전의 상태로 그대로 돌아간다.

A계좌에서 1000원을 인출
B계좌에서 1000원을 더 한다

위 작업을 수행도중 A계좌에서 1000원이 인출된 후, 은행시스템 오류 발생으로 인해 B계좌에 더해지지 않았다면 A의 돈은 공중 분해가 될것이다. 
이를 방지하기 위해 A계좌에서 진행된 작업이 취소처리가 되어 돌아가야한다.

위 작업은 한번에 이루어 져야한다.

2. 트랜젝션의 속성 "ACID"

트렌젝션은 4가지 속성을 가지고 있다.

Atomicity (원자성)

Database modifications must follow all or nothing.

원자성이란, 하나의 트렌젝션이 하나의 단위로만 처리가 되어야한다.

하나의 트렌젝션 안에 여러가지 step의 트렌젝션이, 하나로 처리가 되어야한다.

계좌이체처럼 계좌에서 돈을 빼고 다른 계좌에 넣는것과 같이 두 개 이상의 단계로 구성되어 있어도, 계좌이체 라는 하나의 트렌젝션으로 처리된다.

어떤 단계라도 트렌젝션이 실패가 되었을 경우네는 모든 상태가 트렌젝션 수행 전으로 롤백이 되어야 상태를 유지해야한다.

트렌젝션의 원자성은 트렌젝션이 완전히 수행되거나, 아무것도 수행되지 않는 All or Nothing 

Consistency (일관성)

State that only valid data will be written to the database

트렌젝션이 종료된 후에는 저장되는 데이타는 오류가 없는 데이터만 저장되어야한다.

트렌젝션이 끝난 후에 잘못된 데이터 값으로 변경되거나 데이터베이스의 일관성이 깨지거나 할때 이때도 이전 상태로 롤백 되어야한다.

Isolation (격리성)

Multiple transactions occurring at the same time not impact each orther execution

격리성이란, 트렌젝션 중에 변경된 내용이 트렌젝션이 완료되기 전까지는 다른 트렌젝션에 영향을 주어선 안 된다.

트렌젝션 수행중 특정 테이블값을 변경했을때, 해당 수행이 모두 완료되지 않은 상태에서 

다른 요청이 그 특정 테이블값을 참고할 경우 모두 완료되지 않는 상태에서 참고하는게 아닌 그 전의 기존 값을 참고하게 해야한다.

Durability (지속성)

Ensure that any transaction committed to the database will not be lost

지속성이란, 트렌젝션이 완료된 후에의 값이 영구저장소에 제대로 기록이 되어야 한다는 의미이다.

트렌젝션이 완료되었는데 디스크 입출력에러, 네트워크 등으로 그 값이 제대로 기록되 않으면 안 된다.

728x90
반응형
LIST