You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Raffaele Gambelli <R....@westpole.it> on 2019/08/28 14:05:24 UTC

Jackrabbit 2.14.0 - db PersistenceManager minBlobSize and file DataStore minRecordLength

Hi all,

I need help to understand the ratio between db PersistenceManager minBlobSize and file DataStore minRecordLength, here follows my scenario:

I have a clustered environment using jackrabbit 2.14.0 with an Oracle PersistenceManager and a file DataStore in a NFS storage, applications running on Ubuntu.

Currently I have this configuration in my workspace.xml:

<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager">
...
<param name="minBlobSize" value="16384"/>
</PersistenceManager>

Documentation I found states that:

MIN RECORD LENGTH (from http://jackrabbit.apache.org/archive/wiki/JCR/DataStore_115513387.html):
The minimum object length. The default is 100 bytes; smaller objects are stored inline (not in the data store). Using a low value means more objects are kept in the data store (which may result in a smaller repository, if the same object is used in many places). Using a high value means less objects are stored in the datastore (which may result in better performance, because less datastore access is required). There is a limitation on the minRecordLength: the maximum value is around 32000. The reason for this is that Java doesn't support strings longer than 64 KB in writeUTF.

MIN BLOB SIZE (https://jackrabbit.apache.org/api/2.8/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.html setMinBlobSize method):
This size defines the threshold of which size a property is included in the bundle or is stored in the blob store.

So, given that I've not configured minRecordLength, it means I'm using its default, so 100 bytes.
But I have 16384 bytes configued as min blob size.

Is it correct what follows?
When a value (binary or not) is written, if it is less than 16384 bytes it finishes in database, otherwise it finishes in the file datastore. So if I'm right the default value of minRecordLenght is ignored? And what's happen if I would have minRecordLenght greater than minBlobSize to those file included between minBlobSize and minRecordLength?

Thanks for the clarification, best regards


[https://westpole.it/firma/logo.png]

Raffaele Gambelli
WebRainbow(r) Software Developer

P +39 051 8550 576
M #
E R.Gambelli@westpole.it
W https://westpole.webex.com/meet/R.Gambelli
A Via Ettore Cristoni, 84 - 40030 Casalecchio di Reno

[https://westpole.it/firma/sito.png]<https://westpole.it>  [https://westpole.it/firma/twitter.png] <https://twitter.com/WESTPOLE_SPA>   [https://westpole.it/firma/linkedin.png] <https://www.linkedin.com/company/westpole/>

This email for the D.lgs.196/2003 (Privacy Code) and European Regulation 679/2016/UE (GDPR) may contain confidential and/or privileged information for the exclusive use of the intended recipient. Any review or distribution by others is strictly prohibited. If you are not the intended recipient, you must not use, copy, disclose or take any action based on this message or any information here. If you have received this email in error, please contact us (email:privacy@westpole.it) by reply email and delete all copies. Legal privilege is not waived because you have read this email. Thank you for your cooperation.

[https://westpole.it/firma/ambiente.png] Please consider the environment before printing this email

Re: Jackrabbit 2.14.0 - db PersistenceManager minBlobSize and file DataStore minRecordLength

Posted by Woonsan Ko <wo...@apache.org>.
Hi Raffaele,

BlobStore was deprecated in favor of DataStore. If you have DataStore
element in the configuration, it's enabled with precedence and I think
all the BlobStore related configuration will be ignored as a result.
Also see the FAQ section in
http://jackrabbit.apache.org/archive/wiki/JCR/DataStore_115513387.html.

Regards,

Woonsan

On Wed, Aug 28, 2019 at 10:14 AM Raffaele Gambelli
<R....@westpole.it> wrote:
>
> Errata corrige,
>
> replce <FileSystem...> with this:
> <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
>         <param name="path" value="/mnt/NFS/global-datastore"/>
> </DataStore>
>
> -----Messaggio originale-----
> Da: Raffaele Gambelli <R....@westpole.it>
> Inviato: mercoledì 28 agosto 2019 16:05
> A: users@jackrabbit.apache.org
> Oggetto: Jackrabbit 2.14.0 - db PersistenceManager minBlobSize and file DataStore minRecordLength
>
> Hi all,
>
> I need help to understand the ratio between db PersistenceManager minBlobSize and file DataStore minRecordLength, here follows my scenario:
>
> I have a clustered environment using jackrabbit 2.14.0 with an Oracle PersistenceManager and a file DataStore in a NFS storage, applications running on Ubuntu.
>
> Currently I have this configuration in my workspace.xml:
>
> <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
> <param name="path" value="${wsp.home}"/> </FileSystem> <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager">
> ...
> <param name="minBlobSize" value="16384"/> </PersistenceManager>
>
> Documentation I found states that:
>
> MIN RECORD LENGTH (from http://jackrabbit.apache.org/archive/wiki/JCR/DataStore_115513387.html):
> The minimum object length. The default is 100 bytes; smaller objects are stored inline (not in the data store). Using a low value means more objects are kept in the data store (which may result in a smaller repository, if the same object is used in many places). Using a high value means less objects are stored in the datastore (which may result in better performance, because less datastore access is required). There is a limitation on the minRecordLength: the maximum value is around 32000. The reason for this is that Java doesn't support strings longer than 64 KB in writeUTF.
>
> MIN BLOB SIZE (https://jackrabbit.apache.org/api/2.8/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.html setMinBlobSize method):
> This size defines the threshold of which size a property is included in the bundle or is stored in the blob store.
>
> So, given that I've not configured minRecordLength, it means I'm using its default, so 100 bytes.
> But I have 16384 bytes configued as min blob size.
>
> Is it correct what follows?
> When a value (binary or not) is written, if it is less than 16384 bytes it finishes in database, otherwise it finishes in the file datastore. So if I'm right the default value of minRecordLenght is ignored? And what's happen if I would have minRecordLenght greater than minBlobSize to those file included between minBlobSize and minRecordLength?
>
> Thanks for the clarification, best regards
>
>
> [https://westpole.it/firma/logo.png]
>
> Raffaele Gambelli
> WebRainbow(r) Software Developer
>
> P +39 051 8550 576
> M #
> E R.Gambelli@westpole.it
> W https://westpole.webex.com/meet/R.Gambelli
> A Via Ettore Cristoni, 84 - 40030 Casalecchio di Reno
>
> [https://westpole.it/firma/sito.png]<https://westpole.it>  [https://westpole.it/firma/twitter.png] <https://twitter.com/WESTPOLE_SPA>   [https://westpole.it/firma/linkedin.png] <https://www.linkedin.com/company/westpole/>
>
> This email for the D.lgs.196/2003 (Privacy Code) and European Regulation 679/2016/UE (GDPR) may contain confidential and/or privileged information for the exclusive use of the intended recipient. Any review or distribution by others is strictly prohibited. If you are not the intended recipient, you must not use, copy, disclose or take any action based on this message or any information here. If you have received this email in error, please contact us (email:privacy@westpole.it) by reply email and delete all copies. Legal privilege is not waived because you have read this email. Thank you for your cooperation.
>
> [https://westpole.it/firma/ambiente.png] Please consider the environment before printing this email

R: Jackrabbit 2.14.0 - db PersistenceManager minBlobSize and file DataStore minRecordLength

Posted by Raffaele Gambelli <R....@westpole.it>.
Errata corrige,

replce <FileSystem...> with this:
<DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
        <param name="path" value="/mnt/NFS/global-datastore"/>
</DataStore>

-----Messaggio originale-----
Da: Raffaele Gambelli <R....@westpole.it> 
Inviato: mercoledì 28 agosto 2019 16:05
A: users@jackrabbit.apache.org
Oggetto: Jackrabbit 2.14.0 - db PersistenceManager minBlobSize and file DataStore minRecordLength

Hi all,

I need help to understand the ratio between db PersistenceManager minBlobSize and file DataStore minRecordLength, here follows my scenario:

I have a clustered environment using jackrabbit 2.14.0 with an Oracle PersistenceManager and a file DataStore in a NFS storage, applications running on Ubuntu.

Currently I have this configuration in my workspace.xml:

<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/> </FileSystem> <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager">
...
<param name="minBlobSize" value="16384"/> </PersistenceManager>

Documentation I found states that:

MIN RECORD LENGTH (from http://jackrabbit.apache.org/archive/wiki/JCR/DataStore_115513387.html):
The minimum object length. The default is 100 bytes; smaller objects are stored inline (not in the data store). Using a low value means more objects are kept in the data store (which may result in a smaller repository, if the same object is used in many places). Using a high value means less objects are stored in the datastore (which may result in better performance, because less datastore access is required). There is a limitation on the minRecordLength: the maximum value is around 32000. The reason for this is that Java doesn't support strings longer than 64 KB in writeUTF.

MIN BLOB SIZE (https://jackrabbit.apache.org/api/2.8/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.html setMinBlobSize method):
This size defines the threshold of which size a property is included in the bundle or is stored in the blob store.

So, given that I've not configured minRecordLength, it means I'm using its default, so 100 bytes.
But I have 16384 bytes configued as min blob size.

Is it correct what follows?
When a value (binary or not) is written, if it is less than 16384 bytes it finishes in database, otherwise it finishes in the file datastore. So if I'm right the default value of minRecordLenght is ignored? And what's happen if I would have minRecordLenght greater than minBlobSize to those file included between minBlobSize and minRecordLength?

Thanks for the clarification, best regards


[https://westpole.it/firma/logo.png]

Raffaele Gambelli
WebRainbow(r) Software Developer

P +39 051 8550 576
M #
E R.Gambelli@westpole.it
W https://westpole.webex.com/meet/R.Gambelli
A Via Ettore Cristoni, 84 - 40030 Casalecchio di Reno

[https://westpole.it/firma/sito.png]<https://westpole.it>  [https://westpole.it/firma/twitter.png] <https://twitter.com/WESTPOLE_SPA>   [https://westpole.it/firma/linkedin.png] <https://www.linkedin.com/company/westpole/>

This email for the D.lgs.196/2003 (Privacy Code) and European Regulation 679/2016/UE (GDPR) may contain confidential and/or privileged information for the exclusive use of the intended recipient. Any review or distribution by others is strictly prohibited. If you are not the intended recipient, you must not use, copy, disclose or take any action based on this message or any information here. If you have received this email in error, please contact us (email:privacy@westpole.it) by reply email and delete all copies. Legal privilege is not waived because you have read this email. Thank you for your cooperation.

[https://westpole.it/firma/ambiente.png] Please consider the environment before printing this email