Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank Updatescript

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank Updatescript

    Hi,

    Nachdem ich hier die Forensuche genutzt habe und leider noch nichts passendes dazu gefunden habe, erstelle ich hier mal einen neuen Thread.

    Es geht dabei um folgendes:
    Ich habe ein fertiges System mit funktionierendem Updater, der die Pakete vom Server herunterlädt, diese entpackt und dann eine upgrade.php oder eine update.php ausführt, in welches dann manuell die ganzen MySql Queries ausgeführt werden.
    Soweit so gut.

    Das Problem ist jetzt nur, dass die Datenbank auch öfters geupdatet werden soll und diese Updates auch mittlerweile automatisch generiert werden.
    Ich habe aber leider noch nicht die passende Lösung dafür gefunden, wie ich den am einfachsten die Datenbank Updates erstelle.
    Am einfachsten ist es wohl, wenn die Datenbankstruktur automatisch in XML Dateien gespeichert wird und dann beim Client die MySql Queries automatisch generiert und ausgeführt werden.
    Dabei wird die aktuelle Datenbankstruktur mit der Datenbankstruktur in der XML Datei verglichen.

    Jetzt die Frage:
    Wie stellt man sowas am besten an?
    Gibt es bereits Libs, die so etwas implementieren, sodass man dies nicht alles neu programmieren müsste oder habt ihr bessere Ansätze?

    Vielen Dank schonmal!


  • #2
    Google nach "Database Migration", Doctrine z.B. hat ein ganzes Migrations-Bundle für sowas.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Kommt ein wenig drauf an. Wenn man eine Anwendung hat, die sehr spezifische Anforderungen an Datenbankmigration stellt, dann kommt man schnell mit einfachen Mitteln nicht weiter. Wenn man beispielsweise Änderungen an einer Datenbank nur auf Grund einer beispielsweise in XML formulierten Struktur vergleicht und erzeugt, dann kann man uU schnell Daten verlieren. Teils muss man Daten erst zwischenspeichern und beim zurückspielen in ein neues Format überführen. An anderer Stelle soll nur ein Feld umbenannt werden, ohne dass dabei Daten verloren gehen sollen. Vielleicht sollte man auch dran denken, dass die ein oder andere Lösung keine Möglichkeit bietet, datenbankspezifische Features zu nutzen. Die Königsdisziplin ist dann ein Rollback der bislang ausgeführten Änderungen, wenn zwischendrin etwas schief läuft.

      Es gibt schon eine reihe Tools, die sowas können. Hab da bislang aber nur mit eigenen Tools gearbeitet.
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        Zitat von rkr Beitrag anzeigen
        Die Königsdisziplin ist dann ein Rollback der bislang ausgeführten Änderungen, wenn zwischendrin etwas schief läuft.
        ROLLBACK von Schema-Änderungen kannst Du bei MySQL vergessen. Auch, soweit ich weiß, bei Oraggle. Das kann - tätää - PostgreSQL.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ich danke euch für eure Antworten!
          Gibt es vllt. eine Versionsverwaltung wie Git, die auch Datenbanken versioniert?

          Kommentar


          • #6
            Du kannst Datenbank selber versionieren, das sind am Schluss auch nur einzelne Dateien... Das kann einfach auch sehr schnell gefährlich werden.

            Aber als Fortgeschrittener solltest du wissen, dass du das zuerst in einer Testumgebung ausprobierst bis es funktioniert .
            GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

            Kommentar


            • #7
              Zitat von JuKu Beitrag anzeigen
              Ich danke euch für eure Antworten!
              Gibt es vllt. eine Versionsverwaltung wie Git, die auch Datenbanken versioniert?
              tkausl hat mit "database migration" schon das entsprechende Stichwort geliefert. Viele Frameworks bringen das auch von Haus aus mit, da sich das Problem eigentlich ständig ergibt.

              Kommentar

              Lädt...
              X