Support for large mv props was a non goal initially: http://wiki.apache.org/jackrabbit/Goals%20and%20non%20goals%20for%20Jackrabbit%203

However, I'm fine with revisiting that since I think there might be valid use cases. See for example Angela's mail in this thread.

At the very least I think we should not build something which prevents us from adding support for large mv. props later on.

Michael

On 15.11.12 11:00, Jukka Zitting wrote:
Hi,

This came up earlier in the Berlin Oakathon and we're now facing it
also with the property index. Basically, do we want to add explicit
support for long (>> 1k values) multivalued properties?

Currently such properties are possible in theory since there is no
hard limit to the size of the value array, but in practice accessing
such properties requires reading the whole array to memory and even a
simple update (like appending a single value) requires the whole array
to be rewritten.

There are two ways of supporting use cases that require such long
multivalued properties: a) we can support it directly in the
repository, or b) we require the client to use more complex data
structures like in the BTreeManager in Jackrabbit trunk or the BTree
implementation in the wrapper-based index implementation Thomas wrote
for Oak.

Supporting such use cases directly in the repository would be nice as
that would notably simplify affected clients. However, doing so would
require us to adapt some of our APIs. For example we'd need a way to
iterate over the list of values of a single property and to add, set
and remove individual values at specific locations. The
PropertyBuilder interface already has some of this, but neither the
Oak API nor the MicroKernel currently support such operations.

WDYT, should we implement something along these lines or leave it up
to clients? I'm cautiously positive in that we should do this since
we'd in any case need similar code for the property index, but would
love to hear other opinions.

BR,

Jukka Zitting

Reply via email to