[ 
https://issues.apache.org/jira/browse/OAK-7083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16431429#comment-16431429
 ] 

Matt Ryan commented on OAK-7083:
--------------------------------

Encoding after the delegate is called won't work as the blob has already been 
uploaded by the delegate by that point.

After thinking about this further I decided not to pursue the concept of 
encoding the data store identifier in the blob id for two additional reasons. 

First, this approach prevents any possible future uses in which a blob could be 
stored in more than one place.  Using the {{CompositeDataStore}} to store blobs 
in more than one data store and look them up based on some other criteria was 
one of the originally identified possible use cases (for example, storing 
multiple copies worldwide and retrieving from the closest data store, or 
implementing service-redundant storage by storing in AWS and Azure 
simultaneously).

Second, this approach will require a data migration for any existing user who 
then wants to start using {{CompositeDataStore}} - all existing blobs would 
have to be renamed.

So I've implemented a simpler solution based on a {{LoadingCache}} which is 
currently in the pull request.

> CompositeDataStore - ReadOnly/ReadWrite Delegate Support
> --------------------------------------------------------
>
>                 Key: OAK-7083
>                 URL: https://issues.apache.org/jira/browse/OAK-7083
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: blob, blob-cloud, blob-cloud-azure, blob-plugins
>            Reporter: Matt Ryan
>            Assignee: Matt Ryan
>            Priority: Major
>
> Support a specific composite data store use case, which is the following:
> * One instance uses no composite data store, but instead is using a single 
> standard Oak data store (e.g. FileDataStore)
> * Another instance is created by snapshotting the first instance node store, 
> and then uses a composite data store to refer to the first instance's data 
> store read-only, and refers to a second data store as a writable data store
> One way this can be used is in creating a test or staging instance from a 
> production instance.  At creation, the test instance will look like 
> production, but any changes made to the test instance do not affect 
> production.  The test instance can be quickly created from production by 
> cloning only the node store, and not requiring a copy of all the data in the 
> data store.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to