Table des matières:
Vidéo: MongoDB : la base NoSQL qui réinvente la gestion de données - David Wursteisen 2024
Une fois que vous avez géré les clés de manière appropriée, vous êtes prêt à concevoir la manière de stocker des données avec NoSQL et de vous assurer qu'elles sont sûres et toujours accessibles pour le travail. Tu as besoin de faire.
Types de données dans les magasins de valeurs-clés
Les magasins de valeurs-clés agissent généralement comme & ldquo; seaux & rdquo; pour les données binaires. Certaines bases de données fournissent une forte dactylographie interne et même un support de schéma. D'autres fournissent simplement des fonctions auxiliaires pratiques dans leurs pilotes clients pour sérialiser des structures de données d'application courantes dans un magasin de valeurs-clés. Les exemples incluent des cartes, des listes et des ensembles triés.
Oracle NoSQL peut fonctionner en deux modes:
-
Stockage binaire simple
-
Support de schéma Avro hautement structuré
Un schéma Avro s'apparente à un schéma de base de données relationnelle - appliquant un ensemble très strict des règles de formatage sur les données JSON (JavaScript Object Notation) stockées dans la base de données, comme illustré ici:
{nom d'utilisateur: & ldquo; afowler & rdquo;, sessionid: 13452673, depuis: 1408318745, thème: & ldquo; bluesky & rdqu;;
Vous définissez un schéma Avro à l'aide d'un document JSON. Ceci est un exemple du schéma Avro pour les données stockées montrées précédemment:
{& ldquo; tapez & rdquo;: & ldquo; enregistrer & rdquo;, & ldquo; namespace & rdquo;: & ldquo; com. exemple & rdquo;, & ldquo; nom & rdquo;: & ldquo; UserSession & rdquo;, & ldquo; champs & rdquo;: [{& ldquo; nom & rdquo;: & ldquo; nom d'utilisateur & rdquo;, & ldquo; tapez & rdquo;: [& ldquo; chaîne & rdquo;, & quot; null & rdquo;]}, {& ldquo; nom & rdquo;: & ldquo; sessionid & rdquo;, & ldquo; tapez & rdquo;: & ldquo; int & rdquo;}, {& ldquo; nom & rdquo;: & ldquo; depuis & rdquo;, & ldquo; tapez & rdquo;: & ldquo; long & rdquo;}, {& ldquo; nom & rdquo;: & ldquo; thème & rdquo;, & ldquo; tapez & rdquo;: [& ldquo; chaîne & rdquo;, & quot; null & rdquo;]}]}
Un schéma Avro fournit un typage très fort dans la base de données lorsque le schéma est important. Dans l'exemple précédent, vous voyez des données de chaîne, un ID de session numérique, une date (en millisecondes, depuis l'Epoque Unix, en tant qu'entier long) et un paramètre de personnalisation pour le thème à utiliser sur le site Web.
Notez également que le type de nom d'utilisateur et le thème a deux options - chaîne et null, qui est comment vous instruire Oracle NoSQL que les valeurs nulles sont autorisés. Vous pourriez avoir quitté le thème en tant que chaîne et fourni un paramètre de configuration supplémentaire de & ldquo; par défaut & rdquo;: & ldquo; bluesky & rdquo;.
D'autres bases de données NoSQL fournissent des index secondaires sur toute propriété arbitraire d'une valeur ayant un contenu JSON. Riak, par exemple, fournit des index secondaires basés sur le partitionnement de documents. En gros, une propriété connue dans un document JSON est indexée avec un type.Ceci permet des requêtes de plage (inférieures ou supérieures à) en plus de simples comparaisons égales et non égales. Riak parvient à fournir des requêtes de plage sans schéma rigoureux - juste une définition d'index simple. Si les données sont là, elles sont ajoutées à l'index.
Réplication des données
Le stockage de plusieurs copies des mêmes données sur d'autres serveurs, ou même sur des racks de serveurs, permet de garantir la disponibilité des données en cas de défaillance d'un serveur. L'échec du serveur se produit principalement dans le même cluster.
Vous pouvez utiliser les répliques de deux façons:
- Maître-esclave: Toutes les lectures et écritures arrivent au maître. Les esclaves prennent le relais et reçoivent des demandes seulement si le maître échoue.
La réplication maître-esclave est généralement utilisée dans les magasins de valeurs-clés conformes à l'ACID. Pour activer la cohérence maximale, le magasin principal est écrit et tous les réplicas sont mis à jour avant la fin de la transaction. Ce mécanisme est appelé validation en deux phases et crée un temps réseau et de traitement supplémentaire sur les réplicas.
- Maître-maître: Les lectures et écritures peuvent se produire sur tous les nœuds gérant une clé. Il n'y a pas de concept d'un & ldquo; primaire & rdquo; propriétaire de partition.
Les répliques maître-maître sont généralement cohérentes, le cluster effectuant une opération automatique pour déterminer la dernière valeur d'une clé et supprimer les anciennes valeurs périmées.
Dans la plupart des magasins de valeurs-clés, cela se fait lentement - au moment de la lecture. Riak est l'exception ici car il a un service anti-entropie vérifiant la cohérence pendant les opérations normales.
Données de version
Pour activer la résolution automatique des conflits, vous avez besoin d'un mécanisme pour indiquer la dernière version des données. Par la suite, les magasins de valeurs-clés cohérents parviennent à résoudre les conflits de différentes manières.
Riak utilise un mécanisme d'horloge vectorielle pour prédire quelle copie est la plus récente. D'autres magasins de valeurs-clés utilisent des horodatages simples pour indiquer la persistance. Lorsque les conflits ne peuvent pas être résolus automatiquement, les deux copies de données sont envoyées au client. Les données conflictuelles envoyées au client peuvent apparaître dans la situation suivante:
-
Le client 1 écrit dans la réplique A 'Adam: {likes: Cheese}'.
-
Le réplica A copie les données dans la réplique B.
-
Le client 1 met à jour les données de la réplique A vers 'Adam: {likes: Cheese, hates: sunlight}'.
À ce stade, la réplique A n'a pas assez de temps pour copier les dernières données dans la réplique B.
-
Le client 2 met à jour les données de la réplique B vers 'Adam: {aime: chiens, déteste: kangourous}'.
À ce stade, la réplique A et la réplique B sont en conflit et le cluster de base de données ne peut pas résoudre automatiquement les différences.
Un autre mécanisme consiste à utiliser des horodatages et à leur faire confiance pour indiquer les dernières données. Dans une telle situation, il est logique que l'application vérifie que les horodatages lisent la dernière valeur avant de mettre à jour la valeur.
Ils vérifient la vérification et définissent le mécanisme, ce qui signifie 'Si la dernière version est encore la version 2, alors sauvegardez ma version 3'. Ce mécanisme est parfois appelé read match update (RMU) ou read match write (RMW). Ce mécanisme est le mécanisme par défaut employé par Oracle NoSQL, Redis, Riak et Voldemort.