Je suis en train de mettre en place un serveur de documents. Actuellement, si deux utilisateurs ouvrent le même document, puis le modifient et sauvegardent les changements, l'état du document sera indéfini (soit les modifications du premier utilisateur sont enregistrées de façon permanente, soit les secondes). Ceci est entièrement insatisfaisant. J'ai considéré deux possibilités pour résoudre ce problème:Serveur de document: gestion des sauvegardes simultanées
Le premier consiste à verrouiller le document lorsqu'il est ouvert par quelqu'un la première fois et à le déverrouiller lorsqu'il est fermé. Mais si la connexion réseau au serveur est soudainement interrompue, le document resterait dans un état verrouillé à jamais. La solution évidente est d'envoyer des pings réguliers au serveur. Si le serveur ne reçoit pas de K ping d'affilée (K> 1), les documents verrouillés par ce client sont déverrouillés. Si ce client réapparaît, les documents sont à nouveau verrouillés, si quelqu'un ne les a pas déjà verrouillés. Cela peut également aider si l'application cliente (exécutée dans le navigateur Web) est interrompue de façon inattendue, rendant impossible l'envoi d'un signal «quitter, déverrouiller mes documents» au serveur.
La seconde consiste à stocker plusieurs versions du même document enregistrées par différents utilisateurs. Si des modifications sont apportées rapidement au document, le système propose soit de fusionner des versions, soit de sélectionner une version préférée. Pour optimiser l'espace de stockage, seules les différences de document doivent être conservées (tout comme les logiciels de contrôle de source).
Quelle méthode dois-je choisir, en prenant en compte que la connexion au serveur peut parfois être lente et ne pas répondre? Comment les paramètres (intervalle de ping, intervalle de succession rapide) doivent-ils être déterminés?
P.S. Malheureusement, je ne peux pas stocker les documents dans une base de données.