web-dev-qa-db-fra.com

Que signifie «orienté document» vs valeur-clé lorsque l'on parle de MongoDB vs Cassandra?

Que vous apporte une option NoSQL basée sur des documents dans un magasin KV et vice versa?

107
tesserakt

Un magasin de valeurs-clés fournit le modèle de données le plus simple possible et est exactement ce que son nom l'indique: c'est un système de stockage qui stocke les valeurs indexées par une clé. Vous êtes limité à la requête par clé et les valeurs sont opaques , le magasin ne sait pas n'importe quoi à leur sujet . Cela permet des opérations de lecture et d'écriture très rapides (un simple accès au disque) et je vois ce modèle comme une sorte de cache non volatile (c'est-à-dire bien adapté si vous avez besoin d'accéder rapidement par clé à des données à longue durée de vie).

Un base de données orientée document étend le modèle précédent et les valeurs sont stockées dans un format structuré (un document, d'où le nom) que la base de données peut comprendre. Par exemple, un document peut être un article de blog et les commentaires et les balises stockées de manière dénormalisée. Étant donné que les données sont transparentes , le magasin peut faire plus de travail (comme l'indexation des champs du document) et vous n'êtes pas limité à une requête par clé. Comme je l'ai laissé entendre, de telles bases de données permettent de récupérer les données d'une page entière avec une seule requête et sont bien adaptées aux applications orientées contenu (c'est pourquoi les grands sites comme Facebook ou Amazon les aiment).

Les autres types de bases de données NoSQL incluent magasins orientés colonnes, bases de données graphiques et même bases de données d'objets. Mais cela va au-delà de la question.

Voir également

129
Pascal Thivent

Eh bien, j'ai moi-même enquêté sur NoSQL le mois dernier. Je pense qu'on pourrait généralement dire quelque chose comme

  • Les magasins KV ne connaissent pas le contenu de la valeur réellement stockée pour une clé
  • Basé sur un document vous permet de définir des index secondaires dans le contenu de la valeur, car la base de données connaît la structure du document (par exemple, les balises d'un article de blog).
  • Les solutions NoSQL ont chacune des fonctionnalités spécifiques qui doivent être prises en considération, comme
    • Types de données spéciaux dans un magasin KV (par exemple, ensembles avec pop gauche/droite/Push comme dans redis)
    • cluster facile à monter/descendre comme riak le dit (je ne l'ai pas encore essayé ...)
    • magasin de données enfichable comme dans Voldemort
    • configuration Web intégrée et prise en charge des applications Web comme dans CouchDB/couchapp
16
Niels Wind

Une base de données orientée document, ou magasin de documents, sert au stockage, à la récupération et à la gestion d'informations orientées document, qui sont des données semi-structurées. Le magasin de valeurs-clés est hérité de la base de données orientée document. La différence réside dans la manière dont les données sont traitées; dans un magasin de valeurs-clés, les données sont considérées comme intrinsèquement opaques à la base de données, tandis qu'un système orienté document s'appuie sur la structure interne du document pour extraire les métadonnées que le moteur de base de données utilise pour une optimisation supplémentaire.

Si nous traitons de la différence entre MOngoDb et Cassandra. MongoDB agit un peu comme une base de données relationnelle. Son modèle de données se compose d'une base de données au niveau supérieur, puis de collections qui sont comme des tables dans MySQL (par exemple) et ensuite des documents qui sont contenus dans la collection, comme des lignes dans MySQL. Chaque document a un champ et une valeur où cela est similaire aux colonnes et valeurs de MySQL. Les champs peuvent être de simples clés/valeurs, par ex. {'name': 'David Mytton'} mais ils peuvent également contenir d'autres documents, par exemple {'nom': {'premier': David, 'dernier': 'Mytton'}}. Dans Cassandra sont appelés "colonnes" qui ne sont en réalité qu'une seule clé et une seule valeur. Par exemple {'clé': 'nom', 'valeur': 'David Mytton'}. Il y a aussi un champ d'horodatage destiné à la réplication interne et à la cohérence. La valeur peut être une valeur unique mais peut également contenir une autre "colonne". Ces colonnes existent ensuite au sein de familles de colonnes qui trient les données en fonction d'une valeur spécifique dans les colonnes, référencée par une clé .

Mais, au niveau supérieur, il y a un espace de clés, qui est similaire à la base de données MongoDB.

2
Big Data Guy