feat: add backup/replication for the object-storage module's own bucket contents
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- cloud, data-engineering, infrastructure
Direzione di ricerca
Start by reading #663 to understand the proposed object-storage module and its provider, then compare its capabilities with the scheduled sync options described here and the file/volume backup path in #668. The work depends on #663 landing; done means bucket contents have a recovery path independent of that file/volume backup, with accidental deletion or overwrite recoverable.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem statement
#668 covers backing up file/volume-based module data (Dagster IO manager, DuckDB, dlt) using restic, with S3 as one possible destination. It does not cover the case where the object-storage module proposed in #663 is itself added to a stack -- at that point, the bucket's own contents become another persistence layer (uploaded files, dbt artifacts, Superset uploads, IO manager objects, etc.) that can be lost to accidental deletion, corruption, or an operator mistake, with no protection of its own.
Proposed solution
Once #663 lands, add a way to protect the object-storage module's bucket contents independently of the file/volume backup path in #668 -- e.g. scheduled cross-bucket replication/sync (to a second bucket, ideally a different backend/host) or bucket versioning where the chosen provider supports it, so an accidental delete/overwrite is recoverable.
Leading open-source candidates: rclone (MIT) or mc mirror (the MinIO client CLI, Apache 2.0, still maintained even though the MinIO server itself is EOL per #663's findings) for scheduled bucket-to-bucket sync; enabling native object versioning on the storage module if the selected provider (e.g. Garage, SeaweedFS) supports it, as a lower-effort first line of defense.
Alternatives considered
1. Rely on restic (#668) against bucket contents directly
Possible in principle (restic can back up any mounted filesystem), but object-storage backends aren't normally exposed as a filesystem to the backup process, and restic is not designed for S3-to-S3 semantics (versioning, multipart objects) -- a native replication/versioning approach is a better fit than forcing this through #668's file/volume path.
2. No bucket-content protection (status quo once #663 ships)
Leaves the object-storage module as the one persistence layer in the stack with no recovery path at all, even after #665 (Postgres) and #668 (files/volumes) are addressed.
Impact
- Depends on #663 (object-storage module) existing first; not actionable before that lands.
- Complements #665 (Postgres) and #668 (file/volume backup) so all three of CDS's persistence patterns (SQL database, file/volume, object storage) have a recovery story.
- Lingua principale
- Python
- Stelle
- 8
- Fork
- 12
- Merge medio
- 1g 2h
- PR unite (30g)
- 93
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di RonaldHensbergen/composable-data-stack
-
area:cli priority:low refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
RonaldHensbergen/composable-data-stack#915 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cli priority:low refactor size:small
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
RonaldHensbergen/composable-data-stack#906 ·
I maintainer di solito rispondono entro 1 giorno
-
area:docs documentation hacktoberfest priority:low size:small
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
RonaldHensbergen/composable-data-stack#865 ·
I maintainer di solito rispondono entro 1 giorno
-
tests/test_dagster_entrypoint_backend_guard.py fails on Windows (hard dependency on 'sh')Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaarea:images bug priority:medium python
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
RonaldHensbergen/composable-data-stack#564 ·
I maintainer di solito rispondono entro 1 giorno
-
area:configuration area:security enhancement priority:medium size:small
RonaldHensbergen/composable-data-stack#932 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di RonaldHensbergen/composable-data-stack
Issue simili
-
Project submission:Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
slavakurilyak/awesome-ai-agents#845 ·
I maintainer di solito rispondono entro 1 giorno
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertadifficulty:2 enhancement good first issue
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
MakazhanAlpamys/Soup#2178 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
scverse/rapids-singlecell#854 ·
I maintainer di solito rispondono entro 1 giorno
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLForse già presa @ninglinLiu l’ha presa oggi. Apertaarea:frontend backend:slang bug direction:input
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=FalseForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 13 giorni