-
Type:
New Feature
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Backup
-
None
-
Storage Engines - Persistence
-
529.496
-
SE Persistence backlog
-
None
Support reflink (copy-on-write) based table cloning in the backup workflow to enable near-instant database-level cloning
Background
Near-instant cloning / branching of databases is becoming a common requirement:
- Gaming: A rollback point is created before every release so that the service can be quickly rolled back when a release goes wrong. Today this relies on full logical or physical copies, whose time and storage cost both grow linearly with the data size.
- AI agent sandboxes: An agent takes a snapshot before a high-risk step, rolls back on failure, forks from a snapshot to try alternative approaches, and discards it when done. These workloads are typically single-node and require replicas to be created and destroyed within seconds.
Proposal
Add a capability to WiredTiger: within the backup workflow, clone a caller-specified set of tables via filesystem reflink and register the new tables into WiredTiger.wt.
Draft interface :
/* * pairs: A list of (source uri, new uri), for example * "table:collection-0-123=table:collection-9-123,table:index-1-123=table:index-10-123" * config: method=clone|auto * clone: reflink must be used; fail immediately when it is not supported * (never silently fall back to a full copy). * auto: prefer reflink, and fall back to a regular copy when it is not supported. */ int WT_SESSION::clone_tables(WT_SESSION *session, const char *pairs, const char *config);