본문 바로가기

DB/Postgresql

샤딩에서 분산트랙잭션 관리

728x90
반응형

샤딩에서 분산 트랜잭션을 관리하는 방법은 여러 가지가 있습니다. 대표적인 방법으로는 다음과 같은 것들이 있다:

  1. Two-Phase Commit (2PC):
    • Prepare Phase: 모든 샤드에 트랜잭션 준비 요청을 보낸다. 모든 샤드가 준비되었다고 응답하면 다음 단계로 진행한다.
    • Commit Phase: 모든 샤드에 커밋 요청을 보낸다. 만약 어떤 샤드에서라도 실패하면 롤백 요청을 보낸다.
  2. Three-Phase Commit (3PC):
    • CanCommit Phase: 모든 샤드에 트랜잭션을 커밋할 수 있는지 물어본다.
    • PreCommit Phase: 모든 샤드가 커밋 가능하다고 응답하면, 프리커밋 요청을 보낸다.
    • DoCommit Phase: 모든 샤드에 커밋 요청을 보낸다.
  3. Sagas:
    • 트랜잭션을 여러 개의 작은 트랜잭션으로 나누고, 각 트랜잭션이 성공하면 다음 트랜잭션을 실행한다.
      실패 시에는 보상 트랜잭션을 실행하여 롤백한다.
  4. Distributed Locking:
    • 분산 락을 사용하여 트랜잭션이 동시에 실행되지 않도록 한다.
  5. Eventual Consistency:
    • 즉각적인 일관성을 포기하고, 시간이 지나면서 데이터가 일관성을 가지도록 한다.

각 방법은 장단점이 있으며, 시스템의 요구사항에 따라 적절한 방법을 선택해야 한다.

 

- 끝 -

728x90
반응형