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:

  1. vertices/1 - gets data v(1)
  2. vertices/1/oute - gets out edges v(1)
  3. vertices/2 - knowing out edges tells other vertex retrieve
  4. vertices/3 - knowing out edges tells other vertex retrieve
  5. vertices/4 - knowing out edges tells other vertex retrieve
  6. vertices/2 - filtering need name property
  7. vertices/3 - filtering need name property
  8. vertices/4 - filtering need name property
  9. 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

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -