I agree,
so for large childnode lists, a stable but uncontrollable order would
be ok, although violating the spec?

--

toby
On Sat, Jan 21, 2012 at 5:04 AM, Stefan Guggisberg
<stefan.guggisb...@gmail.com> wrote:
> On Sat, Jan 21, 2012 at 3:00 AM, Tobias Bocanegra <tri...@adobe.com> wrote:
>> nt:unstructured has orderable childnodes, and we also preach to use
>> nt:unstructured whereever you can. Also, i assume that a lot of
>> applications benefit from node ordering (like a CMS). So I think that
>> the majority of the repositories have a lot of nodes with ordered
>> childnodes.
>
>
> agreed, at least for small child node lists (e.g. < 1k child nodes).
> but i doubt there's a need for large (e.g. 1M entries)  orderable
> child node lists.
>
>> thus i would not put too much effort in having an
>> efficient non-ordered format, but making the ordered storage as fast
>> as possible.
>
> i am thinking of large child node collections with stable order.
> however, they wouldn't be insertion-ordered nor client-orderable.
> that's the compromise.
>
>> using lexicographical ordering for unordered child nodes
>> would certainly be a good option,
>
> that would be an implementation detail. as long as the order
> is stable (repeated reads of the same node revision should
> provide the same order of the child nodes) we shouldn't make
> any promises about how the order is defined.
>
> cheers
> stefan
>
>> [...] as i can reduce the lookup (but not
>> insert). also, i think that re-orderings happen relatively rarely.
>>
>> regards, toby
>>
>> On Fri, Jan 20, 2012 at 9:13 AM, Stefan Guggisberg
>> <stefan.guggisb...@gmail.com> wrote:
>>> On Fri, Jan 20, 2012 at 5:43 PM, Jukka Zitting <jukka.zitt...@gmail.com> 
>>> wrote:
>>>> Hi,
>>>>
>>>> Thinking about this more generally, it would definitely be useful to
>>>> be able to use a more efficient underlying storage for unorderable
>>>> nodes. However, there still are hard use cases that require us to
>>>> support orderable nodes as indicated by the type of the parent node.
>>>> Thus the implementation basically has two options:
>>>>
>>>> 1) Use a single data structure for all nodes, like Jackrabbit
>>>> currently does. This simplifies the implementation but prevents us
>>>> from enjoying the performance and scalability benefits of unorderable
>>>> nodes.
>>>>
>>>> 2) Use two data structures, one for orderable and another for
>>>> unorderable nodes. This is more complex (not least because it links
>>>> node types to the underlying storage model), but is probably required
>>>> if we want to efficiently support up to millions of child nodes per a
>>>> single parent.
>>>
>>> i agree that it's probably required for efficiently handling both large
>>> and small child node lists.
>>>
>>> i am not sure that it necessarily means linking node types to the
>>> underlying storage modal. the microkernel prototype currently has
>>> no notion of node types and that's IMO a good thing.
>>>
>>> node types have a way to dominant role in the current jackrabbit
>>> core implementation. jackrabbit started out as the official reference
>>> implementation for jsr-170, the focus was on supporting every
>>> feature of the spec.
>>>
>>> in jr3 i guess we can and should trade some 'note type correctness'
>>> for improved efficiency.
>>>
>>>>
>>>> It might also be possible to have the underlying storage model
>>>> unorderable, and just include extra ordering metadata at a higher
>>>> layer where also node types are handled. Option 2b, if you like, with
>>>> probably fairly significant overhead when iterating over nodes (the
>>>> implementation would probably need to pre-fetch all child nodes in
>>>> advance to access their ordering metadata).
>>>>
>>>> If we do have native support for unorderable nodes, then I wouldn't
>>>> promise any particular ordering (alphabetic, insertion order, etc.)
>>>> but rather leave it undefined like in Java's Map interface. The
>>>> underlying implementation is then free to use whatever ordering it
>>>> thinks is best.
>>>
>>> i agree.
>>>
>>> cheers
>>> stefan
>>>
>>>>
>>>> PS. Note that ordering affects not just node traversal, but also the
>>>> document ordering used in search results. Though in practice we
>>>> already now disable document ordering of search results by default.
>>>>
>>>> BR,
>>>>
>>>> Jukka Zitting

Reply via email to