Xalg / Fix / La persistance : les bases `.fixdb`
Navigation
Apprendre
Recettes
Référence
Comprendre
Bonnes pratiques
En pratique
Explications

La persistance : les bases .fixdb

Par défaut, une session Fix vit en mémoire : tu charges, tu satures, tu interroges — et à la sortie, tout s'efface. Pour garder tes faits d'une session à l'autre, ouvre une base durable avec --db.

La fiche exacte reste :help fixdb (l'autorité). Cette page raconte le pourquoi et le comment large.


Créer une base

Une base se crée à partir d'un fichier source, une fois :

$ fix --db notes.fixdb notes.fix
fix: base créée — notes.fix ingéré.
Fix v3.1.0 — 2 faits, 0 règles → fixpoint : 2 faits

La source est ingérée à la création, et seulement là. Ensuite, c'est la base qui fait autorité — plus le fichier.


Rouvrir : tout est là

À la réouverture, tu ne passes plus de source — la base se rouvre à son dernier état. Ce que tu ajoutes est persisté :

$ fix --db notes.fixdb
Fix v3.1.0 — 2 faits, 0 règles → fixpoint : 2 faits

?- :assert note(idee, "documenter fixdb").
ok — fait asséré. Fix v3.1.0 — 3 faits, 0 règles → fixpoint : 3 faits

?- note(K, V).
K = projet, V = relire la spec
K = idee, V = documenter fixdb

Ferme, rouvre : le fait idee est toujours là. :assert et :retract mutent la base ; :load y ingère un autre fichier. Chaque changement est enregistré, durablement.


La source n'est plus l'autorité

Une fois la base créée, lui repasser un fichier en ligne de commande est refusé — pour ne pas écraser silencieusement ce que la base contient :

$ fix --db notes.fixdb notes.fix
fix: base existante `notes.fixdb` — les sources en ligne de commande ne sont
ingérées qu'à la CRÉATION. Utilise `:load notes.fix` pour ingérer (journalisé).
    → :help fixdb

Pour la même raison, :reload (qui, en mémoire, recharge le fichier) n'a pas de sens ici et est refusé : la base est la vérité, pas le fichier.


Entretenir la base

?- :db
base active : notes.fixdb
  transactions acquittées (journal) : 2

Les bords honnêtes


À côté