Thanks a lot guys for quick and comprehensive answers! I was assuming that Gremlin serves only for Pipes assembly which shouldn't impact the overall performance too much. We've 'hit the ceiling' with implementing various custom traversals with native neo4j APIs - the algorithms are quite lengthy and thus quite hard to maintain and tune. We are hoping that Gremlin (+Groovy) expressiveness could make things easier, even if in exchange for a little performance. The numbers you Marko provided are promising!
Will give Gremlin a shot and report back some real numbers. Thanks a lot! Cheers! Josef. On sobota, 23. Ĩervence 2011 at 17:25, Marko Rodriguez wrote: > Hi, > > Finally, one point to add. > > If I only need to do a ShorestPath over a particular edge type or a "find all > paths" between two vertices and I'm using Neo4j as the graph backend, then I > will drop down and use Neo4j's Algo library. This is because their > ShorestPath implementation is bi-directional (efficient) and I would have to > write that in Gremlin as Gremlin doesn't provide "out of the box" textbook > algorithm support. > > TinkerPop plans an algo library for standard graph algorithms whose paths are > defined by Pipes/Gremlin, but as of yet, it doesn't exist. > See http://markorodriguez.com/2011/02/08/property-graph-algorithms/ > > Thanks, > Marko. > > http://markorodriguez.com > > On Jul 23, 2011, at 9:16 AM, Marko Rodriguez wrote: > > > Hey, > > > > Groovy is only used to compile a statement like "g.v(1).out.in.blah" to a > > Pipes which is native Java. As such, once the compilation is complete > > (milliseconds), it is simply native Java (This is not completely true as > > there are some Gremlin specific pipes). Next, for the relationship between > > Blueprints Neo4jGraph and native EmbeddedGraphDatabase, see this from some > > time ago: > > > > http://groups.google.com/group/gremlin-users/msg/c94dfef8352f68d3 > > > > In short, traversing 29.6 million things took: > > 5.6 seconds via EmbeddedGraphDatabase > > 6.0 seconds via Neo4jGraph > > > > ** As a side, the same experiment was run for OrientDB with a 7.2 (native > > OrientDB) vs. 7.9 (Blueprints OrientGraph). > > http://groups.google.com/group/gremlin-users/msg/ff5c03e188efcffe > > > > There is more discussion in that particular thread if you are interested. > > > > Finally, with respect to production, I have many clients that use Gremlin > > in production. Here are the benefits of do so: > > 1. Traversal descriptions are concise and expressive. > > - any arbitrary graph computation can be represented and evaluated. > > - in language theoretic terms, it can recognize Turing complete paths. > > 2. Traversal descriptions can be expressed as classes in Groovy and thus, > > IDE friendly. > > - syntax highlighting, easy to write test cases/debug, etc. > > - See slides 234 and 235 from > > http://www.slideshare.net/slidarko/the-pathology-of-graph-databases > > > > Thanks, > > Marko. > > > > http://markorodriguez.com > > > > On Jul 23, 2011, at 2:30 AM, Michael Hunger wrote: > > > > > If you look at the comments of the post - > > > > > > groovy is only that slow if you implement all the algorithm details in > > > groovy ! > > > > > > Gremlin uses blueprints which is written in Java. Gremlin is just a DSL > > > on top of that API so it is just used for the construction of the > > > underlying pipeline. > > > > > > Anyway, easiest way to see if that holds true is to write a PoC for > > > _your_ domain, I think general > > > statements are difficult. > > > > > > But probably Marko has some nice performance benchmarks at hand. > > > > > > Michael > > > > > > Am 23.07.2011 um 09:51 schrieb Josef Holy: > > > > > > > Hi all, > > > > > > > > has someone on this list any practical experience with using Gremlin > > > > for traversing the EmbeddedGraphDatabase in a production environment? > > > > What interests me is how it performs compared to the traversal > > > > algorithms written directly against Neo4j APIs (using Traverser, > > > > TraversalDescription, ..etc). > > > > > > > > As Gremlin runs on top of Groovy + Pipes + Blueprints, I would expect > > > > it to be much slower than pure Neo4j Java APIs (but really SO much > > > > slower? > > > > http://stronglytypedblog.blogspot.com/2009/07/java-vs-scala-vs-groovy-performance.html > > > > ) . > > > > > > > > > > > > Thanks for any comments/experiences! > > > > > > > > > > > > Josef. > > > > > > > > _______________________________________________ > > > > Neo4j mailing list > > > > [email protected] > > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > > _______________________________________________ > > > Neo4j mailing list > > > [email protected] > > > https://lists.neo4j.org/mailman/listinfo/user > > _______________________________________________ > Neo4j mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user > _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

