Frage

Ich entwickle eine App mit dickem und dünnem Klientkomponenten. Wir Versionen unserer Datenbank, so dass Schemaänderungen zu ihrer eigenen Versionsnummer führen und Skripte ändern können. Datenbankänderungen treten jedoch nicht immer im Schritt mit dicken Änderungen des Klienten auf. Ja, die heutige Änderung der Datenbank könnte eine Spalte hinzufügen und in einem dicken Klient eine Änderung von morgen benötigen, aber die Datenbankänderung von morgen kann einen Fehler in einem gespeicherten Verfahren beheben, für die keine externen Änderungen erforderlich sind. Wie kann ich den dicken Klient codieren, um zu testen, ob er mit einer bestimmten Datenbankversion kompatibel ist, wenn einige rückwärts kompatibel sind und einige nicht?

In dem selbst, den sich jeder interessiert, ist unsere .NET -App, die sich in SQL Server integriert, aber dies scheint eher eine Versionsfrage als eine Plattformfrage zu sein. Es sei denn, es gibt eine plattformspezifische Lösung ...

War es hilfreich?

Lösung

Sie können eine Tabelle erstellen, z. Metadaten mit zwei Saitenspalten und geben Sie dort einen Eintrag (oder mehr Einträge) mit der aktuellen Version des Schemas ein. Ich nehme an, dass Sie jetzt etwas Ähnliches tun.

Und teilen Sie die Version in zwei Zahlen (wie Major/Moll -Schema). Wenn Sie das Schema in Nicht-Rückwärtskompatibilen-Weise ändern, erhöhen Sie die Hauptversion. Nach rückwärtskompatibler Änderung aktualisieren Sie einfach eine Minor -Version.

Major wird von App verwendet, um zu überprüfen, ob es mit dem aktuellen Schema kompatibel ist, und Major+Minor wird verwendet, um zu überprüfen, ob Sie das Schema aktualisieren können/müssen.

Ich denke, dies ist die Lösung, die von den meisten Anwendungen verwendet wird.

Andere Tipps

Könnten Sie ein Haupt-/Minor -Versionsnummernschema annehmen?

Eine Änderung der Hauptnummer impliziert, dass Kunden aktualisiert werden müssen, und die Änderung der geringfügigen Zahl nicht.

Bei irgendeinem von diesen nimmt die Versionszahlen immer zu.

Wenn die Datenbank die benötigte minimale Clientversion kennt und der Client die erforderliche minimale Datenbankversion kennt, ist es eine einfache Überprüfung, um zu bestimmen, was aktualisiert werden muss (wenn überhaupt) - ob Sie die Logik in einem gespeicherten Prozedur oder in in Einklang bringen, oder in Code, das ist deine Entscheidung ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top