2008-12-02 12 views
9

Für die agilen Praktiker da draußen ...Agile Entwicklung und Datenbankänderungen

Wie verwalten Sie Änderungen an einem Datenbankschema während eines Projekts? Ich gehe davon aus, dass sich in einem agilen Projekt das Schema jeder beteiligten Datenbank ändert und refaktoriert wird, genau wie es bei der Codebasis der Fall ist.

Ist diese Annahme richtig? Wenn ja, haben Sie bestimmte Tools oder Prozesse, mit denen Sie den reibungslosen Ablauf gewährleisten?

+0

einige Jahren (obwohl ich nicht um den Kauf oder es noch bekommen haben zu lesen), habe ich großen Erfolg mit [hatte Migration von Code First Entity Framework] (http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with- the- entity-framework -in-asp-net-mvc-applikation) um genau das zu erreichen! –

Antwort

7

AgileData.org ist eine hervorragende Ressource - viel mehr als ich in einer einzigen Antwort - auf Agile Database-Entwicklung. Insbesondere könnten Sie sich für Agile Data Best Practices interessieren. Wenn Sie SQL Server verwenden, könnten Sie auch an SQL Compare von Red Gate Software interessiert sein. Unsere Datenbankadministratoren haben es verwendet, um mir bei der Migration von Änderungen von QA zu Production für bestehende Anwendungen zu helfen.

+0

@redGate ist gut für dba. – dove

+0

Wir verwenden bereits ANTS von Red Gate und waren sehr zufrieden damit, also werde ich auf jeden Fall SQL Compare ausprobieren. Danke an tvanfosson! –

1

Im Idealfall machen Sie nicht brechende Änderungen, dann können Sie nach der Freigabe alte Teile des Schemas vollständig verwerfen. Das ist nicht einfach und erfordert Disziplin. Es ist nicht immer möglich.

0

Werfen Sie einen Blick auf Ruby on rails migrations. Es spielt keine Rolle, ob Sie Rails verwenden, da die Idee bereits in ein anderes Framework kopiert wurde.

2

In unserem Agile-Setup gibt es einen Ordner für DB-Änderungen, die als .SQL-Dateien erstellt werden. Bis jetzt hatten wir in jeder Version eine DB-Änderung, und die Datei ist nach der App-Version benannt. Das Installationsskript wendet automatisch alle Änderungsdateien an, wenn Websites aktualisiert werden.

Wir haben auch einen vollständigen Schemadump einer Referenzdatenbank, die für neue Installationen verwendet wird und von unserem DB-Verwaltungstool erstellt wurde.

Ich weiß, dass es Tools gibt, die helfen, diesen Prozess zu automatisieren, wie Red Gate, aber das manuelle Erstellen der SQL-Änderungsdatei ist sehr einfach.

5

Für jedes Update, würde ich sein:

  • Bereitstellung von Roll-Forward-und Rollback-Skripte,
  • einen "Aufbau der DB von Grund auf" Skript bereitstellen,
  • ein Datenmigrationsscript Bereitstellung und
  • Erzwingt einen Mechanismus, bei dem der Code mit der Datenbankversion verriegelt ist, dh es wird nach einem Wert gesucht, der die aktuelle Version der Datenbank zurückgibt. Bei einer Nichtübereinstimmung sperrt und blödelt das System laut über die Nichtübereinstimmung.

HTH

prost,

Rob

0

Die Datenbankstruktur ist höchstwahrscheinlich eine Abhängigkeit vieler Teile des Codes sein, und Schemaänderungen werden Kaskadeneffekte haben. So wie Änderungen an der Schnittstelle in einer Klasse, die viele Klassen erweitern. Seien Sie also vorsichtig mit Schemaänderungen.

Agile Methodologie unterscheidet sich nicht von anderen Methoden, da es zu Ihrem Vorteil ist, die Datenbank so weit wie möglich im Voraus zu gestalten, und Sie sollten versuchen, sie seltener als den Code zu ändern. Nicht zu sagen, dass Sie es nie ändern können, aber es ist teuer, dies zu tun.

Migrationen sind ein einfaches, aber effektives Werkzeug zum Verfolgen von Schemaänderungen, wie andere bereits festgestellt haben. Das Konzept besteht aus Skripten von CREATE- und ALTER-Anweisungen, um von einer Revision des Schemas auf die nächste zu aktualisieren, begleitet von Scripts von ALTER- und DROP-Anweisungen, um die gleichen Änderungen herabzustufen. Ruby on Rails verwendet darüber hinaus eine Datenbankabstraktionsschicht, um den Wechsel von Datenbankmarken zu erleichtern. Wenn Sie jedoch nur eine Marke unterstützen möchten, können Sie einfach SQL-Dateien verwenden.

Es ist ein hoch angesehenes Buch zu diesem Thema später „Refactoring Databases: Evolutionary Database Design“ von Scott Ambler

+0

Es ist in der Tat zu Ihrem Vorteil, die Datenbank gut zu ändern, so dass Sie sie zusammen mit Ihrem Code in häufigen Mikroänderungen migrieren können. Änderungen am Code waren auch kostspielig, bis wir die Praktiken und Tools entwickelt haben, um es billig zu machen. Das Gleiche muss und kann für Datenbanken passieren. –

+0

Richtig, wir haben leistungsstarke IDE-Tools, die Code-Refactoring-Änderungen über ein Projekt verbreiten können. Aber wir haben derzeit keine ähnliche Magie, um eine Änderung des Datenbankschemas über den gesamten Code, der es verwendet, zu verbreiten. –

Verwandte Themen