Je sais qu'il existe trois types différents et populaires de bases de données non SQL.
- Clé / valeur: Redis, Tokyo Cabinet, Memcached
- Colonne Famille: Cassandra, HBase
- Document: MongoDB, CouchDB
J'ai lu de longs blogs à ce sujet sans trop comprendre.
Je connais les bases de données relationnelles et je me familiarise avec les bases de données documentaires telles que MongoDB / CouchDB.
Quelqu'un pourrait-il me dire quelles sont les principales différences entre ceux-ci et les 2 premiers sur la liste?
Réponses:
Les principales différences sont le modèle de données et les capacités d'interrogation.
Magasins de valeurs clés
Le premier type est très simple et n'a probablement pas besoin d'explications supplémentaires.
Modèle de données: plus que des magasins de valeurs-clés
Bien qu'il y ait un débat sur le nom correct des bases de données telles que Cassandra, j'aimerais les appeler des magasins de familles de colonnes . Bien que les paires clé-valeur soient une partie essentielle de Cassandra, ce n'est pas limité à cela. Il vous permet d'imbriquer des paires clé-valeur, afin qu'une clé puisse faire référence à plusieurs paires sous-clé-valeur.
Cependant, vous ne pouvez pas imbriquer des paires clé-valeur indéfiniment. Vous êtes limité à trois niveaux (familles de colonnes) ou quatre niveaux d'imbrication (familles de super-colonnes). Dans le cas où le terme famille de colonnes ne sonne pas une cloche, voir le WTF est un article SuperColumn , c'est une bonne explication du modèle de données de Cassandra.
Les bases de données de documents , telles que CouchDB et MongoDB, stockent des documents entiers sous la forme d' objets JSON . Vous pouvez considérer ces objets comme des paires clé-valeur imbriquées. Contrairement à Cassandra, vous pouvez imbriquer des paires clé-valeur autant que vous le souhaitez. JSON prend également en charge les tableaux et comprend différents types de données, tels que les chaînes, les nombres et les valeurs booléennes.
Requête
Je pense que les magasins de familles de colonnes ne peuvent être interrogés que par clé ou en écrivant des fonctions de réduction de carte. Vous ne pouvez pas interroger les valeurs comme vous le feriez dans une base de données SQL. Si votre application a besoin de requêtes plus complexes, votre application devra créer et maintenir des index afin d'accéder aux données souhaitées.
Les bases de données de documents prennent également en charge les requêtes par clé et les fonctions de réduction de carte, mais vous permettent également d'effectuer des requêtes de base par valeur, telles que "Donnez-moi tous les utilisateurs avec plus de 10 messages". Les bases de données de documents sont ainsi plus flexibles.
la source
Ayende a donné une belle explication concernant la différence entre la base de données de valeurs clés et de documents:
la source