Hi,
The parallel Josh/Marko/Pieter thread got me thinking… So, given
ComplexType
Iterator<T> siblings(String label)
Iterator<T> children(String label)
…lets see how both structure and processor providers can influence each other
within the TP4 VM.
Lets take JanusGraph as the example structure.
JanusVertex implements ComplexType
Lets take Akka as the example processor. AkkaProcessor can document:
“If you want query routing functionality for your ComplexTypes, provide
an akka:location child reference.”
The JanusGraph team plans to provide AkkaProcessor support so they do as asked.
janusVertex.children(“akka:location”) => 127.0.2.2
This is the physical location of the vertex in JanusGraph’s underlying
Cassandra/HBase/etc. cluster. Now, an AkkaProviderStrategy can do the following:
g.V().has(’name’,’marko’).out(‘knows’).asMap()
==strategizesTo==>
g.V().has(’name’,’marko’).out(‘knows’).akka:route().asMap()
akka:route() is a provider-specific instruction that will look at the incoming
object, check to see if it has an akka:location child reference, if it does, it
will teleport the traverser to that machine for the final asMap() execution.
(i.e. data local query routing). Why pull a bunch of map data over the wire
when you can send the traverser to the hosting machine and populate the map
there.
——
We have always talked about providers being able to have custom instructions
(inserted via provider-specific strategies). What we haven’t discussed and what
I bring up here is the idea that providers can require/recommend/etc. that data
providers use certain reference types that they can capitalize on.
Thus, providers interact with other providers within the TP4 VM via:
1. Custom bytecode instructions (process interaction).
2. Custom type references (structure interaction).
Bye,
Marko.
http://rredux.com <http://rredux.com/>