jackrabbit-oak-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Mueller <muel...@adobe.com>
Subject Re: Write performance for large child node lists
Date Wed, 23 May 2012 09:24:12 GMT

>>>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
>> 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
>> 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).

>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.


View raw message