Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

idea: Add file version support for OpenDAL #2156

Closed
3 tasks
Xuanwo opened this issue Apr 28, 2023 · 3 comments
Closed
3 tasks

idea: Add file version support for OpenDAL #2156

Xuanwo opened this issue Apr 28, 2023 · 3 comments
Labels

Comments

@Xuanwo
Copy link
Member

Xuanwo commented Apr 28, 2023

Some storage services, such as Amazon S3, have built-in support for versioning.

This is achieved through a feature called ObjectVersion, which allows the same object to exist in multiple versions and be accessed separately even after deletion. With this feature, users can ensure the safety of their data by rolling back to previous versions in case of unintended deletions or changes.

It would be natural to implement it, like:

  • include a version argument in the OpRead, OpStat, and OpDelete.
  • Add version in Metadata

We need to consider various services. Currently, I plan to investigate the object version features of the following services to ensure our design is appropriate:

  • AWS S3 Object Version
  • Azblob Blob Versioning
  • GCS Object Versioning
@Xuanwo Xuanwo changed the title idea: Add version support for read and delete idea: Add version support for OpenDAL Apr 28, 2023
@Xuanwo Xuanwo changed the title idea: Add version support for OpenDAL idea: Add file version support for OpenDAL May 17, 2023
@drmingdrmer
Copy link

Oh I need this feature to update an s3 object in a CAS manner!

Or, is there any other approach than using version id to ensure that the object remains unchanged during the update?

@Xuanwo
Copy link
Member Author

Xuanwo commented May 23, 2023

Oh I need this feature to update an s3 object in a CAS manner!

Yes, we can read object with version_id like:

let content = op.read_with("path/to/file", OpRead::new().with_version("<version_id>")).await?;

Or, is there any other approach than using version id to ensure that the object remains unchanged during the update?

I have no idea for this now

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 25, 2023

Thanks @suyanhanx for implementing the RFC!

@Xuanwo Xuanwo closed this as completed Jul 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants