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)