Gestion des données NoSQL

Une fois que vous gérez les clés de manière appropriée, vous êtes prêt à concevoir comment stocker des données avec NoSQL et assurez-vous qu'il est sûr et toujours accessible pour le travail que vous devez faire.

Sommaire

Les types de données dans les magasins clé-valeur

Magasins clé-valeur agissent généralement comme des "seaux" pour les données binaires. Certaines bases de données fournissent typage fort de données interne et même le soutien de schéma. D'autres se contentent de fournir des fonctions d'aide pratique dans leurs pilotes clients de sérialisation structures de données d'application commune à un magasin clé-valeur. Les exemples incluent des cartes, des listes et des ensembles triés.

Oracle NoSQL peut fonctionner en deux modes:

  • Magasin binaire simple

  • Le soutien de schéma Avro très structuré

Un schéma Avro est semblable à un schéma de base de données relationnelle - application d'un ensemble très strict des règles de format sur javascript Object Notation (JSON) des données stockées dans la base de données, comme illustré ici:

{username: "afowler", sessionid: 13452673, depuis: 1408318745, thème: «bluesky»} 

Vous définissez un schéma Avro aide d'un document JSON. Ceci est un exemple du schéma Avro pour les données stockées précédemment indiquées:




{"type": "record", "espace de noms": "com.example", "name": "UserSession", "champs": [{"name": "username", "type": ["string", "null"]}, {"name": ", tapez" "sessionid": "int"}, {"name": "depuis", "type": "long"}, {"name": "thème" , "type": ["string", "null"]}]} 

Un schéma Avro fournit très typage fort dans la base de données lorsque le schéma est important. Dans l'exemple précédent, vous voyez les données de chaîne, un identifiant de session numérique, une date (millisecondes, depuis l'époque de temps Unix, comme un entier long), et en définissant une personnalisation pour le thème à utiliser sur le site.

Notez également que le type de nom d'utilisateur et le thème a deux options - la ficelle et null, ce qui est de savoir comment vous demandez Oracle NoSQL que les valeurs NULL sont autorisées. Vous auriez pu laissé thème comme une chaîne et fourni un paramètre de configuration supplémentaire de "défaut": "bluesky".

Bases de données NoSQL fournissent d'autres indices secondaires sur toute propriété arbitraire d'une valeur qui a un contenu JSON. Riak, par exemple, fournit des index secondaires sur la base de document de partitionnement - Fondamentalement, une propriété connue dans un document JSON est indexé avec un type. Cela permet pour les requêtes de gamme (inférieures ou supérieures), en plus de comparaisons égales égaux et pas simple. Riak parvient à fournir les requêtes de plages sans un schéma rigoureux - il suffit de définition d'index simple. Si les données sont là, il est ajouté à l'index.

Réplication de données

Stockage de plusieurs copies des mêmes données dans d'autres serveurs, ou même des racks de serveurs, aide à assurer la disponibilité des données en cas de défaillance d'un serveur. Défaillance du serveur se produit essentiellement dans le même cluster.

Vous pouvez utiliser des répliques de deux façons principales:

  • Maître d'esclave: Toutes les lectures et les écritures se produise au maître. Esclaves prennent le dessus et reçoivent des demandes que si le maître est en panne.

Réplication maître-esclave est généralement utilisé sur les magasins clé-valeur acide conforme. Pour permettre un maximum de cohérence, la boutique principale est écrite et toutes les répliques sont mis à jour avant de la transaction. Ce mécanisme est appelé un commit à deux phases et crée un réseau supplémentaire et le temps de traitement sur les répliques.

  • Maître-maître: Lit et écrit peuvent se produire sur tous les nœuds qui gèrent une clé. Il ya pas de concept d'un propriétaire de partition "primaire".

Maître-maître répliques sont généralement finalement cohérente, avec le pôle de l'exécution d'une opération automatique pour déterminer la dernière valeur d'une clé, et la suppression des valeurs périmées âgées.

Dans la plupart des magasins clé-valeur, cela se produit lentement - au moment de la lecture. Riak est l'exception ici parce qu'il a un contrôle de cohérence pendant les opérations normales de service anti-entropie.

    Versioning des données

    Afin de permettre la résolution des conflits automatique, vous avez besoin d'un mécanisme pour indiquer la dernière version des données. Finalement magasins clé-valeur cohérentes atteindre la résolution des conflits de différentes manières.

    Riak utilise un mécanisme d'horloge vecteur de prédire qui est la copie la plus récente. Autres magasins clé-valeur utilisent horodateurs simples pour indiquer le manque de fraîcheur. Lorsque les conflits ne peuvent être résolus automatiquement, les deux copies des données sont envoyées au client. Des données contradictoires envoyés au client peuvent se produire dans la situation suivante:

    1. Client 1 écrit réplique Une Adam: {aime: Cheese} '.

    2. Une réplique copie des données vers la réplique B.

    3. Les données mises à jour sur le client 1 réplique à A Adam: {aime: fromage, déteste: la lumière du soleil} '.

      À ce stade, réplique A n'a pas assez de temps pour copier les données les plus récentes à réplique B.

    4. Client 2 mises à jour des données sur réplique à B Adam: {aime: Chiens, déteste: kangourous} '.

      À ce stade, réplique Une réplique et B sont en conflit et le cluster de bases de données ne peuvent pas résoudre automatiquement les différences.

    Un mécanisme alternative est d'utiliser les timbres de temps et de leur faire confiance pour indiquer les données les plus récentes. Dans une telle situation, il est de bon sens pour l'application pour vérifier que les timbres de temps de lecture de la dernière valeur avant la mise à jour de la valeur.

    Ils vérifient pour la vérifier et définir mécanisme, ce qui signifie fondamentalement 'Si la dernière version est toujours la version 2, puis enregistrer ma version 3'. Ce mécanisme est parfois appelée lire la mise à jour du match (RMU) ou lire correspondance écriture (RMW). Ce mécanisme est le mécanisme par défaut utilisé par Oracle NoSQL, Redis, Riak, et Voldemort.