Hi,

I've noticed recently that with many different NodeStore
implementation (Segment, Document, Multiplexing) but also DataStore
implementation (File, S3, Azure) and some composite ones like
(Hierarchical, Federated - that was already mentioned in [0]) it
becomes more and more difficult to set up everything correctly and be
able to know the current persistence state of repository (especially
with pretty aged repos).

Moreover, the configuration pattern that is based on individual PID of
one service becomes problematic (i.e. recent change for
SegmentNodeStoreService).

>From the operations and user perspective everything should be treated
as a whole IMHO no matter which service handles which fragment of
persistence layout. Oak should know itself how to "autowire" different
parts, obviously with some hints and pointers from users as they want
to run Oak in their own preferred layout.

My proposal would be to integrate everything together to a pretty old
concept called "fstab". For our purposes I would call it "nstab".

This could look like [1] for the most simple case (with internal
blobs), [2] for typical SegmentMK + FDS, [3] for SegmentMK + S3DS, [4]
for MultiplexingNodeStore with some areas of repo set as read only. I
think we could also model Hierarchical and Federated DataStores as
well in the future.

Examples are for illustration purposes but I guess such setup will
help changing layout without a need to inspect many OSGi
configurations in a current setup and making sure some conflicting
ones aren't active.

The schema is also similar to an UNIX-way of configuring filesystem so
it will help Oak users to understand the layout (at least better than
it is now). I see also advantage for automated tooling like
oak-upgrade for complex cases in the future - user just provides
source nstab and target nstab in order to migrate repository.

The config should be also simpler avoiding things like customBlobStore
(it will be inferred from context).

WDYT? I have some thoughts how could this be implemented but first I
would like to know your opinions on that.

Thanks in advance for feedback!
Arek


[0] http://oak.markmail.org/thread/22dvuo6b7ab5ib7m
[1] 
https://gist.githubusercontent.com/kitarek/f755dab6e889d1dfc5a1c595727f0171/raw/53d41ac7f935886783afd6c85d60e38e565a9259/nstab.1
[2] 
https://gist.githubusercontent.com/kitarek/f755dab6e889d1dfc5a1c595727f0171/raw/53d41ac7f935886783afd6c85d60e38e565a9259/nstab.2
[3] 
https://gist.githubusercontent.com/kitarek/f755dab6e889d1dfc5a1c595727f0171/raw/53d41ac7f935886783afd6c85d60e38e565a9259/nstab.3
[4] 
https://gist.githubusercontent.com/kitarek/f755dab6e889d1dfc5a1c595727f0171/raw/53d41ac7f935886783afd6c85d60e38e565a9259/nstab.4

Reply via email to