Hi,

I want to add on to Stephen's notes by saying that providers that want to 
support remote traversals can do so WITHOUT being required to use 
GremlinServer. For instance, "advanced providers" like OrientDB and Neo4j, who 
already have their own full fledge server systems, can support binary traversal 
submissions by simply implementing RemoteConnection.

        
http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/dev/provider/#remoteconnection-implementations

This idea came from Matthias Bröcheler. His point was that RemoteGraph is a 
great idea, but forcing vendors to package or support GremlinServer might be 
too much to ask. With this, Stephen made it so providers can still support 
RemoteGraph separate from Gremlin Server. In essence, "advanced providers" can 
be TinkerPop-enabled by:

        1. Implementing TinkerPop Graph API.
        2. Their server implementing/exposing RemoteConnection.

This asks a lot less of the provider as they can easily add TinkerPop support 
without having to redefine how their system is deployed for TinkerPop (…that 
is, they don't need to go into the world of Gremlin Server deployments if they 
don't want to).  However, for providers that DO NOT have a server model ("not 
advanced providers" -- bad terminology), they can still be on par with the 
others because GremlinServer provides all the great server functionality of 
binary protocol, query routing, metrics, admin tools, and the like. A win-win 
for all providers regardless of their level of "advancement" (again, bad 
terminology).

Thanks,
Marko.

http://markorodriguez.com

On Mar 18, 2016, at 7:32 AM, Stephen Mallette <spmalle...@gmail.com> wrote:

> Check out this new RemoteGraph business for 3.2.0...
> 
> gremlin> graph = RemoteGraph.open('conf/remote-graph.properties')
> ==>remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph=graph]]
> gremlin> g = graph.traversal()
> ==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/127.0.0.1:8182
>  [graph=graph]], standard]
> gremlin> g.V().valueMap(true)
> ==>[label:person, name:[marko], id:1, age:[29]]
> ==>[label:person, name:[vadas], id:2, age:[27]]
> ==>[label:software, name:[lop], id:3, lang:[java]]
> ==>[label:person, name:[josh], id:4, age:[32]]
> ==>[label:software, name:[ripple], id:5, lang:[java]]
> ==>[label:person, name:[peter], id:6, age:[35]]
> 
> So what's happening here? RemoteGraph is a lightweight proxy Graph 
> implementation. Traversals generated from this Graph are automatically 
> serialized and sent to a "remote" - in this case Gremlin Server - where it 
> can be executed and results returned. With this model we say good-bye to 
> doing long strings of gremlin embedded in our code and submitted through the 
> driver and we can just write gremlin directly in the IDE.
> 
> Some limitations you will encounter right out of the gate:
> 
> * RemoteGraph is not a full Graph implementation. you use it to call 
> graph.traversal() and that's about it
> * It does not support lambdas as they are not serializable, but you likely 
> shouldn't be using lambdas anyway in your gremlin so hopefully that's not too 
> big a problem.
> 
> We have lots of room for improvement on this work, but this is a good 
> functional beginning. Let the feedback begin.
> 
> Enjoy!
> 
> Stephen
> 
> 
> 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Gremlin-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to gremlin-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/gremlin-users/CAA-H43-EXuqdzO7L45xUV4cF%2BLZcmuCjH4-ghtRuLTS-LYkvRA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

  • RemoteGraph Stephen Mallette
    • Re: [TinkerPop] RemoteGraph Marko Rodriguez

Reply via email to