Transaction - DB

DevOps Engineer·2022년 7월 20일
0

Transaction
트랜잭션이란 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우,
처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행단위를 의미한다.
즉, 한 번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위이다.

이 질문을 하는 이유는 MSA 아키텍처를 구현할 때 하나의 API 서버 호출에 대한 처리를
비동기적으로 메시지브로커를 활용하여 다른 API 서버에서도 처리할 수 있도록 할 때 이 개념에 대해 알고 있어야
데이터의 부정합을 방지할 수 있고 중복적으로 처리한다거나 중간에 작업이 소실되는 일이 생기지않는다.

트랜잭션은 4가지의 특성을 가진다.

  • 원자성(Atomicity)
    - 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말합니다.

    • All or Nothing의 개념으로서 작업단위를 일부분만 실행하지 않는다는 것을 의미합니다.
  • 일관성(Consistency)
    - 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말합니다.

    • 일관성이란, 데이터타입의 변화가 생기지않는 것입니다. ex) 정수형 -> 문자형
  • 격리성(Isolation)
    - 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말합니다.

    • 트랜잭션 간에 간섭이 불가능합니다.
  • 지속성(Durability)
    - 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 말합니다.
    - commit을 하면 현재 상태는 영원히 보장됩니다.

    ![](https://velog.velcdn.com/images/akeka0303/post/df699c8a-305f-4b8e-b6b7-33306d38c17b/image.png)
    
    event store에 일시적으로 데이터를 보관해놓기 때문에 데이터가 유실되지 않는다.

    즉 일관성이 보장된 데이터를 처리할 수 있다.

참고문서
https://victorydntmd.tistory.com/129

profile
madame의 Techblog

0개의 댓글