문서 서버를 구현 중입니다. 현재 두 명의 사용자가 같은 문서를 열고 수정 한 다음 변경 사항을 저장하면 문서의 상태가 정의되지 않습니다. 첫 번째 사용자의 변경 사항은 영구히 저장되거나 두 번째 사용자의 변경 사항이 저장됩니다. 이것은 완전히 만족스럽지 않습니다. 이 문제를 해결하기 위해 두 가지 가능성을 고려했습니다 :Document Server : 동시 저장 처리
첫 번째는 누군가가 처음 열 때 문서를 잠그고 닫을 때 잠금을 해제하는 것입니다. 그러나 서버에 대한 네트워크 연결이 갑자기 중단되면 문서는 영원히 잠긴 상태를 유지합니다. 분명한 해결책은 서버에 정기적 인 ping을 보내는 것입니다. 서버가 특정 클라이언트로부터 K 개의 ping (K> 1)을받지 못하면이 클라이언트에 의해 잠긴 문서의 잠금이 해제됩니다. 해당 클라이언트가 다시 나타나면 누군가가 이미 잠근 적이없는 경우 문서가 다시 잠 깁니다. 이것은 클라이언트 응용 프로그램 (웹 브라우저에서 실행 중)이 예기치 않게 종료되어 '종료, 내 문서의 잠금 해제'신호를 서버에 보낼 수없는 경우에도 도움이 될 수 있습니다.
두 번째는 다른 사용자가 저장 한 동일한 문서의 여러 버전을 저장하는 것입니다. 문서가 빠르게 연속해서 변경되면 시스템은 버전을 병합하거나 원하는 버전을 선택할 수 있습니다. 저장 공간을 최적화하려면 소스 제어 소프트웨어와 마찬가지로 문서 비교 만 보관해야합니다.
서버에 연결하면 가끔이 느려지고 응답하지 않을 수 있다는 점을 고려하여 어떤 방법을 선택해야합니까? 매개 변수 (핑 간격, 빠른 연속 간격)는 어떻게 결정되어야합니까?
P. 불행히도 데이터베이스에 문서를 저장할 수 없습니다.