L'application de méthodes de cohérence dans nosql

La cohérence

Sommaire

propriété de la base de données signifie qu'une fois que les données sont écrites sur une base de données avec succès, les requêtes qui suivent sont en mesure d'accéder aux données et obtenir une vue cohérente des données. Dans la pratique, cela signifie que si vous écrivez un enregistrement à une base de données, puis immédiatement demander cet enregistrement, vous avez la garantie de le voir. Elle est particulièrement utile pour des choses comme Amazon commandes et les virements bancaires.

La cohérence est une échelle mobile, cependant, et un sujet trop profond pour couvrir ici. Cependant, dans le monde NoSQL, la cohérence tombe généralement dans l'une des deux camps:

  • ACIDE Cohérence (ACID signifie atomicité, cohérence, isolation, durabilité): ACIDE signifie qu'une fois les données sont écrites, vous avez une parfaite cohérence dans lit.

  • Cohérence eventuel (BASE): BASE signifie qu'une fois que les données sont écrites, il finira par apparaître pour la lecture.

Une bataille fait rage entre les gens qui croient forte cohérence dans une base de données est pas nécessaire et ceux qui croient qu'il est absolument nécessaire (Traduisez gens à Les départements de marketing des entreprises de NoSQL!).

La réalité se situe quelque part entre les deux. Est-il important que le poste Facebook d'une personne ne soit pas perçue par tous ses amis pendant cinq minutes? Non, probablement pas. Changement “ Facebook Poster ” à “ # 8208 milliards de dollars # 8208-financière transaction, n ° 148; cependant, et votre attitude change rapidement! Quelle cohérence approche vous choisissez dépend de la situation. Dans mon expérience, cependant, la cohérence forte est toujours le choix dans les situations de systèmes d'entreprise mission # 8208-critiques.

ACIDE

ACID est un ensemble de principes généraux pour les systèmes transactionnels, pas quelque chose liée uniquement pour les systèmes relationnels, ou même juste les bases de données, il est donc bien savoir à propos. ACIDE signifie essentiellement, “Cette base de données dispose d'installations pour vous empêcher de corruption ou la perte de données,” qui est pas une donnée pour toutes les bases. En fait, la grande majorité des bases de données NoSQL ne fournissent pas de garanties ACID.




Fondation DB, MarkLogic, et Neo4j existe des exceptions notables. Certaines bases de données NoSQL fournissent une garantie inférieure de # 8208 grade appelé Vérifier et définir qui vérifie si quelqu'un d'autre a modifié un document avant d'autoriser une transaction pour terminer. Ce comportement est généralement limitée parce qu'elle tend à être mis en œuvre sur une seule base # 8208 record.

MongoDB est une base de données qui fournit notable vérifier et définir les capacités. Avec MongoDB, un nœud entier # 8208-valeur de données peut être verrouillé pendant une mise à jour, empêchant ainsi tout lire et écrire tous les opérations jusqu'à ce que l'opération se termine. La société travaille sur la suppression de cette limitation, si.

BASE

BASE signifie que plutôt que de donner des garanties ACID, la base de données a un solde accordable de cohérence et de disponibilité des données. Cela est généralement le cas lorsque les nœuds d'un cluster base de données fait donné comme principaux gestionnaires d'une partie de la base de données, et d'autres nœuds Maintenir la touche READ # 8208-répliques seulement.

Pour veiller à ce que chaque client voit toutes les mises à jour (qui est, ils ont une vue cohérente des données), une écriture sur le nœud primaire contenant les données doivent verrouiller jusqu'à ce que tous lu répliques sont à jour. Ceci est appelé un deux# 8208-phase commit - le changement est effectué localement, mais appliqué et confirmée au client que lorsque tous les autres nœuds sont mis à jour.

BASE détend cette exigence, nécessitant seulement un sous-ensemble des nœuds qui détiennent les mêmes données pour être mis à jour pour que l'opération réussisse. Quelque temps après la transaction est validée, la lecture # 8208 seule réplique est mis à jour.

