jackrabbit-oak-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig <mdue...@apache.org>
Subject Re: Write performance for large child node lists
Date Wed, 23 May 2012 09:27:11 GMT


On 23.5.12 10:24, Thomas Mueller wrote:
> Hi,
>
>>>> Your solution is interesting since in a way it is based on recording the
>>>> changes (i.e. change log) but API wise only the actual states are
>>>> exposed.
>>>
>>> That's interesting, where is the code for this? A mixed approach would
>>> indeed work well (for example diffing for properties, and using a change
>>> log for nodes). Is there some code or idea already about how to deal
>>> with
>>> moved nodes (which is where diffing is troublesome)?
>>
>> See OAK-109 and revision 1341534.
>
> I did have a look at that revision but didn't see (and still don't see)
> where changes are recorded (the change log). Do you mean NodeStateDiff? I
> wouldn't call that 'based on recording the changes' - everything is it
> still based on diffing (which is OK as long as there are no
> move/copy/reorder operations).

It's in ModifiedNodeState.

Michael

>
>> The way we
>> deal with move and copy operation is to apply them eagerly.
>> That is, as
>> soon as a move or a copy operation occurs, the change log up to that
>> point is applied.
>
> Ah, OK, that would solve the problem, as diffing is only ever required for
> add/remove/set property and add/remove node, and never for move and
> reorder. That sounds like a good solution. Even better than recording all
> changes, as that would need more memory. I guess move/copy/reorder are
> relatively rare operations, so it shouldn't be a problem even if the
> changes are sent to the MicroKernel layer at that point.
>
>
> Regards,
> Thomas
>

Mime
View raw message