Safe schema evolution pour équipes PostgreSQL
Refactorez des schémas critiques sans perte de données, bloquez les migrations destructives plus tôt, et gardez un parcours de déploiement défendable.
Les outils classiques gèrent les changements de schéma comme une suite de scripts SQL. Ils aident à déployer une version, mais beaucoup moins à savoir si une refonte de modèle est vraiment sûre avant exécution.
CATRUSTDB transforme la migration en mapping explicite entre schémas. Vous pouvez valider, expliquer, tester et dérouler un changement critique avec moins de scripts fragiles et plus de garde-fous.
La promesse v1 reste concrète : migrations plus sûres, drift detection, rollback, CI/CD guardrails et parcours PostgreSQL-first.
Le changement cible est décrit explicitement avant exécution, avec un mapping lisible entre l'ancien schéma et le nouveau.
{"cmd": "plan_migration",
"from": "Company",
"to": "Organisation"}
Si un changement doit être annulé, l'équipe dispose d'un retour arrière guidé plutôt que d'un script de secours improvisé.
{"cmd": "rollback_preview",
"schema": "Company",
"migration": "RenameCompanyToOrg"}
Les incohérences et les risques sur les contraintes sont détectés avant le passage en production.
{"cmd": "validate_migration",
"target_schema": "Organisation",
"checks": ["fk", "shape", "drift"]}
| Fonctionnalité | CATRUSTDB | Flyway | Liquibase | dbt |
|---|---|---|---|---|
| Paradigme | Mapping de schémas vérifiable | Scripts SQL versionnés | Changelogs XML/YAML | Modèles SQL Jinja |
| Rollback | Retour exact guidé par le mapping | Script SQL undo manuel | rollback changeSet | Non natif |
| Validation | Pré-validation formelle | Aucune avant exécution | Hash + checksum | Tests post-exécution |
| Dépendance SQL | Zéro SQL | 100 % SQL | 100 % SQL | 100 % SQL |
| Sémantique | Transformations explicites et composables | Aucune | Aucune | Aucune |
| Incrémental | Checkpoint et reprise | Via script manuel | Via contexts | Via incremental models |
| Snapshot 1M lignes | 93 ms (13.5x) | - | - | - |
| Chargement 1M lignes | ~5 ms (~700x) | - | - | - |
| Lignage automatique | Journal des transformations | Non | Changelog | DAG de modèles |
Schéma source: Company
Entities
- Employee(name, salary)
- Department(dept_name)
- works_in: Employee -> Department
Schéma cible: Org
Entities
- Staff(full_name, pay)
- Team(team_name)
- member_of: Staff -> Team
Correspondances
- Employee -> Staff
- Department -> Team
- emp_name -> full_name
- salary -> pay
- dept_name -> team_name
- works_in -> member_of
# Chargement + migration en une commande
echo '{"cmd":"load","schema":"Company","dataset":"snapshot-prod-2026-04"}' | nc localhost 7474
echo '{"cmd":"run_migration","target_schema":"Org","migration":"RenameCompanyToOrg"}' | nc localhost 7474
-> {"ok":true,"schema":"Org","entities":[{"name":"Staff","rows":3},{"name":"Team","rows":2}]}
# Rollback : retour guidé vers Company
echo '{"cmd":"rollback_preview","source_schema":"Company","migration":"RenameCompanyToOrg"}' | nc localhost 7474
API native pour microservices et scripts. Client Python inclus (zéro dépendance).
from catrustdb import connect
db = connect(port=7474)
db.load(schema="company_v1", dataset=payload)
rows = db.query("employees.limit(10)")
Compatible psql, JDBC, SQLAlchemy. Utilisez vos outils SQL habituels.
psql -h localhost -p 5433
SELECT * FROM Employee
LIMIT 10;
Transfert haute performance pour l'analytique. Zéro-copy vers pandas et Polars.
import pyarrow.flight as fl
client = fl.connect("grpc://localhost:32100")
df = client.do_get(
fl.Ticket(b'{"entity":"Employee"}')
).read_all().to_pandas()
docker run -p 7878:7878 catrustdb/catrust:latest
Les releases publiques sont temporairement retirées. Voir la page de statut des téléchargements.
catrust serve --project mon_schema
# -> Studio web sur http://localhost:7878
pip install catrustdb
from catrustdb import connect
with connect(port=7474) as db:
db.load(schema="company_v1", dataset=open("employees.ndjson").read())
db.apply_migration("RenameCompanyToOrg")
print(db.query("employees.limit(10)"))
Flyway suppose que vous savez écrire du SQL correct. CATRUSTDB suppose que vous voulez prouver que votre migration est correcte.
| Situation | Flyway | CATRUSTDB |
|---|---|---|
| Va-t-elle casser des FKs ? | Découverte en prod | validate_migration avant exécution |
| Puis-je revenir en arrière ? | Script undo manuel | Retour exact garanti |
| Mes migrations composent-elles ? | Pas de garantie | Oui, avec transformations explicites |
| Quelle est la lignée ? | Logs manuels | Journal des transformations automatique |