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
- Source (GitHub) - Microsoft's Azure Storage Java SDK is open source and Apache licensed
- Package info 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.