Comment est orientée colonne NoSQL diffèrent orientée document?
Les trois types de bases de données NoSQL j'ai lu à ce sujet est la clé-valeur, orientée colonne, et orientée document.
Clé-valeur est assez simple - une clé avec une simple valeur.
J'ai vu des bases de données orientées document décrit comme comme clé-valeur, mais la valeur peut être une structure, comme un objet JSON. Chaque "document" peut avoir toutes, quelques unes ou aucune des mêmes touches que l'autre.
Orienté colonne semble être très bien comme document orienté dans le sens que vous ne spécifiez pas une structure.
Quelle est donc la différence entre ces deux, et pourquoi voudriez-vous utiliser un sur l'autre?
J'ai cherché spécifiquement à MongoDB et Cassandra. En gros, j'ai besoin d'une structure dynamique qui peut changer, mais pas d'incidence sur d'autres valeurs. En même temps j'ai besoin d'être en mesure de rechercher/filtrer les touches spécifiques et exécuter des rapports. Avec la PAC, l'AP est le plus important pour moi. Les données peuvent "éventuellement" être synchronisés sur les nœuds, juste aussi longtemps que il n'y a pas de conflit ou de perte de données. Chaque utilisateur aura son propre "table".
Vous devez vous connecter pour publier un commentaire.
Cassandra, chaque ligne (résolu que par une clé) contient un ou plusieurs "colonnes". Les colonnes sont eux-mêmes des paires clé-valeur. Les noms de colonne n'a pas besoin d'être prédéfini, c'est à dire la structure n'est pas fixe. Des colonnes d'une ligne sont stockées dans l'ordre de tri en fonction de leurs clés (noms).
Dans certains cas, vous pouvez avoir un très grand nombre de colonnes d'une ligne (par exemple, à un index pour permettre à certains types de requête). Cassandra peut manipulent de grandes structures efficacement, et vous pouvez récupérer des gammes spécifiques de colonnes.
Il est un autre niveau de la structure (pas si couramment utilisé) appelée super-colonnes, où une colonne contient des (sous -) colonnes.
Vous pouvez penser de l'ensemble de la structure imbriquée table de hachage/dictionnaire, avec 2 ou 3 niveaux de clé.
Normal de la colonne de la famille:
Super famille de colonne:
Il y a aussi de plus haut niveau des structures - des familles de la colonne et keyspaces - qui peut être utilisée pour diviser ou regrouper vos données.
Voir aussi cette Question: Cassandre: qu'est Ce qu'un subcolumn
Ou les données de la modélisation des liens à partir de http://wiki.apache.org/cassandra/ArticlesAndPresentations
Re: comparaison avec les bases de données orientées document - le dernier insérez l'ensemble des documents (généralement JSON), alors que dans Cassandra, vous pouvez répondre à des colonnes individuelles ou supercolumns, et de mettre à jour ces individuellement, c'est à dire qu'ils travaillent à différents niveaux de granularité. Chaque colonne a son propre horodatage/version (utilisé pour réconcilier les mises à jour à travers le cluster distribué).
Cassandra valeurs de la colonne sont quelques octets, mais peut être saisie sous la forme ASCII, UTF-8 de texte, des nombres, des dates, etc.
Bien sûr, vous pouvez utiliser Cassandra comme un document primitif magasin par insertion de colonnes contenant JSON - mais vous ne serait pas profiter de toutes les fonctionnalités d'un véritable orientée document store.
La principale différence est que le document magasins (par exemple, MongoDB et CouchDB) permettent arbitrairement complexes, c'est à dire des sous-documents dans les sous-documents, les listes de documents, etc. alors que la colonne de magasins (par exemple, Cassandra et HBase) ne permettent à un format fixe, par exemple stricte d'un niveau à un ou deux niveaux dictionnaires.
Dans "insertion", pour utiliser sgbdr mots, le Document de base est plus uniforme et rectiligne de l'avant. Notez que cassandra vous permettent d'assurer la cohérence avec la notion de quorum, mais qui ne s'applique pas à tous les systèmes en colonnes et qui réduisent les disponibilités. Sur une écriture-une fois /lire-souvent lourd système, allez à MongoDB. Considérer également si vous avez toujours l'intention de lire l'ensemble de la structure de l'objet. Un document basé sur le système est conçu pour renvoyer l'ensemble du document lorsque vous l'obtenez, et n'est pas très forte au retour des pièces de l'ensemble de la ligne.
La colonne à base de systèmes comme Cassandra est bien mieux que le document de base dans les "mises à jour". Vous pouvez modifier la valeur d'une colonne sans même la lecture de la ligne qui le contient. L'écriture n'a pas réellement besoin d'être fait sur le même serveur, une ligne peut être contenus sur de multiples fichiers de plusieurs serveurs. Sur l'énorme évolution rapide des données du système, rendez-vous pour Cassandra. Également considérer si vous envisagez d'avoir de très gros morceau de données par clé, et n'aurez pas besoin de tous les charger à chaque requête. Dans "sélectionner", Cassandra vous permet de charger uniquement les colonnes dont vous avez besoin.
Aussi considérer que Mongo DB est écrit en C++, et est à sa deuxième version majeure, tandis que Cassandra a besoin pour s'exécuter sur une machine virtuelle java, et son premier majeur de la version release candidate seulement depuis hier (mais 0.X versions tourné dans des productions de grande entreprise déjà).
D'autre part, Cassandra est conçu a été en partie fondée sur Amazon Dynamo, et il est construit au cœur d'une Haute Disponibilité de la solution, mais qui n'a rien à voir avec la colonne format. MongoDB échelles de trop, mais pas avec autant de tact que de Cassandra.