Table des matières:
- ACID
- BASE
- Comme vous pouvez vous y attendre, une grande partie de l'argument est que les fournisseurs de NoSQL peuvent se différencier de leurs concurrents en revendiquant une approche différente et unique. Il est intéressant de noter, cependant, le nombre de fournisseurs NoSQL avec la conformité ACID sur leur feuille de route.
Vidéo: Microsoft Azure OpenDev—June 2017 2024
La propriété cohérence d'une base de données signifie que Une fois les données écrites dans une base de données, les requêtes suivantes peuvent accéder aux données et obtenir une vue cohérente des données. En pratique, cela signifie que si vous écrivez un enregistrement dans une base de données et que vous demandez immédiatement cet enregistrement, vous êtes certain de le voir. C'est particulièrement utile pour les commandes Amazon 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 se situe généralement dans l'un des deux camps:
-
Cohérence ACID (ACID signifie Atomicité, Cohérence, Isolation, Durabilité): ACID signifie qu'une fois les données écrites, vous avez une cohérence totale lit.
-
Cohérence éventuelle (BASE): BASE signifie qu'une fois les données écrites, elles apparaîtront en fin de lecture.
Une bataille fait rage entre les gens qui croient qu'une forte cohérence dans une base de données n'est pas requise et ceux qui la croient absolument nécessaire (traduire personnes à NoSQL entreprises «départements de marketing! ).
La réalité est quelque part entre les deux. Est-il important que le message Facebook d'une personne ne soit pas vu par tous ses amis pendant cinq minutes? Non, probablement pas. Changez «Facebook post» en «transaction financière d'un milliard de dollars», et votre attitude change rapidement! L'approche de cohérence que 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ème d'entreprise critiques.
ACID
ACID est un ensemble général de principes pour les systèmes transactionnels, pas seulement lié aux systèmes relationnels, ou même simplement aux bases de données, il vaut donc la peine de le savoir. ACID signifie fondamentalement, " Cette base de données a des installations pour vous empêcher de corrompre ou de perdre des données, " ce qui n'est pas une donnée pour toutes les bases de données. En fait, la grande majorité des bases de données NoSQL ne fournissent pas de garanties ACID.
Foundation DB, MarkLogic et Neo4j sont des exceptions notables. Certaines bases de données NoSQL fournissent une garantie de qualité inférieure appelée Vérifier et définir qui vérifie si quelqu'un d'autre a modifié un document avant de permettre la fin d'une transaction. Ce comportement est généralement limité car il a tendance à être implémenté sur un seul enregistrement.
MongoDB est une base de données remarquable qui offre des fonctionnalités de vérification et de définition. Avec MongoDB, une valeur entière de nœud peut être verrouillée pendant une mise à jour, empêchant ainsi toutes les opérations de lecture et d'écriture jusqu'à la fin de l'opération.La société travaille sur la suppression de cette limitation, cependant.
BASE
Pour garantir que chaque client voit toutes les mises à jour (c'est-à-dire qu'il a une vue cohérente des données), une écriture sur le noeud principal contenant les données doit être verrouillée jusqu'à ce que toutes les répliques lues soient à jour. Ceci est appelé
deux - phase commit - la modification est effectuée localement mais appliquée et confirmée au client uniquement lorsque tous les autres nœuds sont mis à jour. BASE assouplit cette exigence, en n'exigeant qu'un sous-ensemble des nœuds contenant les mêmes données pour être mis à jour afin que la transaction réussisse. Une fois la transaction validée, la réplique en lecture seule est mise à jour.
L'avantage de cette approche est que les transactions sont engagées plus rapidement. Ayant des réplicas en direct lisibles signifie également que vous pouvez répartir votre charge de lecture de données, ce qui rend la lecture plus rapide.
L'inconvénient est que les clients qui se connectent à certaines des réplicas lus peuvent voir des informations obsolètes pour une période indéterminée. Dans certains scénarios, cet état est correct. Si vous postez un nouveau message sur Facebook et que certains de vos amis ne le voient pas pendant quelques minutes, ce n'est pas une énorme perte. Si vous envoyez un ordre de paiement à votre banque, vous voudrez peut-être une transaction immédiate.
Une approche alternative aux réplicas en lecture seule est d'avoir un cluster
partagé - rien dans lequel un seul nœud d'un cluster dessert toujours une partie particulière de la base de données. Partagé: rien ne signifie que vous perdez la réplication. Les bases de données qui utilisent cette méthode répliquent généralement leurs données vers une zone secondaire sur un ou plusieurs autres nœuds principaux, mais un seul nœud est le maître des lectures et des écritures à tout moment.
Les clusters sans partage ont l'avantage d'un modèle de cohérence plus simple, mais nécessitent un commit en deux phases pour les réplicas. Ce fait signifie que la transaction se verrouille alors que toutes les répliques sont mises à jour. (Un verrou interne plus le 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és avec des réplicas en lecture seule, car les zones de données de réplicas partagées ne reçoivent pas les demandes de lecture. partie de la base de données. Par conséquent, les validations en deux phases sont plus rapides sur un cluster à rien partagé que sur un cluster avec des réplicas lisibles.
Choisir ACID ou BASE?
Comme vous pouvez vous y attendre, une grande partie de l'argument est que les fournisseurs de NoSQL peuvent se différencier de leurs concurrents en revendiquant une approche différente et unique. Il est intéressant de noter, cependant, le nombre de fournisseurs NoSQL avec la conformité ACID sur leur feuille de route.
Certaines bases de données NoSQL ont une conformité ACID sur leur feuille de route, même si elles sont des partisans de BASE, qui montre à quel point les garanties ACID sont valables pour les systèmes
entreprise, mission - critiques . De nombreuses entreprises utilisent des produits de cohérence BASE pour tester leurs idées, car elles sont gratuites, mais migrent vers une base de données payante conforme à l'ACID lorsqu'elles souhaitent se connecter à un système critique.
Le moyen le plus simple de décider si vous avez besoin d'ACID est de prendre en compte les interactions entre les personnes et les autres systèmes avec vos données. Par exemple, si vous ajoutez ou mettez à jour des données, est-il important que la requête suivante puisse voir le changement? En d'autres termes, les décisions importantes sont-elles suspendues à l'état actuel de la base de données? Le fait de voir des données légèrement dépassées signifie-t-il que ces décisions pourraient être fatales?
Dans les services financiers, le besoin de cohérence est évident. Pensez aux commerçants qui achètent des actions. Ils ont besoin de vérifier le solde de trésorerie avant de négocier pour s'assurer qu'ils ont l'argent pour couvrir le commerce. S'ils ne voient pas le bon équilibre, ils décideront de dépenser de l'argent pour une autre transaction. Si la base de données qu'ils interrogent n'est finalement cohérente, ils peuvent ne pas voir un manque de fonds suffisants, exposant ainsi leur organisation à un risque financier.
Des cas similaires peuvent être créés pour ACID sur BASE dans les secteurs de la santé, de la défense, du renseignement et d'autres secteurs. Tout se résume cependant aux données et à l'importance de la rapidité et de la sécurité des données.