La cohérence finale en anglais

J’entends souvent parler de cohérence éventuelle dans les différents discours sur NoSQL, les grids de données, etc. Il semble que la définition de la cohérence finale varie dans de nombreuses sources (et peut-être même dépend d’un stockage de données concret).

Quelqu’un peut-il donner une explication simple de ce que la cohérence finale est en termes généraux, pas liée à un stockage de données concret?

    Consistance éventuelle:

    1. Je regarde le bulletin météo et apprends qu’il va pleuvoir demain.
    2. Je te dis qu’il va pleuvoir demain.
    3. Votre voisin dit à sa femme que la journée sera ensoleillée demain.
    4. Vous dites à votre voisin qu’il va pleuvoir demain.

    Finalement, tous les serveurs (vous, moi, votre voisin) connaissent la vérité (que ça va pleuvoir demain), mais entre-temps le client (sa femme) est parti en pensant que ça va être ensoleillé, même si elle a demandé après qu’un ou plusieurs des serveurs (vous et moi) avaient une valeur plus à jour.

    Contrairement à la ssortingcte cohérence / conformité ACID:

    1. Votre solde bancaire est de 50 $.
    2. Vous déposez 100 $.
    3. Votre solde bancaire, demandé à partir de n’importe quel guichet automatique, est de 150 $.
    4. Votre fille retire 40 $ avec votre carte ATM.
    5. Votre solde bancaire, demandé à partir de n’importe quel guichet automatique, est de 110 $.

    À aucun moment, votre solde ne peut refléter autre chose que la sum réelle de toutes les transactions effectuées sur votre compte à ce moment précis.

    La raison pour laquelle tant de systèmes NoSQL ont une cohérence éventuelle est que pratiquement tous sont conçus pour être dissortingbués et que, avec des systèmes entièrement dissortingbués, il y a une surcharge super-linéaire pour maintenir une cohérence ssortingcte (ce qui signifie que vers le bas, et quand ils le font, vous devez lancer de manière exponentielle plus de matériel au problème pour continuer à évoluer).

    Consistance éventuelle:

    1. Vos données sont répliquées sur plusieurs serveurs
    2. Vos clients peuvent accéder à l’un des serveurs pour récupérer les données
    3. Quelqu’un écrit un morceau de données sur l’un des serveurs, mais il n’a pas encore été copié dans le rest
    4. Un client accède au serveur avec les données et obtient la copie la plus récente
    5. Un client différent (ou même le même client) accède à un serveur différent (un autre qui n’a pas encore reçu la nouvelle copie) et obtient l’ancienne copie.

    Fondamentalement, comme il faut du temps pour répliquer les données sur plusieurs serveurs, les demandes de lecture des données peuvent être envoyées à un serveur avec une nouvelle copie, puis aller sur un serveur avec une ancienne copie. Le terme “éventuel” signifie que les données seront éventuellement répliquées sur tous les serveurs et qu’elles auront toutes une copie à jour.

    La cohérence finale est indispensable si vous voulez des lectures de faible latence, car le serveur répondeur doit renvoyer sa propre copie des données et n’a pas le temps de consulter les autres serveurs et de parvenir à un accord mutuel sur le contenu des données. J’ai écrit un article de blog expliquant cela plus en détail.

    Pensez que vous avez une application et sa réplique. Ensuite, vous devez append un nouvel élément de données à l’application.

    entrer la description de l'image ici

    Ensuite, l’application synchronise les données avec d’autres répliques affichées ci-dessous

    entrer la description de l'image ici

    Pendant ce temps, un nouveau client va obtenir des données d’une réplique qui n’est pas encore à jour. Dans ce cas, il ne peut pas obtenir de données correctes à jour. Parce que la synchronisation prend du temps. Dans ce cas, il n’y a pas de cohérence

    Le problème est comment peut-on finalement la cohérence ?

    Pour cela, nous utilisons l’application médiateur pour mettre à jour / créer / supprimer des données et utiliser l’interrogation directe pour lire les données. qui aident à rendre finalement la cohérence

    entrer la description de l'image ici entrer la description de l'image ici

    Lorsqu’une application modifie un élément de données sur une machine, cette modification doit être propagée aux autres répliques. Comme la propagation du changement n’est pas instantanée, il y a un intervalle de temps pendant lequel certaines des copies auront le changement le plus récent, mais d’autres non. En d’autres termes, les copies seront incompatibles. Cependant, le changement sera éventuellement propagé à toutes les copies, d’où le terme «cohérence éventuelle». Le terme «cohérence éventuelle» est simplement une reconnaissance du fait qu’il y a un retard illimité dans la propagation d’un changement effectué sur une machine vers toutes les autres copies. La cohérence éventuelle n’est pas significative ou pertinente dans les systèmes centralisés (copie unique) car il n’y a pas besoin de propagation.

    Source: http://www.oracle.com/technetwork/products/nosqldb/documentation/consistency-explained-1659908.pdf

    La cohérence finale est plus comme un spectre. D’un côté, vous avez une forte cohérence et, sur d’autres, vous avez une cohérence éventuelle. Entre les deux, il y a des niveaux comme Snapshot, lisez mes écrits, une stagnation limitée. Doug Terry a une belle explication dans son article sur la cohérence à travers le baseball .

    Selon moi, la cohérence éventuelle est fondamentalement une tolérance aux données aléatoires dans un ordre aléatoire chaque fois que vous lisez à partir d’un magasin de données. Quelque chose de mieux que cela est un modèle de cohérence plus fort. Par exemple, un instantané a des données obsolètes, mais renverra les mêmes données si elles sont relues, ce qui est prévisible. Parfois, l’application peut tolérer des données obsolètes pendant une durée donnée au-delà de laquelle des données cohérentes sont nécessaires.

    Si vous examinez le sens de la cohérence, cela concerne davantage l’uniformité ou le manque de déviation. Ainsi, en termes de systèmes non informatiques, cela pourrait signifier une tolérance pour les variations inattendues. Cela pourrait être très bien expliqué par ATM. Un guichet automatique peut être déconnecté et, par conséquent, différent du solde du compte des systèmes centraux. Cependant, il existe une tolérance pour montrer des soldes différents pour une fenêtre de temps. Une fois le GAB en ligne, il peut se synchroniser avec les systèmes de base et refléter le même équilibre. On peut donc dire qu’un guichet automatique est finalement cohérent.

    Dans une phrase anglaise très simple, nous pouvons dire: Bien que votre système puisse être dans des états incohérents, l’objective est toujours d’atteindre la cohérence à un moment donné pour chaque donnée.