Zitat: |
Aber du muss die Daten dahin transportieren wo du denn Vergleich auf Änderung machst und du musst dafür sorgen das sich der Dateninhalt zwischen prüfen und tatsächlichem schreiben nicht mehr ändert. |
Stimmt, daran hab ich nicht gedacht ...
Aber dass sich die Daten zwischenzeitlich ändern, ist denke ich mal eher unwahrscheinlich.
Die Software soll dazu dienen, private Medien-Dateien zu verwalten und die Datenbank liegt daher auch lokal auf dem Rechner. Andere Clients greifen also gar nicht darauf zu und zwei parallele Zugriffe auf den selben Datensatz würden dann beispielsweise nur vorkommen, wenn die Anzahl, wie oft ein Titel gespielt wird, sich zu selben Zeit ändert. Aber ich denke mal, das löse ich so, dass das Counter-Update erst dann los geschickt wird, wenn das Objekt, welches den betreffenden Titel beschreibt, in keiner weiteren Datenbank-Verbindung verarbeitet wird.
Ganz sicher ist das nicht, da prinzipiell zwei Objekte den selben Datensatz beschreiben können, aber da ja nur ein Client darauf zugreifen kann, wird das nicht mehr so das Problem sein, denke ich.
Zitat: |
Es ist in solchen Fällen oft hilfreich ein berechnetes Feld zu hinterlegen (Timestamp, GUID, Counter der letzten Änderung, Hash der Daten etc.) gegen das man beim update leicht prüfen kann unabhängig davon wie groß ein Datensatz wirklich ist. |
Meinst du damit, dass ich dann z.B. ein TimeStamp-Feld anlege, das die letzte Änderung des Datensatzes beinhaltet und das Gegenstück innerhalb des Objektes wird immer aktualisiert, wenn eine Eigenschaft geändert wird?
Das bringt mich auch gleich auf die Idee, zu jeder Eigenschaft noch einmal extra Informationen zu speichern, die nur angeben, ob die Eigenschaft nach dem letzten Datenbank-Update geändert wurde, das lässt sich ja einfach mit einer kleinen Klasse lösen, die das Eigenschafts-Objekt und eine Eigenschaft vom Typ boolean beinhaltet.
Meintest du das so, oder ähnlich?
Der Großteil meiner Erfahrungen mit SQL beruht sich leider nur auf die Theorie, das versuche ich ja gerade zu ändern.
Grüße ^^