L'avantage de cette approche est que les transactions se sont engagés rapidement. Ayant répliques vivantes lisibles signifie également que vous pouvez répartir vos données lues charge, rendant la lecture plus rapide.

L'inconvénient est que les clients se connectant à certains des répliques de lecture peuvent voir à l'extérieur # 8208-des informations # 8208-date pour une période de temps indéterminée. Dans certains scénarios, cet état est très bien. Si vous postez un nouveau message sur Facebook et certains de vos amis ne le voyez pas pour un couple de minutes, il est pas une perte énorme. Si vous envoyez un ordre de paiement à votre banque, cependant, vous voudrez peut-être une opération immédiate.

Une approche alternative à lire # 8208-répliques seulement est d'avoir un commun# 8208-rien cluster dans lequel un seul nœud sur un cluster sert toujours une partie particulière de la base de données.

# Partagée 8208, rien ne veut pas dire que vous perdez la réplication, cependant. Bases de données qui utilisent cette méthode font généralement répliquer leurs données à une zone secondaire sur un autre nœud primaire ou nœuds - mais un seul noeud est le maître pour les lectures et écritures à tout moment.

# Shared 8208-rien grappes ont l'avantage d'un modèle de cohérence simple mais nécessitent deux # 8208-phase commit aux répliques. Ce fait signifie que les verrous de transaction alors que toutes les répliques sont mises à jour. (Un verrou interne plus de verrouillage pour les autres nœuds vous donne deux phases.)

Cela a généralement moins d'impact que les clusters de données partagées avec répliques en lecture seule, cependant, parce que partagé # 8208-rien zones de données de la réplique ne reçoivent pas les requêtes de lecture pour la partie de la base de données. Par conséquent, deux commits # 8208 phases sont plus rapides sur un cluster 8208-rien # partagé que sur un cluster avec des répliques lisible.

Choisir acide ou de base?

Comme on pouvait s'y attendre, une grande partie de l'argument est parce que les vendeurs NoSQL peuvent se différencier de leurs concurrents en revendiquant une approche différente, unique. Il est intéressant de noter, toutefois, le nombre de fournisseurs NoSQL avec ACID # 8208-conformité sur leur feuille de route.

Certaines bases de données NoSQL ont ACID # 8208-conformité sur leur feuille de route, même si elles sont les promoteurs de BASE, qui montre la pertinence de garanties ACID sont à l'entreprise, la mission# 8208-critique systèmes.

Beaucoup d'entreprises utilisent la base # 8208 produits de consistance lors de l'essai des idées parce qu'ils sont libres, mais migrent ensuite à un acide # 8208 conforme # 8208-payé pour la base de données quand ils veulent aller vivre sur un système 8208-Mission Critical #.

La meilleure façon de décider si vous avez besoin d'ACID est d'examiner les interactions des personnes et des autres systèmes ont avec vos données. Par exemple, si vous ajoutez ou mise à jour des données, est-il important que la très prochaine requête est en mesure de voir le changement? En d'autres termes, les décisions importantes sont suspendus sur l'état actuel de la base de données? Serait de voir un peu out # 8208 # 8208-du-jour des données signifient que ces décisions pourraient être vouée à l'échec?

Dans les services financiers, le besoin de cohérence est évidente. Pensez commerçants achat d'actions. Ils ont besoin de vérifier le solde de trésorerie avant de négocier afin d'assurer qu'ils ont l'argent pour couvrir le commerce. Si ils ne voient pas le bon équilibre, ils vont décider de dépenser de l'argent sur une autre transaction. Si la base de données qu'ils interrogation est que finalement cohérente, ils ne peuvent pas voir un manque de fonds suffisants, exposant ainsi leur organisation à des risques financiers.

Des cas similaires peuvent être construits pour ACIDE BASE plus dans les soins de santé, la défense, l'intelligence, et d'autres secteurs. Tout se résume aux données, cependant, et l'importance de la rapidité et la sécurité des données.


» » » » L'application de méthodes de cohérence dans nosql