Neo4j ou GraphX / Giraph que choisir?
Tout juste de commencer mon excursion à graphique les méthodes de traitement et d'outils. Ce que nous faisons concrètement - compte certains critères comme le pagerank, le clustering coefficient, le nombre de triangle, de diamètre, de la connectivité, etc. Dans le passé, a été heureux avec Octave, mais quand nous avons commencé à travailler avec des graphiques d'avoir disons 10^9 nœuds/bords, nous avons collé.
Donc les solutions possibles peuvent être distribués nuage avec Hadoop/Giraph, Spark/GraphX, Neo4j au-dessus d'eux, etc.
Mais depuis que je suis un débutant, quelqu'un peut conseiller ce fait de le choisir? Je n'ai pas la différence lors de l'utilisation de Spark/GraphX et quand Neo4j? Maintenant je considère Spark/GraphX, car il ont plus de Python comme la syntaxe, tandis que neo4j est le propre Monogramme. La visualisation dans neo4j est cool, mais pas utile dans une telle échelle. Je ne comprends pas est-il une raison pour utiliser un niveau supplémentaire de logiciel (neo4j), ou simplement utiliser Spark/GraphX? Depuis que j'ai compris neo4j ne sera pas de sauver beaucoup de temps, comme si on travaillait avec de la pure hadoop vs Giraph ou GraphX ou de la Ruche.
Merci.
source d'informationauteur Roman
Vous devez vous connecter pour publier un commentaire.
Neo4J: C'est une base de données graphique qui aide à identifier les relations et les entités de données généralement à partir du disque. C'est la popularité et le choix est donné dans ce lien. Mais quand elle a besoin pour traiter de très grands ensembles de données et de traitement en temps réel afin de produire les résultats graphiques/représentation il a besoin à l'échelle horizontale. Dans ce cas, la combinaison de Neo4J avec Apache Spark sera donner d'importants avantages de performance d'une manière telle Étincelle se servir externe graphe de calcul de la solution.
Mazerunner est un système distribué graphe de plate-forme de traitement qui s'étend Neo4J. Il utilise message broker pour le processus de distribuer graphique des travaux de traitement de Apache Spark GraphX module.
GraphX: GraphX est un nouveau composant Spark pour les graphes et de graphes-calcul parallèle. À un niveau élevé, GraphX s'étend de l'Étincelle RDD par l'introduction d'un nouveau Graphique de l'abstraction: une multigraph avec des propriétés attachées à chaque sommet et le bord. Il prend en charge plusieurs algorithmes sur les graphes.
Conclusion:
Il est toujours recommandé d'utiliser la combinaison Hybride de Neo4j avec GraphX qu'ils ont à la fois plus facile à intégrer.
Pour le traitement en temps réel et le traitement de grands ensembles de données, l'utilisation neo4j avec GraphX.
Pour la simple persistance et de montrer la relation d'entité pour un simple affichage graphique, représentation, utilisation autonome neo4j.
GraphX est plus d'un traitement en temps réel de cadre pour les données qui peuvent être (et c'est mieux quand) représenté sous une forme graphique. Avec GraphX vous pouvez utiliser différents algorithmes qui nécessitent de grandes quantités de puissance de traitement (à la fois la RAM et le CPU), et avec neo4j vous pouvez (fiable) persistent et mise à jour des données. C'est ce que je te suggère.
Je sais pour sûr que @kennybastani a fait de très intéressants progrès dans ce domaine, vous pouvez prendre un coup d'oeil à son mazerunner solution. Il est également livré comme un docker de l'image, de sorte que vous pouvez pousser avec un bâton et de trouver par vous-même si vous l'aimez ou pas.
Neo4j: je n'ai pas utilisé, mais je pense qu'il n'a tout d'un graphe de calcul (comme le pagerank) sur une seule machine. Qui serait capable de gérer votre ensemble de données? Il peut dépendre de ce que l'ensemble de votre graphique s'inscrit dans la mémoire, et si non, quelle est l'efficience de ne traiter les données à partir du disque. Il peut atteindre les mêmes problèmes que vous avez rencontré avec Octave.
Étincelle GraphX: GraphX partitions de données de graphe (les sommets et arêtes) sur un cluster de machines. Cela vous donne évolutivité horizontale et le parallélisme de calcul. Certaines choses que vous voudrez à considérer: il a seulement un Scala API droit (il n'est pas Python encore). Il ne PageRank, le nombre de triangle, et les composants connectés, mais vous pouvez avoir à mettre en œuvre de clustering coefficient et le diamètre de vous-même en utilisant l'API graphique (pregel par exemple). Le guide de programmation a une liste d'algorithmes pris en charge: https://spark.apache.org/docs/latest/graphx-programming-guide.html