[
https://issues.apache.org/jira/browse/TINKERPOP3-772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marko A. Rodriguez updated TINKERPOP3-772:
------------------------------------------
Description:
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 that data (and thus, reduce the memory
footprint).
Another idea we should consider, which I believe would be added as a
{{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()}}).
was:
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()}}).
> 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 that data (and thus, reduce the
> memory footprint).
> Another idea we should consider, which I believe would be added as a
> {{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)