Manipulation des partitions dans nosql

La partition de mot est utilisé pour deux concepts différents dans les terres NoSQL. UN partition de données

Sommaire

est un mécanisme pour assurer que les données sont distribuées équitablement à travers un cluster. D'autre part, un partition de réseau se produit lorsque deux parties de la même grappe de bases de données ne peuvent pas communiquer.

Sur les très grands systèmes en cluster, il est plus probable que la défaillance d'une pièce d'équipement qui va se passer. Si un commutateur de réseau entre les serveurs d'un cluster échoue, un phénomène appelé (dans le jargon informatique) split brain se produit. Dans ce cas, les serveurs individuels reçoivent toujours des demandes, mais ils ne peuvent pas communiquer entre eux.

Ce scénario peut conduire à une incohérence des données ou simplement pour une capacité réduite dans le stockage de données, comme la partition de réseau avec le moins de serveurs est supprimé du cluster (ou “ a voté off ” de véritable mode Big Brother).

Partitions Tolérer

Vous avez deux choix quand une partition de réseau qui se passe:

  • Continuer, à un certain niveau, au service de lecture et d'écriture.

  • “ voter off ” une partie de la partition et de décider de fixer les données plus tard, lorsque les deux parties peuvent communiquer. Cela implique généralement la grappe votant une réplique lire comme le nouveau maître pour chaque nœud de partition maîtresse manquante.

Riak vous permet de déterminer combien de fois les données sont répliquées (trois exemplaires, par défaut - qui est, n = 3) et le nombre de serveurs doit être interrogé dans l'ordre pour une lecture de réussir. Cela signifie que, si le maître principal d'une clé est sur le mauvais côté d'une partition du réseau, les opérations de lecture peuvent encore réussir que si les deux autres serveurs sont disponibles (à savoir, la disponibilité r = 2 de lecture).

Riak gère les écritures lorsque le serveur de partition primaire descend en utilisant un système appelé transfert laissé entendre. Lorsque les données sont reproduites à l'origine, le premier noeud d'une partition touche particulière est écrit dans, avec (par défaut) des deux noeuds voisins suivants.




Si le primaire ne peut pas être écrit, le prochain nœud dans l'anneau est écrit. Ces écritures sont effectivement transféré au noeud suivant. Lorsque le serveur principal remonte, les écritures sont rejoués à ce noeud avant de prendre à nouveau sur les opérations d'écriture primaire.

Dans ces deux opérations, les incohérences de versions peuvent se produire parce que les différentes répliques peuvent être dans différents états de version, même si seulement pour quelques millisecondes.

Riak emploie encore un autre système appelé actif anti# 8208-entropie à atténuer ce problème. Ce système chaluts à travers des valeurs mises à jour et assure que les répliques sont mis à jour à un certain point, de préférence plutôt tôt que tard. Cela permet d'éviter les conflits lors de la lecture tout en conservant une vitesse d'ingestion élevé, ce qui évite les deux # 8208-phase commit utilisé par les bases de données NoSQL avec d'autres maître-esclave # 8208, # 8208 partagée rien le soutien de clustering.

Si un conflit lors de la lecture ne se produise, Riak utilise lire la réparation pour tenter de retourner uniquement les données les plus récentes. Finalement, cependant, et en fonction des paramètres de cohérence et la disponibilité que vous utilisez, l'application cliente peut être présentée avec plusieurs versions et a demandé de décider pour lui-même.

Dans certaines situations, ce compromis est souhaitable, et de nombreuses applications peut intuitivement savoir, sur la base des données présentées, la version à utiliser et qui la version de se défaire.

Indexation secondaire

Index secondaires sont des indices sur les données spécifiques à l'intérieur d'une valeur. La plupart clé # 8208-valeur magasins quittent cette indexation à la demande. Cependant, Riak est différent, employant un programme appelé document# 8208-partitionnement base qui permet d'indexation secondaire.

Partitionnement basé à 8208 Document # suppose que vous écrivez structures JSON à la base Riak. Vous pouvez ensuite mettre en place des index sur des propriétés particulières nommés au sein de cette structure de JSON, comme indiqué:

