117 votes

Neo4j - Langage d'interrogation Cypher vs Gremlin

Je commence à développer avec Neo4j à l'aide de l'API REST. J'ai vu qu'il y a deux options pour effectuer des requêtes complexes - Cypher (Neo4j le langage de requête) et Gremlin (l'objectif général graphe requête/traversée de la langue).

Voici ce que je veux savoir est-il de la requête ou de l'exploitation qui peut être fait en utilisant Gremlin et ne peut être fait avec Cypher? ou vice-versa?

Monogramme semble beaucoup plus clair pour moi que Gremlin, et en général, il semble que les gars de Neo4j vont avec Monogramme. Mais si le Chiffre est faible comparé à Gremlin, je voudrais vraiment savoir à l'avance.

95voto

ulkas Points 1952

Pour le général de l'interrogation, le Chiffre est assez et est probablement plus rapide. L'avantage de Gremlin sur Cypher est quand vous êtes dans le niveau élevé de la traversée en Gremlin, vous pouvez mieux définir exactement la traversée de modèle (ou de vos propres algorithmes), tandis que dans Cypher le moteur essaye de trouver la meilleure traversée de la solution elle-même.

Personnellement, j'utilise Monogramme en raison de sa simplicité et à ce jour je n'ai pas eu toutes les situations où j'ai eu à utiliser Gremlin (à l'exception de travail avec Gremlin graphML d'importation/d'exportation). Je pense, cependant, que même si j'aurais besoin d'utiliser Gremlin, je le ferais pour une requête spécifique, je trouve sur le net et ne plus revenir à nouveau.

Vous pouvez toujours en apprendre Monogramme très vite (en jours) et que de continuer avec le (long terme) général Gremlin.

51voto

Heinrich Points 181

Nous avons à parcourir des milliers de nœuds dans nos requêtes. Cypher a été lente. Neo4j équipe nous a dit que la mise en œuvre de notre algorithme directement à l'encontre de l'API Java serait de 100 à 200 fois plus rapide. Nous l'avons fait et obtenu facilement facteur 60. À compter de maintenant, nous n'avons pas le seul Chiffre de la requête dans notre système, en raison d'un manque de confiance. Facile Monogramme requêtes sont faciles à écrire en Java, les requêtes complexes, de ne pas accomplir. Le problème, c'est quand vous avez plusieurs conditions dans votre requête, il n'existe aucun moyen de Monogramme à dire l'ordre dans lequel effectuer les traversals. Si votre monogramme requête peut aller sauvages dans le graphique dans une mauvaise direction, d'abord. Je n'ai pas fait beaucoup avec Gremlin, mais je ne pouvais imaginer que vous obtenez beaucoup plus de contrôle de l'exécution avec Gremlin.

28voto

Matt Luongo Points 4671

Le Neo4j équipe sur le Chiffre ont été vraiment impressionnant, et il est venu un long chemin. Le Néo équipe généralement pousse les gens vers elle, et comme Cypher mûrit, Gremlin sera probablement moins d'attention. Cypher est un choix adéquat à long terme.

Que dit - Gremlin est un Groovy DSL. L'aide par l'intermédiaire de son Neo4j le point de terminaison REST permet complet, un accès sans entrave à la sous-jacentes Neo4j API Java. Il (et d'autres script plugins dans la même catégorie) ne peut pas être égalé en termes de faible niveau de puissance. De Plus, vous pouvez exécuter le Monogramme de l'intérieur le Gremlin plugin.

De toute façon, il n'y a qu'une saine chemin de mise à niveau lorsque vous apprendrez à la fois. J'irais avec celui qui vous reçoit et en cours d'exécution plus rapide. Dans mes projets, j'utilise généralement Gremlin et ensuite appeler le Chiffre (de l'intérieur Gremlin ou pas) quand j'ai besoin de résultats sous forme de tableau ou expressive pattern matching - les deux sont une douleur dans le Gremlin DSL.

20voto

J'ai d'abord commencé à l'aide de Gremlin. Cependant, à l'époque, le RESTE de l'interface est un peu instable, donc je suis passé à les Chiffrer. Il a beaucoup plus de soutien pour Neo4j. Cependant, il existe certains types de requêtes qui sont tout simplement pas possible avec Monogramme, ou lorsque le Chiffre ne peut pas tout à fait d'optimiser la façon dont vous pouvez le faire avec Gremlin.

Gremlin est construit sur Groovy, donc vous pouvez l'utiliser comme une méthode générique permettant d'obtenir Neo4j pour exécuter 'Java' code et d'effectuer différentes tâches à partir du serveur, sans avoir à prendre le HTTP frappé par le RESTE de l'interface. Entre autres, Gremlin va vous permettre de modifier les données.

Cependant, quand tout ce que je veux, c'est les données de la requête, je aller avec Monogramme que c'est plus lisible et plus facile à maintenir. Gremlin est le secours lorsqu'une limite est atteinte.

11voto

Tohotom Points 51

Les requêtes Gremlin peuvent être générées par programme. (Voir http://docs.sqlalchemy.org/fr/rel_0_7/core/tutorial.html#intro-to-generative-selects pour savoir ce que je veux dire.) Cela semble être un peu plus délicat avec Cypher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X