You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by Apache Wiki <wi...@apache.org> on 2017/07/25 00:26:36 UTC

[Jackrabbit Wiki] Update of "Composite Blob Store" by MattRyan

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" for change notification.

The "Composite Blob Store" page has been changed by MattRyan:
https://wiki.apache.org/jackrabbit/Composite%20Blob%20Store

New page:
= Composite Blob Store =

NOTE:  The current status of this component is a '''proposed feature'''.

== Overview ==
The composite blob store is a multi-source blob store - a logical blob store consisting of at least two delegate blob stores.  In the case of the composite blob store, every item stored has exactly one correct delegate where it can be stored.  Configuration specifies which delegate blob stores comprise the composite blob store.  Configuration also indicates the criteria that are evaluated by the composite blob store to determine the proper location for a blob.  These rules are always applied in a consistent order.  In the case of conflicting rules where there are multiple matches, the first matching rule is the one applied.

Thus by applying the rules consistently every time, the composite blob store always knows the correct delegate to choose for reads or writes.  Since there is always exactly one correct location for a blob, it should not be the case that the same blob is located in more than one delegate blob store.

A correctly configured composite blob store must have exactly one delegate blob store that is configured as the default blob store.  Any blobs that do not match any of the rules will map to the default blob store.

Rules operate on any combination of the following:
 * JCR path
 * JCR node type
 * Existence of JCR property
 * JCR property value

== Comparison to Overlay Blob Store ==
The composite data store is similar in concept to [[Overlay Blob Store]].  Like the overlay blob store, it presents a single, unified logical view that combines all of the data represented by the delegate blob stores.  The composite is different in that every delegate contains distinct data.  In other words, for any two delegate blob stores ''A'' and ''B'' that are both delegates of the same composite blob store, the intersection of ''A'' and ''B'' must be the empty set {}, whereas for an overlay data store such an intersection may or may not be the empty set {}.

=== Reads ===
The composite blob store fulfills read requests by evaluating the blob and its associated information (JCR path, JCR node type, JCR properties, JCR property values) with the configuration rules, and thereby determining the correct delegate blob store for the blob.  The read is issued to the delegate and the result of the read is returned as the result of the composite blob store read and no subsequent reads are attempted for that request.

=== Writes ===
The composite blob store fulfills write requests by evaluating the blob the same way as is done for reads.  And the same as is done for reads, writes are issued to the selected delegate and the result of the write is returned as the result of the composite blob store write and no subsequent writes are attempted for that request.