apache / opendal

Apache OpenDAL: access data freely.
https://opendal.apache.org
Apache License 2.0
3.27k stars 455 forks source link

Add support to change storage class (e.g. to warm-up data) #4308

Open aawsome opened 7 months ago

aawsome commented 7 months ago

Opendal already supports specifying storage classes, e.g. for AWS S3:

default_storage_class = "DEEP_ARCHIVE"

Now, sometimes you want or need to change the storage class. In this example, before being able to access the data in AWS Glacier Deep Archive, you need to warm-up the data by requesting to change the storage class to "STANDARD".

It would be very nice if the opendal service directly supports this kind of storage class change, e.g. something like

let mut builder = S3::default();
builder.bucket("test");
builder.default_storage_class("DEEP_ARCHIVE");
let op: Operator = Operator::new(builder)?.finish();

op.change_state("hello.txt", "STANDARD")?.await?;

There are some cases to consider:

As a reference, where such things are useful, see https://github.com/rustic-rs/rustic/discussions/692.

Xuanwo commented 7 months ago

Hi, @aawsome, thank you for bringing up the issue. I've been considering this for some time but haven't found a way to integrate this feature into OpenDAL.

Here are my concerns:


Could we consider a restore API?

let res = op.restore("archived.tar.zst").await?;

We need to conduct further research by exploring s3, gcs, azblob, and comparing the similarities and differences between these services.