Hi,

To add on to Stephen's email. If you tell me what sort of optimizations Bitsy, 
I can help you write respective TraversalStrategies. For instance, index 
lookup, vertex-centric indices, embarrassingly parallel execution, etc.

Here are a few links about TraversalStrategies.

        
http://tinkerpop.apache.org/docs/3.1.1-SNAPSHOT/reference/#traversalstrategy
        http://tinkerpop.apache.org/docs/3.1.1-SNAPSHOT/reference/#explain-step
        
https://github.com/apache/incubator-tinkerpop/blob/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java#L73-L75

HTH,
Marko.

http://markorodriguez.com

On Feb 3, 2016, at 4:53 AM, Stephen Mallette <spmalle...@gmail.com> wrote:

> Hey Sridhar - nice to see you on the list.
> 
> I am trying to port Bitsy graph DB from TP2 to TP3. I have a few questions
>> on TP3:
>> 
> 
> sweet - if you haven't read this section of the docs yet, you probably
> should give it a review:
> 
> http://tinkerpop.apache.org/docs/3.1.0-incubating/#implementations
> 
> 
>> 1. Is this mailing list searchable? I don't want to ask questions that have
>> already been answered.
>> 
> 
> your best shot of searching is here -
> https://pony-poc.apache.org/list.html?d...@tinkerpop.apache.org
> 
> 
>> 2. Is there any implementation that was ported from TP2 to TP3? I see many
>> total rewrites, but I'm looking to see diffs across classes.
>> 
> 
> They are basically re-writes - as the API is fairly different. I'd say
> Titan was the most resilient to the API implementation.  There was lots of
> renaming and moving things about, but no one re-wrote Titan from scratch.
> 
> 
>> 2b. Is there any example of an app that was ported from TP2 to TP3? If this
>> process is hard, I'm thinking of launching the TP3 port as a separate
>> project.
>> 
> 
> No examples that I know of.  Note that TinkerPop3 launched as a new and
> separate project.  That might be easiest, but I'm not sure how bitsy is
> setup from an abstraction perspective. With the right abstractions maybe
> you're process for Bitsy is a lot like Titan's as compared to what we did
> for Neo4j or TinkerGraph.
> 
> 
>> 3. What happened to KeyIndexableGraph? We used to rely on this interface to
>> find vertices by a natural key besides the UUID.
>> 
> 
> TinkerPop no longer has abstractions over indices (nor does it have that
> convoluted inheritance hierarchy over the Graph interface).  Users must
> drop down to the indexing API of the provider implementation to create
> indices.  Bitsy would then develop a TraversalStrategy to optimize queries
> using those indices behind the scenes.
> 
> http://tinkerpop.apache.org/docs/3.1.0-incubating/#traversalstrategy
> 
> and here's the implementation from Neo4j
> 
> https://github.com/apache/incubator-tinkerpop/blob/ffbecdb870e5d4a840b0445447d96c27c3d84e3a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
> 
> and TinkerGraph:
> 
> https://github.com/apache/incubator-tinkerpop/blob/ffbecdb870e5d4a840b0445447d96c27c3d84e3a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java
> 
> 4. Should the tx() method always return the same object within the same
>> thread, or a different object for each transaction? For instance:
>>  Transaction tx1 = g.tx();
>>  tx1.open();
>>  // .. do some stuff
>>  tx1.close();
>>  assert tx1.isOpen() == false;
>>  Transaction tx2 = g.tx();
>>  tx2.open();
>> 
>>  At this point, if tx1 and tx2 are different objects, tx1.open() will
>> launch two parallel transactions in the same thread. This means that two
>> transactions can happen on the same thread. Is that allowed?
>> 
> 
> The tx() method should return the same object - no need to create a fresh
> on each time.  It is basically just a means to organize the transactional
> methods and not meant to be some handle to a "transaction object".
> Standard transactions are still like TinkerPop 2.x - they are bound to a
> thread.  You can also choose to support a transactions that are not bound
> to threads via Transaction.createThreadedTx() which returns a Graph that is
> not bound to the current thread. Multiple threads can act on the same
> transaction.  We had these in TinkerPop 2.x as well available via the
> ThreadedTransactionalGraph interface.
> 
>> 

Reply via email to