Hi oak-dev, I’ve written up some proposals on the wiki for blob stores that can reference multiple blob storage locations.
Both act as a single logical blob store to Oak and can be treated as a single blob store. Both have at least two “delegate” blob stores managed by the primary blob store. There are two concepts. One I’m currently calling the Overlay blob store (we haven’t voted on this name yet). In this case, delegates are configured with a preferred order of lookup. When a read is issued, the overlay blob store will attempt to satisfy the read by going through the delegates in order until one can satisfy the read. [0] The second concept is the Composite blob store that was previously discussed on-list. In this case, delegates are configured with rules specifying which blobs belong in which delegate, with exactly one delegate being specified as the default. There is only ever exactly one correct location for a blob in a composite blob store. When a read is issued, the composite blob store will evaluate the rules to determine which delegate should be able to satisfy the request, and then read from that delegate only, or fail if it is not found in the delegate. [1] As I thought about all the use cases, these two concepts kind of stood out in contrast to each other so I thought I would propose that we formalize the two as separate but similar concepts. I would appreciate feedback and discussion on how we can make these useful for future Oak versions. Thanks! -MR [0] - https://wiki.apache.org/jackrabbit/Overlay%20Blob%20Store [1] - https://wiki.apache.org/jackrabbit/Composite%20Blob%20Store