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

Ivan Andika edited comment on HDDS-15120 at 4/28/26 5:30 AM:
-------------------------------------------------------------

FYI I created a quick prototype: https://github.com/ivandika3/ozone/pull/3

The initial idea is quite straightforward. We setup a new "fork" bucket with a 
read through to the original snapshot. 

Any new keys will be created under this "fork" bucket namespace in keyTable 
(this can be visible to everyone).

However, each getKeyInfo will need to check the following
* If the key exists in a tombstone, it means that the key has been deleted only 
in this fork (but the underlying snapshot key exists), so we return 
KEY_NOT_FOUND
* Return the fork bucket keyTable entry if it exists
* Check whether the key exists in the original snapshot key, return it if it 
exists, otherwise return KEY_NOT_FOUND.

The prototype also support recursive fork, but for each level of recursive 
fork, we need to add one get query to retrieve the underlying key (worst case 
scenario is that the key does not exists in all forks and the base snapshot).






was (Author: JIRAUSER298977):
FYI I created a quick prototype: https://github.com/ivandika3/ozone/pull/3

The initial idea is quite straightforward. We setup a new "fork" bucket with a 
read through to the original snapshot. Any new keys will be created in this 
"fork" bucket in keyTable (this can be visible to everyone). 

However, each getKeyInfo will need to check the following
* If the key exists in a tombstone, it means that the key has been deleted only 
in this fork (but the underlying snapshot key exists), so we return 
KEY_NOT_FOUND
* Return the fork bucket keyTable entry if it exists
* Check whether the key exists in the original snapshot key, return it if it 
exists, otherwise return KEY_NOT_FOUND.





> Support bucket forks / branches for agentic workload
> ----------------------------------------------------
>
>                 Key: HDDS-15120
>                 URL: https://issues.apache.org/jira/browse/HDDS-15120
>             Project: Apache Ozone
>          Issue Type: New Feature
>            Reporter: Ivan Andika
>            Assignee: Ivan Andika
>            Priority: Major
>
> Currently, Ozone supports bucket snapshot which creates a read-only immutable 
> state of the entire bucket for use cases such as backup, replication, 
> compliance, etc. This is achieved using the RocksDB checkpoint feature which 
> tracks the current SST files at that point.
> With the recent rise agentic workloads, there is a need for storage systems 
> to implement forking / branching to cater for multi-agents workload. Unlike 
> snapshot, forks can be mutated. The idea of forking and branch is similar to 
> Git branch / worktrees where a new "branch" is created based on the base 
> directory. Multiple agents can fork the same base file system in parallel and 
> mutate these forks without affecting each other. These forks should also have 
> zero-copy, similar to snapshot (which should only require O(1) time to 
> create). Additionally, these forks lifetime can varies (it can be retained 
> for a long time or discarded quite quickly).
> Example systems
> * NeonDB branching: https://neon.com/docs/introduction/branching
> * Tigris Object Store: https://www.tigrisdata.com/docs/snapshots-and-forks/ 
> (please see the related blogs on the implementations of forks).
> Ozone can consider supporting this feature. Since more systems implement 
> storage compute separation architecture on object storage, the compute / 
> caching layer can rely on Ozone as the backing store for agentic workloads 
> since Ozone supports snapshot and forking (they don't need to implement 
> snapshot and forking or need to write complicated logic to store their forks 
> state). Ozone can then position itself as the open-source object store / 
> distributed file system for agentic workloads.
> This ticket acts as a way to start a discussion in the community on this 
> direction. We can start thinking about this (and probably try to start 
> prototyping some ideas). This might require a radical change of Ozone Manager 
> design (e.g. might need to introduce versioning, reference counting, 
> copy-on-write, log subsystems, OM deletions semantic change, etc).
> Out of scope
> * Merge Ozone fork back to the main bucket



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to