Cohérence des données
Les données cohérentes sont des données identiques sur le réseau. En d’autres termes, si les données sont cohérentes, les données sur le serveur et tous les clients sont synchronisées. Un type de système logiciel qui fournit une cohérence des données est un système de contrôle de révision (RCS). Un tel système est généralement assez simple, avec un seul utilisateur autorisé à modifier un fichier spécifié à la fois. D’autres peuvent lire le fichier, mais ne peuvent pas le modifier.
L’utilisateur qui peut modifier un fichier est dit avoir extrait ce fichier. L’utilisateur vérifie ensuite le fichier modifié afin que d’autres personnes puissent voir les modifications. Une fois que l’utilisateur a archivé un fichier, un autre utilisateur peut l’extraire.
Un RCS nécessite l’intervention active des utilisateurs pour fonctionner de manière utile. Un système de fichiers qui fonctionne sur un réseau doit gérer automatiquement le problème.
Fournir une mise en cache locale de données cohérentes est assez simple lorsque vous avez un thread sur un client accédant à un fichier sur le réseau à la fois. Toutefois, dans la plupart des cas, de nombreux threads différents sur un ou plusieurs ordinateurs peuvent lire le même fichier. Cette situation est encore assez simple. Étant donné que les données du fichier sont statiques, chaque ordinateur client peut avoir sa propre copie locale sans implications pour la cohérence des données.
Une situation plus courante est un thread qui modifie le fichier, et beaucoup d’autres threads le lisant. Le moment où une opération d’écriture se produit, tous les caches locaux de ce fichier sont obsolètes. Le serveur doit avertir chaque client d’abandonner son cache. Toutes les opérations de lecture suivantes pour le fichier doivent être effectuées sur le réseau.
Dans une autre situation courante, plusieurs threads sur un ou plusieurs clients réseau peuvent essayer d’écrire dans le même fichier. Cette situation est similaire à celle dans laquelle plusieurs utilisateurs RCS souhaitent tous apporter des modifications au même fichier. Chaque utilisateur en séquence doit extraire le fichier, apporter des modifications, puis archiver le fichier. De même, dans un schéma de mise en cache local, le serveur doit remettre le privilège d’écriture dans un fichier sur un thread client à la fois.