Alexander, W.: Automatisches Update

Hallo,

welche Möglichkeiten konkret gibt es ein automatisches Update zu implementieren?

D.h.

1.) Der Kunde nutzt ein Produkt von mir auf seinem eigenen Server/Webspace.
2.) Ich erstelle eine neuere Version, in der sich sowohl Scripte als auch die Datenbankstruktur und -daten verändern.
3.) Das Produkt soll sich auf Kundenwunsch selbstständig updaten können.

Mir ist bekannt, wie ich die Daten übertrage. Nicht ganz klar ist, wie ich OHNE VIEL AUFWAND die Daten der Datenbank update ohne dabei Kundendaten zu löschen bzw. zu überschreiben.

Fallbeispiel: Es gibt eine Tabelle mit dem Namen "language_variables", in der alle sprachbezogene Daten gespeichert werden. D.h. alle Zeichenketten, die innerhalb des Produkts "ausgegeben" werden. Nun ändert ein Kunde in seiner Produktkopie ein paar Zeichenketten. Die sollen beim Update nicht überschrieben werden.

Das gleiche gilt für Scripte.

Wie kann man vorgehen, wenn es sich um mehrere Tausend Zeilen handelt? Gibt es dafür fertige Muster? Wie macht sowas z.B. wordpress?

Danke.
Gruß Alexander.

  1. Moin Moin!

    Fallbeispiel: Es gibt eine Tabelle mit dem Namen "language_variables", in der alle sprachbezogene Daten gespeichert werden. D.h. alle Zeichenketten, die innerhalb des Produkts "ausgegeben" werden. Nun ändert ein Kunde in seiner Produktkopie ein paar Zeichenketten. Die sollen beim Update nicht überschrieben werden.

    Warum sollte der Kunde so etwas machen?

    An übersetzten Meldungen des Programms (Systemdaten) hat der Kunde nicht herumzupfuschen, macht er es doch, hat er Pech gehabt. Insbesondere, wenn er kein Backup pflegt.

    Wenn in der Tabelle z.B. Informationen über irgendwelche Waren (Nutzerdaten) stehen, hast Du daran nicht herumzupfuschen.

    Wie kann man vorgehen, wenn es sich um mehrere Tausend Zeilen handelt?

    for (i:=0; i<count; i:=i+1) {
      updateSingleRow(i);
    }

    Problem reduziert auf eine Zeile. Implementiere updateSingleRow().

    Wie macht sowas z.B. wordpress?

    Nutzerinhalte und Systemdaten trennen, würde ich mal vermuten.

    Zum Beispiel, in dem Du in der Tabelle ein Flag mitführst, dass zwischen System und User unterscheidet. updateSingleRow() fragt dann mit als erstes das Flag ab und springt sofort zurück, wenn das Flag nicht "System" sagt.

    Oder indem Du zwei Tabellen benutzt, je nach dem, wie Dein System gestrickt ist. updateSingleRow() faßt dann nur die System-Tabelle an.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".