문제

우리는 오는 좋은 디자인 패턴의 팀을 위해 올 때 기록 잠글 수 있습니다.일반적인 학교의 생각은 다음과 같습니다.1.사용자 선택에서 레코드 목록 2.잠금 기록한 사용자 id 3.부하,잠금 기록을 기록(잠금,다음 사람이 이길 ya 다).

나는 뭔가를,또는 이 나타날 수있는 유일한 방법이 될 수 있을까요?((우리의 경우 낙관적 잠금을 증명할 것이 복잡하고 혼란한 최종 사용자에게 제공합니다.편집은 종종 매우 실질적이다.))

도움이 되었습니까?

해결책

세부사항을 만들 수 있는 솔루션 집중적인 관리는 제거하기 잠금 장치의 후에 충돌 또는 연결을 실패입니다.는 어디 사이에 균형을 낙관적이고 비관적인 잠그는 정말 거짓말입니다.수동으로 합병,또는 재실행,편집한 경우 낙관적 잠금 실패하는 것은 고통이지만,총정리 한 후 충돌에 비관적이고 영구적인 잠그는 모델을 만듭니다 그것의 자신의 두통(으로 사람을 지원하는 사용자의 보급업 회계 시스템 90 년대에 당신을 말할 것이다 길어)

하나 대답을 사용하는 것입 RDBMS 의 메커니즘을 관리하기 위한 트랜잭션과 동시성:를 잡아와 기록에 대해 선택한 업데이트하거나 어떤 구문의 맞는 환경과 격리 수준입니다.만약 하나의 클라이언트가 충돌하거나 분리되는 트랜잭션 롤 다시 잠금을 얻을 발표했다.

에 연결 없는 환경에서 웹이나 환경 연결에 길을 잃고 복구 자주 세션에 기반한 모델을 세션 시간 제한할 수 있도 작동:

  • 를 취소하려고 시도하에 기존 자물쇠에 기록하는 경우가 만료되었는지 세션
  • 도 잠금 기록하 sessionid(이 실패하는 경우 이전 단계의 실패)
  • 선택하,잠금 기록(한 기록을 반환하는 경우 이전 단계의 실패)

그래서 잠금을 얻을 출시할 때 세션에 만료됩니다.아동 잠금을 제거한 후에 충돌 몇 가지의 공차는 클라이언트/연결 문제입니다.그것은 좀 더 작동하는 코드 하지만입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top