Safe schema evolution pour equipes PostgreSQL
Refactorez des schemas critiques sans perte de donnees, bloquez les migrations destructives plus tot, et gardez un parcours de deploiement defendable.
Les outils classiques gerent les changements de schema comme une suite de scripts SQL. Ils aident a deployer une version, mais beaucoup moins a savoir si une refonte de modele est vraiment sure avant execution.
CATRUSTDB transforme la migration en mapping explicite entre schemas. Vous pouvez valider, expliquer, tester et derouler un changement critique avec moins de scripts fragiles et plus de garde-fous.
La promesse v1 reste concrete : migrations plus sures, drift detection, rollback, CI/CD guardrails et parcours PostgreSQL-first.
Le changement cible est decrit explicitement avant execution, avec un mapping lisible entre l'ancien schema et le nouveau.
{"cmd": "plan_migration",
"from": "Company",
"to": "Organisation"}
Si un changement doit etre annule, l'equipe dispose d'un retour arriere guide plutot que d'un script de secours improvise.
{"cmd": "rollback_preview",
"schema": "Company",
"migration": "RenameCompanyToOrg"}
Les incoherences et les risques sur les contraintes sont detectes avant le passage en production.
{"cmd": "validate_migration",
"target_schema": "Organisation",
"checks": ["fk", "shape", "drift"]}
| Fonctionnalite | CATRUSTDB | Flyway | Liquibase | dbt |
|---|---|---|---|---|
| Paradigme | Mapping de schemas verifiable | Scripts SQL versionnes | Changelogs XML/YAML | Modeles SQL Jinja |
| Rollback | Retour exact guide par le mapping | Script SQL undo manuel | rollback changeSet | Non natif |
| Validation | Pre-validation formelle | Aucune avant execution | Hash + checksum | Tests post-execution |
| Dependance SQL | Zero SQL | 100 % SQL | 100 % SQL | 100 % SQL |
| Semantique | Transformations explicites et composables | Aucune | Aucune | Aucune |
| Incremental | 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 modeles |
Schema source: Company
Entities
- Employee(name, salary)
- Department(dept_name)
- works_in: Employee -> Department
Schema 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 guide vers Company
echo '{"cmd":"rollback_preview","source_schema":"Company","migration":"RenameCompanyToOrg"}' | nc localhost 7474
API native pour microservices et scripts. Client Python inclus (zero dependance).
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. Zero-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 retirees. Voir la page de statut des telechargements.
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 ecrire du SQL correct. CATRUSTDB suppose que vous voulez prouver que votre migration est correcte.
| Situation | Flyway | CATRUSTDB |
|---|---|---|
| Va-t-elle casser des FKs ? | Decouverte en prod | validate_migration avant execution |
| Puis-je revenir en arriere ? | Script undo manuel | Retour exact garanti |
| Mes migrations composent-elles ? | Pas de garantie | Oui, avec transformations explicites |
| Quelle est la lignee ? | Logs manuels | Journal des transformations automatique |