gremlin - Why RexsterGraph is not meant for high-performing graph traversals? -
why rexstergraph in blueprint stack not meant high-performing graph traversals:
https://github.com/tinkerpop/blueprints/wiki/rexster-implementation
what limitations? , should fallback on executing gremlin throw simple string evaluated?
rexstergraph
uses rexster rest api restful representation of blueprints api. such, each blueprints method called in rexstergraph
translates http call.
here's example of why that's bad "high performance traversals". using toy graph, example. let's want simple rexstergraph
like: g.v(1).out.filter{it.name=='josh'}.name
. translate following http calls:
- vertices/1 - gets data
v(1)
- vertices/1/oute - gets out edges
v(1)
- vertices/2 - knowing out edges tells other vertex retrieve
- vertices/3 - knowing out edges tells other vertex retrieve
- vertices/4 - knowing out edges tells other vertex retrieve
- vertices/2 - filtering need name property
- vertices/3 - filtering need name property
- vertices/4 - filtering need name property
- vertices/4 - down "josh" name property
as can see, it's not efficient. one-to-one mapping of blueprints api rexster rest api. that's it. made more efficient? probably...we might consider caching property values or something, still chatty "high performance traversal". other problems trying make more efficient dealing mechanisms serializing closures can executed on server.
in end, decided long time ago not approach , started recommend against using rexstergraph
in favor of server-side dsls , rexpro/rest gremlin extension.
Comments
Post a Comment