skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

트랜잭션 전파레벨 nested #132

Open skarltjr opened 1 year ago

skarltjr commented 1 year ago
기본 전파레벨이 아니라 다른 전파레벨이 존재하는 이유가 분명히 있을것
그런데 경험해보지않으면 막상 어떤 경우에 다른 전파레벨을 사용하게되는지 생각하기가 힘들었다
그래서 다양한 예시를 찾아보며 생각해보았는데 ...

Nested

부모 트랜잭션이 존재하면 부모 트랜잭션 안에 트랜잭션을 만든다. 부모트랜잭션의 커밋과 롤백에 영향을 받지만 자신의 커밋과 롤백은 부모 트랜잭션에 영향을 주지 않는다.
만약에 어떤 정보를 저장하며 그 속에서 로그를 저장하는 로직이 존재한다고 생각해보자
로직 저장 실패가 데이터베이스에 정보 저장 실패까지 영향을 줘야하는가?

즉 db 데이터 저장이 부모 트랜잭션으로 동작하며 그 속에서 자식 트랜잭션으로 로그 저장이 수행되는데
이때 db 데이터 저장 실패의 경우 로그 저장도 실패해야하지만 로그 저장 실패가 db 데이터 저장 실패로 이어지는것을 방지하고자 
Nested 전파레벨을 사용할 수 있다.

다만 이는 예시로 생각해봤고 로그의 경우 nosql에 저장하는 경우가 많다고 생각하여
데이터 저장시 로그 생성을 이벤트로 처리하여 두 작업이 강하게 결합되는걸 막는편이 더 좋은게 아닐까한다.
skarltjr commented 1 year ago

다른 방법으로 해결할 순 없을까??

굳이 트랜잭션 전파레벨 혹은 별도의 이벤트처리가 아니더라도 앞 상황처럼
데이터 저장 중 로그 저장으로 인한 문제를 해결할 수 있는 방법이 없는걸까?

try-catch