Persistance
Persistance de valeurs Catnip entre deux exécutions.
Pourquoi cette catégorie
Certaines étapes de pipeline produisent des résultats intermédiaires coûteux à recalculer. freeze et thaw permettent
de sérialiser ces valeurs en bytes, puis de les restaurer plus tard depuis un backend local comme SQLite ou un service
partagé comme Redis.
Un pipeline qui recommence tout à chaque run cramme du temps pour rien.
Cas d'usage : checkpoints de pipeline, reprise après interruption, snapshots de calcul, partage d'états intermédiaires entre runs.
Exemples
| Fichier | Module | Description |
|---|---|---|
sqlite_checkpoint_pipeline.cat |
sqlite3 | Checkpoint local atomique, invalidation SHA-256 et reconstruction d'un struct après thaw |
redis_nd_pipeline_checkpoint_openalex.cat |
redis | Checkpoint d'un pré-agrégat OpenAlex calculé en ND multiprocess, puis reprise via thaw |
redis_clear_checkpoint_openalex.cat |
redis | Supprime la clé Redis du checkpoint pour relancer l'exemple depuis zéro |
Données
data/openalex-works-sample.jsonl- Échantillon de 100 works OpenAlex (métadonnées de publications)
Exécution
SQLite ne nécessite aucun service externe. Le premier appel force un checkpoint miss ; le second restaure le rapport :
CATNIP_SQLITE_RESET=1 catnip codex/persistence/sqlite_checkpoint_pipeline.cat
catnip codex/persistence/sqlite_checkpoint_pipeline.cat
Le payload est écrit sous BEGIN IMMEDIATE, puis vérifié après fermeture et réouverture de la base. freeze sérialise
un record structurel ; après thaw, l'exemple reconstruit explicitement le struct nominal Checkpoint. Voir la
documentation SQLite sur les transactions.
Un troisième chemin ne demande aucune variable d'environnement : modifier data/openalex-works-sample.jsonl change son
empreinte SHA-256, et le run suivant annonce un miss « empreinte source modifiée » puis recalcule le rapport. C'est
l'invalidation automatique du checkpoint périmé.
Les exemples Redis nécessitent un serveur local (localhost:6379) :
catnip codex/persistence/redis_nd_pipeline_checkpoint_openalex.cat # run 1 : calcul + checkpoint
catnip codex/persistence/redis_nd_pipeline_checkpoint_openalex.cat # run 2 : reprise via thaw
catnip codex/persistence/redis_clear_checkpoint_openalex.cat # remise à zéro