ActiveRecord의 낙관적 잠금 및 비관적 잠금 기능에 대해 읽었으며 레일즈 코드에서이 기능을 전혀 사용하지 않고 있습니다. 언제 사용하는지 알기위한 좋은 경험 법칙은 무엇입니까? 두 사람이 같은 대상을 편집하려고 할 때 한 가지 예가 될 것입니다.언제 ActiveRecord 잠금에 대해 걱정해야합니까?
1
A
답변
1
동일한 데이터를 동시에 변경할 수 있고 변경 사항이 "이기기"에 대한 명확한 규칙이없는 경우 동일한 문제에 대한 다른 솔루션이나 솔루션을 사용해야합니다. 그것은 두 사람이 같은 대상을 편집하는 시대의 하위 집합입니다.
일반적으로 낙관적 인 잠금은 충돌이 발생할 가능성이 낮을 때 적합합니다. 사람들이 오버 헤드가 적기 때문입니다. 다른 사람이 개체를 변경했기 때문에 편집하고 매우 일순간에 작업을 다시해야한다는 메시지가 나타납니다.
비관적 잠금은 충돌이 발생할 가능성이 높으며 작업을 다시 시도하기위한 노력의 양이 많으며 사용자가 오랫동안 변경하지 않으려 고하며 예를 들어 예의 바르게 신뢰할 수 있습니다. 완료되면 잠금을 해제합니다.
같은 데이터에 관심이있는 사용자 수가 비교적 적은 경우에만 모두 잘 작동합니다. 두 모델 모두 충돌이있을 때 사용자가 작업을 다시 실행하도록 강요하거나 다른 사람이 작업을 완료하기 전에 완료 될 때까지 기다릴 수 있기 때문에 동시 편집의 수가 많으면 좋지 않은 경우도 있습니다.
충돌이 예상되고 동일한 데이터에서 작동하는 사용자가 거의 없을 경우 CQRS와 같은 고급 접근 방식을 사용하여 동시성 문제를 해결하고자합니다.
관련 문제
- 1. iOS 응용 프로그램에서 스레드 안전성에 대해 언제 걱정해야합니까?
- 2. DirectShow 필터의 공유 상태를 잠그는 것에 대해 언제 걱정해야합니까?
- 3. NSUserDefaults의 충돌에 대해 걱정해야합니까?
- 4. MySQL 데이터베이스의로드에 대해 걱정해야합니까?
- 5. IE6 이하에 대해 걱정해야합니까?
- 6. 나는 이것에 대해 걱정해야합니까 ...?
- 7. HierarchyID가 부족하다는 것에 대해 걱정해야합니까?
- 8. 플래시의 스레드 안전성에 대해 걱정해야합니까?
- 9. ActiveRecord 트랜잭션은 언제 사용해야합니까?
- 10. ActiveRecord :: ConnectionAdapters :: TableDefinition을 언제 연장해야합니까?
- 11. Big Endianness에 대해 걱정해야합니까 아니면 사소한 측면입니까?
- 12. Doctrine2 EntityManagers의 여러 인스턴스와의 불일치에 대해 걱정해야합니까?
- 13. 하나의 CPU 시스템에서 NUMA에 대해 걱정해야합니까?
- 14. .NET 코드의 난독 화에 대해 걱정해야합니까?
- 15. 가짜 계정/웹 사이트의 로그인에 대해 걱정해야합니까?
- 16. 스윙에서 "this"포인터 누출에 대해 걱정해야합니까?
- 17. 파이프가 오버 플로우되는 것에 대해 걱정해야합니까?
- 18. MS SQL 서버로 Asp.net 웹 사이트 실행 - 언제 확장성에 대해 걱정해야합니까?
- 19. 해제 된 잠금에 대해 svn을 자동으로 폴링하는 방법이 있습니까?
- 20. Windows 클립 보드에 많은 양의 데이터를 저장하는 것에 대해 걱정해야합니까?
- 21. "윈도우가 정의되지 않았습니다"JSLint strict 모드 에러에 대해 걱정해야합니까?
- 22. 이 C# EF 시나리오에서 가비지 수집에 대해 걱정해야합니까?
- 23. 프로세스 goup의 프로세스가 신호를 수신하는 순서에 대해 걱정해야합니까?
- 24. ASP.NET : 특정 상황에서 메모리 누수에 대해 걱정해야합니까? [C 번호]
- 25. 돈을 받기 전에 Apk을 클라이언트에게 보내는 것에 대해 걱정해야합니까?
- 26. "범위가 지정된 북마크 에이전트 연결이 중단됨"로그 메시지에 대해 걱정해야합니까?
- 27. 스레드 및 잠금에 관한 질문
- 28. SEO에 대한 RSS URL을 걱정해야합니까?
- 29. 왜 ActiveRecord 모델에 대해 before_save가 호출되지 않습니까?
- 30. 여러 모델에 대해 ActiveRecord Observer를 동적으로 인스턴스화합니다.