[
https://issues.apache.org/jira/browse/JCR-642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12738292#action_12738292
]
Thomas Mueller commented on JCR-642:
------------------------------------
I would (try to) use the b-tree data structure:
http://en.wikipedia.org/wiki/B-tree
I would keep the internal implementation (PersistenceManagerAPI, NodeState and
so on),
but add a property 'hidden' to node (maybe using an empty name). Hidden nodes
would have no properties, only child nodes. When adding a child to a hidden
node X, the child would be added to a child of X, and the b-tree would be
re-balanced. The same when removing a child from a hidden node. Other than that,
user-facing algorithms would need to be changed, specially getPath, and
NodeIterator. Basically hidden nodes would never be returned to the application
and
not be directly accessible using the JCR API.
> Support flat content hierarchies
> --------------------------------
>
> Key: JCR-642
> URL: https://issues.apache.org/jira/browse/JCR-642
> Project: Jackrabbit Content Repository
> Issue Type: Improvement
> Components: jackrabbit-core
> Reporter: Jukka Zitting
>
> The current best practice with Jackrabbit is to avoid flat content structures
> due to performance concerns.
> These concerns are caused by the fact that the NodeState implementation
> requires the list of child node names and identifiers to be available at all
> times. In fact many (all?) current persistence managers implement this
> requirement by storing and loading this list as a part of the serialized node
> state. When this list grows, the performance and memory overhead of managing
> the list grows as well. As a side note, this also creates potential
> consistency issues since the parent/child links are stored both within the
> child list of the parent node and as the parent link of the child node.
> To solve this issue, I believe we need to break the tight bonding between the
> node state and the list of child nodes. This will likely require major
> refactoring of the Jackrabbit core, including breaking the NodeState and
> PersistenceManager interfaces, so I don't expect a solution in near future.
> However, we should start thinking about how to best do this, and at least be
> concerned about building in any more assumptions about the list of child
> nodes always being readily available.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.