27.092013

phinx: Datenbankänderungen in php Projekten verwalten

phinx ist ein schlankes, auf github gehostetes Tool, dass es erlaubt, die Entwicklung des Datenbankschemas einer Anwendung datenbankunabhängig in objektorientiertem Code abzubilden, ohne weitere Einschränkungen zu verlangen -- es wird z.B. kein ORM vorausgesetzt.

Am einfachsten und saubersten ist die Benutzung von phinx aktuell noch, wenn man es von Anfang an in einem Projekt einsetzen kann -- es existiert noch kein Werkzeug, das den Ist-Zustand einer Datenbank als initiale Migration importieren kann.

Migrationen -- Datenbankänderungen die mit Softwareaktualisierungen einher gehen -- sollten grundsätzlich reversibel sein. phinx bildet Migrationen auf Klassen ab. Man hinterlegt eine nötige Änderung für ein Update in der up()-Methode -- wird das Softwareupdate zurückgenommen, wird die down()-Methode der entsprechenden Klasse aufgerufen. Der aktuelle Release von phinx unterstützt neben MySQL auch PostgreSQL -- und bietet als besondere Vereinfachung für einige Operationen die automatische Erkennung der nötigen down()-Schritte an, es muss nur noch der Upgrade-Fall als Methode change() implementiert werden.

Aktuell haben wir phinx noch nicht im Einsatz, ich werde die Enwicklung jedoch interressiert verfolgen und überlegen, wie wir phinx in unsere Abläufe integrieren können.