Amit Jain commented on OAK-4933:

Also, we should consider using [jclouds|http://jclouds.apache.org] to connect 
to different backends. This has certain advantages:
* Obviate the need to change packaging etc. 
* Free support (almost) for other backends as well like openstack.
* If embedded the total size increases by only 2.3 MB (in oak-run for s3)
* Quite easy to implement (See the gist here 
 which is almost fully supported on S3 (server side encryption not supported)
* Oak already has dependency on an older version of jclouds 1.7.0 for 
CloudBlobStore (is experimental and not used).

> Create a data store implementation that integrates with Microsoft Azure Blob 
> Storage
> ------------------------------------------------------------------------------------
>                 Key: OAK-4933
>                 URL: https://issues.apache.org/jira/browse/OAK-4933
>             Project: Jackrabbit Oak
>          Issue Type: Epic
>          Components: blob, core
>            Reporter: Matt Ryan
> This epic proposes the creation of a new type of Oak data store, 
> AzureDataStore, that offers an integration between Oak and Microsoft Azure 
> Blob Storage.  AzureDataStore would be very similar in purpose and 
> functionality to S3DataStore, with a different backend that uses Azure Blob 
> Storage instead of S3.
> Some initial exploration into this concept can be seen in my github here:  
> https://github.com/mattvryan/jackrabbit-oak/tree/azure-blob-store
> More info about Azure Blob Storage:
> * [Java 
> SDK|https://azure.microsoft.com/en-us/documentation/articles/storage-java-how-to-use-blob-storage/]
> * [Javadoc|http://azure.github.io/azure-storage-java/]
> * [Source|https://github.com/azure/azure-storage-java] (GitHub) - Microsoft's 
> Azure Storage Java SDK is open source and Apache licensed
> * [Package 
> info|https://mvnrepository.com/artifact/com.microsoft.azure/azure-storage] on 
> mvnrepository.com
> As I see it, the following work would be required:
> * Create an AzureDataStore class that extends CachingDataStore
> * Create a new backend for Azure Blob Storage
> * Comprehensive unit testing of the new data store and backend classes
> * Create test "mocks" for the necessary Azure Storage classes to facilitate 
> unit testing (they are all final classes and cannot be mocked directly)
> * Create SharedAzureDataStore class
> * Create AzureDataStoreService class
> * Implement similar JMX metrics as exist for S3DataStore
> * Combine and refactor existing Oak code with newly added code to make best 
> reuse of existing code, etc.
> * Integration testing with system configured with AzureDataStore, comparison 
> w/ S3DataStore in terms of performance and correctness
> * Modify Azure Storage SDK code to make it into a valid OSGi bundle, and 
> submit these changes back to that project (currently it is not an OSGi bundle 
> and therefore currently has to be embedded)
> List isn't purported to be comprehensive of course.

This message was sent by Atlassian JIRA

Reply via email to