MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence entre les bases de données basées sur des documents et basées sur des clés/valeurs ?

Les principales différences sont le modèle de données et les capacités d'interrogation.

Magasins clé-valeur

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 magasins de famille de colonnes . Bien que les paires clé-valeur soient une partie essentielle de Cassandra, elles ne se limitent pas à cela. Il vous permet d'imbriquer des paires clé-valeur, de sorte qu'une clé peut faire référence à plusieurs paires sous-clé-valeur.

Cependant, vous ne pouvez pas imbriquer indéfiniment des paires clé-valeur. Vous êtes limité à trois niveaux (familles de colonnes) ou quatre niveaux d'imbrication (familles de super-colonnes). Au cas où le terme famille de colonnes ne vous dit rien, consultez l'article WTF est un SuperColumn, c'est une bonne explication du modèle de données de Cassandra.

Bases de données documentaires , tels 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 crois 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 documentaires 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 publications". Les bases de données documentaires sont ainsi plus flexibles.