{“ pour-id ” ;: 5001, n ° 147; client-id ” ;: 1429857, “ pour jour ” ;: “ 24/09/2014 ”, n ° 147; ” ;: totale 134.24}

Si vous avez une demande qui est montrant les ordres d'un client pour le mois précédent, alors vous voulez interroger tous les records, comme le montre, où l'identification du client est une valeur fixe (1.429.857) et la commande n ° 8208-jour est dans une gamme particulière (le début et la fin du mois).

Dans la plupart des Key # 8208-valeur magasins, vous créez un autre seau dont la clé est le nombre de clients combinée, le mois et la valeur est une liste de commandes identifiants. Cependant, dans Riak, il suffit d'ajouter un index secondaire à la fois sur la clientèle # 8208-id (entier) et la commande n ° 8208-Date (date), qui ne prend de l'espace de stockage supplémentaire, mais a l'avantage d'être transparente pour le développeur de l'application.

Ces indices sont également mis à jour en temps réel - ce qui signifie qu'il n'y a pas un décalage entre la mise à jour valeur du document dans Riak et les indices étant à jour. Cet accès direct aux données est plus difficile à arracher que ce qu'il semble. Après tout, si les indices sont incompatibles, vous ne trouverez jamais les données de manière cohérente tenues!

Évaluer Riak

Basho, l'entité commerciale derrière Riak, dit que sa base de données prochaine version 2.0 NoSQL a toujours une forte cohérence, une revendication que d'autres fournisseurs font NoSQL. La demande par les fournisseurs NoSQL d'avoir toujours la cohérence forte est comme prétendant être un végétarien forte. . . sauf le dimanche où vous avez rôti de boeuf.

Riak est pas une base de données 8208-compatible ACID #. Sa configuration ne peut être modifiée de telle sorte qu'il fonctionne en mode de conformité ACID. Les clients peuvent obtenir des données incohérentes pendant les opérations normales ou pendant partitions du réseau. Riak métiers cohérence absolue pour une disponibilité accrue et de la tolérance de la partition.

Courir Riak en mode de forte cohérence signifie que ses répliques de lecture sont mis à jour en même temps que le maître primaire. Cela implique deux # 8208-phase commit - essentiellement, le nœud maître écrit aux autres nœuds avant elle confirme que le écriture est terminée.

Au moment d'écrire ces lignes, le mode de cohérence forte de Riak ne supporte pas les index secondaires ou des types de données complexes (par exemple, JSON). Espérons que, Basho va résoudre ce problème dans les prochaines versions de la base de données.

Riak Recherche (un moteur de recherche Apache Solr rebaptisé et intégré utilise un modèle de mise à jour par la suite cohérente) peut produire des faux positifs lors de l'utilisation de cohérence forte. Cette situation se produit parce que les données peuvent être écrites et alors la transaction abandonnés, mais les données sont encore utilisés pour l'indexation - laissant un résultat de recherche «faux positif» - le résultat est pas réellement plus longtemps valable pour la requête de recherche.

Riak utilise également un séparée processus de sentinelle pour déterminer quel noeud devient un maître dans des conditions de basculement. Ce procédé, cependant, ne sont pas hautement disponible, ce qui signifie que pendant quelques secondes, il est possible que, même si une nouvelle copie de la processus de sentinelle est mis en ligne, un nouveau noeud ne peut être ajouté ou un nouveau maître élu. Vous devez être au courant de cette possibilité en haute # 8208-stress conditions de basculement.

Riak possède quelques fonctionnalités intéressantes pour les développeurs d'applications, telles que l'indexation secondaire et # 8208 en JSON prise en charge intégrée de la valeur. La réplication de base de données de reprise après sinistre à d'autres centres de données est disponible uniquement dans le payée pour la version, dont le prix peut être trouvé sur leur site web (prix de location affichés, prix des licences perpétuelles donnés uniquement sur demande).

L'outil de surveillance de la grappe de contrôle Riak est également pas très apprécié en raison de son temps de latence lors de la surveillance des grappes. Riak est titulaire d'un lot de promesses, et si Basho va ajouter plus entreprise# 8208-niveau Groupe # 8208 installations de gestion dans les futures versions, il sera devenu un best-# 8208 dans le produit # 8208-classe.


» » » » Manipulation des partitions dans nosql