낙관적 및 비관적 레코드 잠금

Rational® ClearQuest®의 낙관적 및 비관적 잠금 구현의 개요입니다.
데이터베이스의 데이터 잠금 모델은 다음 두 가지입니다.

두 데이터 잠금 모델 모두 변경이 데이터베이스에 확약된 후 잠금이 릴리스됩니다.

Rational ClearQuest는 기본적으로 낙관적 방식의 잠금을 사용합니다.

Rational ClearQuest 버전 7.1에는 비관적 방식의 잠금 지원이 추가되어 있어, 여러 사용자의 동시 레코드 편집을 방지하기 위한 메커니즘이 제공됩니다. 비관적 방식의 잠금 모델에서는 순차 레코드 수정이 강제 실행되므로 동일한 레코드를 동시에 업데이트하려고 시도하는 사용자를 차단합니다. 비관적 방식의 잠금을 사용하려면 스키마 저장소 및 연관된 사용자 데이터베이스를 기능 레벨 7로 업그레이드하거나 작성해야 하며 스키마 개발자가 스키마의 원하는 레코드 유형에 후크 코드를 추가해야 합니다. 스키마 수정에 관한 자세한 정보는 Rational ClearQuest Designer 및 Rational ClearQuest API 참조를 사용한 스키마 개발의 도움말을 참조하십시오.

다음 절에서는 낙관적 방식 잠금과 비관적 방식 잠금의 차이점을 자세히 설명합니다.

낙관적 방식의 잠금

낙관적 방식의 잠금 모델 또는 낙관적 동시성 제어는 레코드 잠금을 사용하지 않는 관계형 데이터베이스에 사용되는 동시성 제어 방법입니다. 낙관적 방식의 잠금을 사용하면 여러 사용자가 동일한 레코드를 업데이트하려고 시도할 수 있으며 사용자에게 다른 사용자도 레코드 업데이트를 시도하고 있음을 알려 줄 필요가 없습니다. 레코드가 확약되는 경우에만 레코드 변경의 유효성이 검증됩니다. 한 사용자가 레코드 업데이트를 완료하면 동시 업데이트 확약을 시도 중인 다른 사용자들에게 충돌이 있음을 알려줍니다.

낙관적 방식의 잠금 모델의 장점은 조치 지속 기간 중 레코드 잠금 오버헤드가 방지된다는 점입니다. 동시 업데이트가 없는 경우에 이 모델을 사용하면 빠르게 업데이트를 수행할 수 있습니다.

낙관적 방식의 잠금은 동시 레코드 업데이트가 자주 발생하지 않을 것으로 예상되거나 잠금 오버헤드가 높은 경우에 유용한 방법입니다. Rational ClearQuest에서 낙관적 방식의 잠금을 구현하는 경우, 여러 사용자의 동시 레코드 편집 시 한 사용자의 변경이 확약되면 다른 사용자의 변경은 거부되고 데이터 충돌을 저장하여 수동으로 병합해야 합니다.

비관적 방식의 잠금

비관적 방식의 잠금 모델은 레코드에 대한 동시 업데이트를 방지합니다. 사용자가 레코드 업데이트를 시작하자마자 해당 레코드에 잠금이 설정됩니다. 이 레코드를 업데이트하려고 시도하는 다른 사용자에게는 업데이트를 진행 중인 사용자가 있음을 알려줍니다. 다른 사용자는 먼저 시도한 사용자가 변경을 확약하여 레코드 잠금을 릴리스할 때까지 대기해야 합니다. 이전 사용자의 변경이 처리되는 상황에 따라 다른 사용자가 변경을 수행할 수 있습니다.

비관적 방식의 잠금 모델의 장점은 충돌을 예방하여 충돌 해결 문제가 방지된다는 점입니다. 업데이트가 일련화되어 이전 사용자의 레코드 변경이 확약되어야 각 후속 업데이트가 시작됩니다.

비관적 방식의 잠금은 이전 업데이트가 완료될 때까지 후속 업데이트가 지연될 수 있는 경우에 유용한 방법입니다. 일반적으로 업데이트가 짧은 시간 간격을 두고 발생한다는 것을 의미합니다.


피드백