Skip to content

Commit 6403cc3

Browse files
rename file
1 parent ccf4af5 commit 6403cc3

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

core/core/src/docs/rfcs/0000_undelete.md renamed to core/core/src/docs/rfcs/7182_restore_api.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,31 @@
1-
- Proposal Name: (`undelete`)
1+
- Proposal Name: (`restore_api`)
22
- Start Date: 2025-02-04
33
- RFC PR: [apache/opendal#7178](https://github.com/apache/opendal/pull/7178)
44
- Tracking Issue: [apache/opendal#4321](https://github.com/apache/opendal/issues/4321)
55

66
# Summary
77

8-
Implement two complementary approaches for restoring deleted files in OpenDAL:
8+
Implement restoring a deleted version or a file.
9+
10+
# Motivation
11+
12+
Cloud storage providers implement data recovery through different mechanisms:
13+
14+
- Example 1: **AWS S3** uses versioning exclusively. Deleted objects become "delete markers" and can be restored by copying a previous version or removing the delete marker.
15+
- Example 2: **GCS and Azure Blob Storage** provide both versioning AND soft delete as separate, independent features that can be enabled separately or together.
16+
17+
Currently, there is no standardized way in OpenDAL to restore deleted objects across these different paradigms. This creates challenges for downstream projects that need data recovery capabilities. For example, iceberg-java [already supports file restore](https://github.com/apache/iceberg/blob/main/api/src/main/java/org/apache/iceberg/io/SupportsRecoveryOperations.java) in some cloud environments, while iceberg-rust, written with OpenDAL, does not provide this functionality yet.
18+
19+
In order to secure data pipelines, users currently have to maintain implementations of restore logic across multiple languages and storage backends. Having this functionality in OpenDAL would centralize this capability and make it available to all downstream users.
20+
21+
# Guide-level explanation
22+
23+
OpenDAL provides two ways to restore deleted files, depending on the storage backend's capabilities:
924

1025
1. **Version-based restoration**: Extend the `copy` operation with an optional source `version` parameter to enable promoting non-current versions to the current version (for storage systems with versioning support)
1126
2. **Soft delete restoration**: Add an `undelete` operation for storage systems that implement soft delete as a distinct feature from versioning (GCS and Azure Blob Storage)
12-
3. Provide a high-level `restore` API that automatically chooses the right approach based on service capabilities, defaulting to versioning approach:
27+
28+
We might also provide a high-level `restore` API that automatically chooses the right approach based on service capabilities, defaulting to versioning approach:
1329

1430
```rust
1531
impl Operator {
@@ -39,20 +55,6 @@ impl Operator {
3955
}
4056
```
4157

42-
# Motivation
43-
44-
Cloud storage providers implement data recovery through different mechanisms:
45-
46-
- Example 1: **AWS S3** uses versioning exclusively. Deleted objects become "delete markers" and can be restored by copying a previous version or removing the delete marker.
47-
- Example 2: **GCS and Azure Blob Storage** provide both versioning AND soft delete as separate, independent features that can be enabled separately or together.
48-
49-
Currently, there is no standardized way in OpenDAL to restore deleted objects across these different paradigms. This creates challenges for downstream projects that need data recovery capabilities. For example, iceberg-java [already supports file restore](https://github.com/apache/iceberg/blob/main/api/src/main/java/org/apache/iceberg/io/SupportsRecoveryOperations.java) in some cloud environments, while iceberg-rust, written with OpenDAL, does not provide this functionality yet.
50-
51-
In order to secure data pipelines, users currently have to maintain implementations of restore logic across multiple languages and storage backends. Having this functionality in OpenDAL would centralize this capability and make it available to all downstream users.
52-
53-
# Guide-level explanation
54-
55-
OpenDAL provides two ways to restore deleted files, depending on the storage backend's capabilities:
5658

5759
## Approach 1: Version-Based Restoration (Copy with Version)
5860

0 commit comments

Comments
 (0)