Comment décider quelle technologie NoSQL à utiliser?
-
03-10-2019 - |
Question
Qu'est-ce que les avantages et les inconvénients de MongoDB (document basé), HBase (en colonnes) et Neo4j (objets graphique)?
Je suis particulièrement intéressé de connaître quelques-uns des cas typiques d'utilisation pour chacun d'eux.
Quels sont les bons exemples de problèmes graphiques peuvent résoudre mieux que l'alternative?
Peut-être une présentation digne Slideshare ou Scribd?
La solution
MongoDB
Évolutivité: très disponible et cohérente, mais à des relations et aspire de nombreuses écritures distribuées. Il est principal avantage est le stockage et l'indexation des documents sans schéma. Taille du document est plafonnée à 4 Mo et l'indexation n'a de sens que pour la profondeur limitée. Voir http://www.paperplanes.de/2010/2/25/notes_on_mongodb. html
Convient à la: Structures arborescentes avec profondeur limitée
Cas d'utilisation: Type Divers Hiérarchies, Systématique biologique, catalogues de bibliothèques
Neo4j
Évolutivité: Très disponible mais non distribués. Puissant cadre de traversée pour des traversées à grande vitesse dans l'espace de noeud. Limité à des graphiques autour de plusieurs milliards de noeuds / relations. Voir http://highscalability.com/neo4j-graph-database-kicks-buttox
Le mieux adapté pour: graphiques profonds avec la profondeur illimitée et connexions cycliques, pondérés
Cas d'utilisation: Réseaux sociaux, analyse topologiques, données Web sémantique, Inférence
HBase
Évolutivité: Stockage fiable, conformément aux pétaoctets et au-delà. Prise en charge des très grands nombres d'objets avec un nombre limité d'attributs rares. Travaux en tandem avec Hadoop pour les gros travaux de traitement des données. http://www.ibm.com/developerworks/opensource/library /os-hbase/index.html
Convient à la: réalisé, graphiques acyclique
Cas d'utilisation: Analyse Log, données Web sémantique, l'apprentissage machine
Autres conseils
Je sais que cela peut sembler un endroit étrange pour pointer vers mais, Heroku a récemment fait les noix avec leurs offres NoSQL et ont une vue d'ensemble OK de la plupart des projets en cours. Il est en aucun cas une presse Slideshare, mais il vous aidera à démarrer le processus de comparaison:
Commander ce au regard de la comparaison de NoSQL Dbs:
Vous pouvez également évaluer un Multi-modèle SGBD, comme la deuxième génération de produits NoSQL. Avec un multi-modèle vous n'avez pas tous les compromis sur le choix d'un seul modèle, mais plus d'un modèle.
Le premier multi-modèle NoSQL est OrientDB .
MongoDB:
MongoDB est la base de données de documents contrairement à la base de données relationnelle. Le document stocke des données semi-structurées comme objet JSON (schéma libre)
Caractéristiques principales:
- schéma peut changer sur l'évolution de l'application
- L'indexation
- L'équilibrage de charge et de données sharding
- réplication de données
- Cohérence et Cloisonnement en théorie CAP (Cohérence-disponibilité-Partitioning)
Quand utiliser:
- Analyse en temps réel
- exploitation forestière à grande vitesse
- Gestion de données semi-structurées
Quand ne pas utiliser:
- Applications hautement transactionnelles avec de fortes propriétés ACID (atomicité, cohérence, isolation et durabilité). SGBDR est préférable dans ce cas d'utilisation.
- Fonctionnement sur des ensembles de données portant sur les relations - clés étrangères etc
Hbase:
HBase est une open source, base de données de famille colonne non-relationnelle, distribuée
Caractéristiques principales:
- Il est un moyen tolérant aux pannes de stocker de grandes quantités de données rares (petites quantités d'informations capturées dans une grande collection de données vides ou peu importantes, telles que la recherche les 50 plus grands éléments dans un groupe de 2 milliards d'enregistrements, ou de trouver les éléments non nuls qui représentent moins de 0,1% d'une vaste collection)
- Supports schéma variables où chaque rangée est différent
- peut servir de l'entrée et de sortie pour le travail MapReduce
- Compression, opération en mémoire, et des filtres de Bloom sur une base par colonne (une structure de données destinée à vous dire, rapidement et efficacement en mémoire, si un élément est présent dans un ensemble) 5.Achieve CP sur la PAC
Quand utiliser HBase:
- Si vous chargement des données par clé, recherche de données par clé (ou la plage), au service des données par clé, l'interrogation des données par clé
- Le stockage des données par ligne qui ne se conforme pas bien à un schéma (schéma variable)
Quand ne pas utiliser HBase:
- Pour l'analyse relationnelle
- scans de table complets
- Les données sont agrégées, analysées par des lignes au lieu de colonnes
Neo4j:
Neo4j est la base de données de graphique à l'aide du modèle de données Graphique propriété (Les données sont stockées sous forme de graphique et les nœuds et les relations avec les propriétés)
Caractéristiques principales:
- Prise en charge complète ACID (atomicité, cohérence, isolation et durabilité) les règles
- supporte les index en utilisant Apache Lucence
- Schéma libre, bottom-up conception du modèle de données
- Haute évolutivité a été atteint grâce à un stockage compact et la mémoire cache disponible pour les graphiques
Quand utiliser:
- Master gestion des données
- Réseau et opérations informatiques
- des recommandations en temps réel
- la détection des fraudes
- Réseau social (comme Facebook)
Quand ne pas utiliser:
- En vrac requêtes / Scans
- Si votre application nécessite Cloisonnement et Sharding de données
Jetez un oeil à la comparaison des différentes technologies NoSQL dans ce article
Sources:
Wiki, Faites glisser part, Cloudera , Tutoriels point , Neo4j
Joli article décent ici MongoDB et NORM (.net extensions pour MongoDB) http://lukencode.com/2010/07 / 09 / getting-started-avec-MongoDB et-norme /