분산 DBMS-커밋 프로토콜

로컬 데이터베이스 시스템에서 트랜잭션 커밋을 위해 트랜잭션 관리자는 커밋 결정을 복구 관리자에게 전달하기 만하면됩니다. 그러나 분산 시스템에서 트랜잭션 관리자는 트랜잭션이 실행되는 다양한 사이트의 모든 서버에 커밋하기로 결정을 전달하고 결정을 균일하게 적용해야합니다. 각 사이트에서 처리가 완료되면 부분적으로 커밋 된 트랜잭션 상태에 도달하고 다른 모든 트랜잭션이 부분적으로 커밋 된 상태에 도달 할 때까지 기다립니다. 모든 사이트가 커밋 할 준비가되었다는 메시지를 받으면 커밋을 시작합니다. 분산 시스템에서는 모든 사이트가 커밋하거나 전혀 커밋하지 않습니다.

다른 분산 커밋 프로토콜은 다음과 같습니다.

  • 1 단계 커밋
  • 2 단계 커밋
  • 3 단계 커밋

분산 된 1 단계 커밋

분산 된 1 단계 커밋은 가장 간단한 커밋 프로토콜입니다. 제어 사이트와 트랜잭션이 실행되는 여러 슬레이브 사이트가 있다고 가정 해 보겠습니다. 분산 커밋의 단계는 다음과 같습니다.

  • 각 슬레이브가 로컬에서 트랜잭션을 완료 한 후 제어 사이트에 "DONE"메시지를 보냅니다.

  • 슬레이브는 제어 사이트에서 "Commit"또는 "Abort"메시지를 기다립니다. 이 대기 시간을window of vulnerability.

  • 제어 사이트가 각 슬레이브로부터 "DONE"메시지를 받으면 커밋 또는 중단을 결정합니다. 이를 커밋 지점이라고합니다. 그런 다음이 메시지를 모든 슬레이브에게 보냅니다.

  • 이 메시지를 받으면 슬레이브는 커밋하거나 중단 한 다음 승인 메시지를 제어 사이트로 보냅니다.

분산 2 단계 커밋

분산 2 단계 커밋은 1 단계 커밋 프로토콜의 취약성을 줄입니다. 두 단계에서 수행되는 단계는 다음과 같습니다.

Phase 1: Prepare Phase

  • 각 슬레이브가 로컬에서 트랜잭션을 완료 한 후 제어 사이트에 "DONE"메시지를 보냅니다. 제어 사이트는 모든 슬레이브로부터“DONE”메시지를 수신하면“Prepare”메시지를 슬레이브에 보냅니다.

  • 노예들은 그들이 여전히 저지르기를 원하는지에 대해 투표합니다. 슬레이브가 커밋을 원하면“Ready”메시지를 보냅니다.

  • 커밋을 원하지 않는 슬레이브는 "준비되지 않음"메시지를 보냅니다. 이는 슬레이브에 충돌하는 동시 트랜잭션이 있거나 시간 초과가있을 때 발생할 수 있습니다.

Phase 2: Commit/Abort Phase

  • 제어 사이트가 모든 슬레이브로부터 "준비"메시지를받은 후-

    • 제어 사이트는 "Global Commit"메시지를 슬레이브에 보냅니다.

    • 슬레이브는 트랜잭션을 적용하고 "Commit ACK"메시지를 제어 사이트로 보냅니다.

    • 제어 사이트가 모든 슬레이브로부터“Commit ACK”메시지를 받으면 트랜잭션이 커밋 된 것으로 간주합니다.

  • 제어 사이트가 슬레이브로부터 첫 번째 "준비되지 않음"메시지를받은 후-

    • 제어 사이트는 "Global Abort"메시지를 슬레이브에 보냅니다.

    • 슬레이브는 트랜잭션을 중단하고 "Abort ACK"메시지를 제어 사이트로 보냅니다.

    • 제어 사이트가 모든 슬레이브로부터“Abort ACK”메시지를 받으면 트랜잭션이 중단 된 것으로 간주합니다.

분산 3 단계 커밋

분산 된 3 단계 커밋의 단계는 다음과 같습니다.

Phase 1: Prepare Phase

단계는 분산 2 단계 커미트와 동일합니다.

Phase 2: Prepare to Commit Phase

  • 제어 사이트는 "준비 상태 입력"브로드 캐스트 메시지를 발행합니다.
  • 슬레이브 사이트는 이에 대한 응답으로“OK”로 투표합니다.

Phase 3: Commit / Abort Phase

단계는 "Commit ACK"/ "Abort ACK"메시지가 필요하지 않다는 점을 제외하면 2 단계 커밋과 동일합니다.