On 7.5.12 20:03, David Hausladen wrote:
Hi, I have some questions about BTreeManager and how it is used to solve the problem of large sets of child nodes. We're converting a legacy document store into Jackrabbit, preserving file paths. Unfortunately, we found that this legacy store was very flat in some cases and when that is the case, performance suffers, in some cases dramatically. A few searches turned up BTreeManager. But there's very little documentation of how to use it. 1.) First of all, is it automatically used by Jackrabbit to manage the children of all nodes, or is it an opt-in feature?
It is an opt-in feature. Jackrabbit only uses it in the UserManager implementation for managing groups with many members.
2.) If it is an opt-in feature, does one need to always use ItemSequence to access the children of a node? Based on what I see of the code, it seems necessary since without the mapping performed by ItemSequence, the backing nodes' getNodes methods would return the internal (hierarchical) rather than the flat structure.
Basically yes. TreeManager instances are responsible for mapping sequential structures to tree structures. The BTreeManager uses a BTree for that. NodeSequence and PropertySequence provide means for accessing nodes in such trees as though they are a sequential structures. If you access the underlying tree directly, you will see the internal BTree structure.
Michael
Thanks, Dave
