Marko A. Rodriguez created TINKERPOP3-772:
---------------------------------------------

             Summary: TraverserRequirement.LABELED_PATH
                 Key: TINKERPOP3-772
                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-772
             Project: TinkerPop 3
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.0.0-incubating
            Reporter: Marko A. Rodriguez
            Assignee: Marko A. Rodriguez
             Fix For: 3.1.0-incubating


Path computations are "all or nothing" right now. That is, if a step requires 
path data (history), then the complete history of the traverser is recorded. 
However, there are only a few steps that actually require full history. These 
are:

  * {{PathStep}}
  * {{SimplePath}}
  * {{CyclicPath}}

All other steps that use path history, require only those path steps that are 
labeled. For instance:

  * {{MatchStep}}
  * {{SelectStep}}
  * {{WhereStep}}
  * {{DedupGlobalStep}}
  * ...

Thus, we should add a new {{TraverserRequirement}} called {{LABELED_PATH}}. 
This requirement says, "only Path.extend() if the step is labeled." This will 
increase the probability of bulking and will allow regions of a traversal that 
don't require paths to not generate the data (and thus, reduce the memory 
footprint).

Another idea we should consider, which I believe is would be added as 
{{FinalizationStrategy}} is {{DropPathStep}}. This would say: "after this 
point, the following labels are no longer needed so when the traverser comes 
here, delete the history for labels x, y, z..." This will allow us to prune 
path data to again, increase the probability of bulking.

There is one odd duck step that {{LABELED_PATH}} should help, but doesn't:

  * {{OtherVertexStep}}

There is no label, but we only need the path history of the last vertex. I 
suspect "hidden path labels" is what we need (and have proposed in an other 
ticket for optimizing {{match()}}).




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to