Ich habe hauptsächlich in der Entwicklung von Geschäftsanwendungen und Konfigurationsmanagement gearbeitet. Ihre Frage ist repräsentativ für die Herausforderungen in einer solchen Umgebung; Wenn Sie beispielsweise Microsoft Word aktualisieren, müssen Sie nicht alle Dokumente direkt von doc nach docx ändern. Und die Dokumente haben sogar eine einfachere Struktur einer vollständigen Beziehungsdatenbank.
Nicht so für Geschäftsanwendungen; Benutzer überspringen Releases, machen unerlaubte Änderungen am Datenmodell und das System muss weiter laufen und die richtigen Nummern bereitstellen ...
Wir verwenden für unsere eigenen Anwendungen (das größte ist wie 600 Tabellen) ein selbstentwickeltes CASE-Tool Dies umfasst die Verzweigung/Zusammenführung, aber der Ansatz kann auch manuell durchgeführt werden.
Versioning Datenmodell
Das Datenmodell kann nach unten in einer strukturierten Art und Weise geschrieben werden. Zum Beispiel als Tabelleninhalt (CSV, um in eine Tabelle mit Metadaten geladen zu werden) oder als Code, der die verwendete Version erkennt und Spalten und Tabellen hinzufügt, wenn sie fehlen, einschließlich nicht-trivialer Migrationen.
Dies ermöglicht sogar mehreren Benutzern gleichzeitig das Datenmodell zu ändern.
Wenn Sie die automatische Erkennung verwenden (z. B. verwenden wir einen Aufruf namens "verify_column" anstelle von "add_column"), ermöglicht dies sogar eine reibungslose Migration unabhängig von der Versionsnummer, von der der Kunde das Upgrade startet. Eine solche Prozedur analysiert die zu ändernde Tabelle und gibt die korrekte DDL aus, z. B. alter table t1 add col1 number not null
, wenn eine Spalte fehlt, oder alter table t1 modify col1 not null
, wenn die Spalte bereits vorhanden, aber nicht löschbar ist.
Für Oracle und SQL Server kann ich Ihnen ein paar Beispielprozeduren zur Verfügung stellen. In MySQL würde ich dies mit einer Client-seitigen Sprache kodieren, vorzugsweise vom Betriebssystem unabhängig, damit Installationen unter Windows und Linux ausgeführt werden können. Vielleicht mit Apache Ant, wenn Sie damit Erfahrung haben.
Versioning Daten
Wir teilten die Tabellen in vier Kategorien:
- R: Referenzdaten; Daten, die die Anwendungssite bereitstellen muss, bevor er das System tatsächlich verwendet. Zum Beispiel Hauptbuchkontencodes. Die Referenzdaten ändern sich selten nach dem Produktivstart und wachsen nicht kontinuierlich. Die Inhalte spiegeln das Geschäftsmodell der Website wider, in dem die Anwendung verwendet wird.
- T: Transaktionsdaten; Daten, die die Website während der Nutzung der Anwendung registriert, ändert und entfernt. Zum Beispiel Hauptbucheinträge. Die Transaktionsdaten beginnen bei 0 und wachsen kontinuierlich. Wenn sich das Unternehmen verdoppelt, verdoppelt sich auch die Transaktionsmenge.
- S: gesetzte Daten; Daten, die NICHT vom Benutzer auf der Site gepflegt werden, aber von der sich entwickelnden Partei zur Verfügung gestellt und gepflegt werden. Im Wesentlichen wird Code in Daten umgewandelt. Zum Beispiel steht "F" für "Weiblich". Fehler in den gesetzten Daten können zu Systemfehlern führen.
- O: der Rest (im Idealfall nicht erforderlich, da sie technisch sind, aber einige Systeme benötigen einen temporären Tisch A oder einen Scratch-Tisch B).
Der Inhalt von Tabellen der Kategorie 'S' (gesetzte Daten) steht unter Versionskontrolle. Normalerweise registrieren wir diese als Metadaten in unserem Fall-Tool, dann "Datensätze" genannt, aber Sie können auch zum Beispiel Microsoft Excel oder sogar Code verwenden.
Zum Beispiel, in Excel würden Sie eine Liste von Zeilen mit gesetzten Daten haben. In Spalte A können Sie eine Excel-Funktion wie =B..&"|"&C..& "|" & ...
eingeben, die alles verkettet und zum Laden mit einem Loader-Tool geeignet macht.
Zum Beispiel in Code, können Sie einen Anruf wie haben:
verifySeed('TABLE_A', 'CODE', 'VALUE')
Das Excel ist ein wenig schwer unter Versionskontrolle zu bringen mehr Benutzer ermöglichen Inhalte in der gleichen Zeit zu ändern. Der Ansatz mit Code ist sehr einfach.
Denken Sie daran, Funktionen hinzuzufügen, um veraltete Daten zu entfernen. Zum Beispiel durch explizites Auflisten von veralteten, gesetzten Daten oder durch automatisches Entfernen aller gesetzten Daten, die in den Tabellen vorhanden sind, aber nicht von der letzten Installation berührt wurden.
Das kann für Sie interessant sein: http://stackoverflow.com/questions/6409204/database-migrations-in-a-complex-branching-system –
hi @Stevie G Hat eine der Antworten Ihnen geholfen, Ihre Frage zu lösen? ? Wenn nicht, füge bitte hinzu, was deiner Frage nicht erfolgreich war. Wenn Ihnen eine Antwort geholfen hat, können Sie sie akzeptieren, indem Sie auf das grüne Häkchen daneben klicken? –