Laden...

Verwaltung von Datasets

Erstellt von -Hades- vor 10 Jahren Letzter Beitrag vor 10 Jahren 446 Views
-
-Hades- Themenstarter:in
171 Beiträge seit 2007
vor 10 Jahren
Verwaltung von Datasets

verwendetes Datenbanksystem: MySql

Hallo,

ich schreibe gerade an einem Programm welches eine relativ große ( >40 Tabellen) Datenbank nutzt. Ich wollte hier nach Erfahrungen im Umgang mit den Datasets erkundigen. Zur Zeit habe ich mehrere ControllerKlassen geschrieben, welche jeweils Datasets besitzen und für bestimmte Teile der Datenbank zuständig sind.
Allerdings wird das mittlerweile recht viel Aufwand, da für jeden Controller Events geschrieben werden müssen und die Datasets geupdated werden müssen etc.
Da das theoretisch ja auch alles in einer Klasse mit einem TableAdapterManager und einem Dataset funktionieren würde bin ich mir nicht mehr ganz so sicher ob es klug war das alles so aufzuteilen.
Generell frage ich mich auch wie ich es am geschicktesten anstelle alles aktuell zu halten. Die naive Lösung ist natürlich die Datasets bei jeder Methode in der Informationen aus der Datenbank gebraucht werden erneut durch den TableAdapterManager zu füllen, was bei vielen Daten und vor allem wenn die Datenbank nicht lokal verfügbar ist, sehr lange dauert und nicht praktikabel ist.
Also würde ich jetzt die Datasets (oder ab jetzt vielleicht das eine Dataset) in einem Hintergrundthread komplett füllen. Damit wären die Daten lokal, allerdings brauche ich dann ein Konzept zum Updaten, da mehrere Clients auf die Datenbank zugreifen können und auch verändern können. Vielleicht gibt es dafür ja schon Mechanismen mit denen einige von euch Erfahrung haben.

Also die Fragen die ich mir stlele noch einmal als Stichkpunkte:

  • Ein Dataset für alles oder Spezialisierungen
  • Update-Mechanismus für die Datasets (mehrere Clients vorhanden)

Vielen Dank im voraus für eure Meinungen.

Gruß -Hades-

3.825 Beiträge seit 2006
vor 10 Jahren

Hallo Hades,

Die naive Lösung ist natürlich die Datasets bei jeder Methode in der Informationen aus der Datenbank gebraucht werden erneut durch den TableAdapterManager zu füllen, was bei vielen Daten und vor allem wenn die Datenbank nicht lokal verfügbar ist, sehr lange dauert und nicht praktikabel ist. Also würde ich jetzt die Datasets (oder ab jetzt vielleicht das eine Dataset) in einem Hintergrundthread komplett füllen.

ja, das ist naiv und keinesfalls empfehlenswert.

Du solltest immer nur genau die Daten aus der Datenbank laden die Du gerade brauchst und auch möglichst schnell wieder speichern.

Mit Datasets meinst Du sicher typisierte DS. Diese werden nicht mehr so gerne genommen. Ich benutze entweder untypisierte DS oder gleich einen O/R-Mapper.

da mehrere Clients auf die Datenbank zugreifen können und auch verändern können. Vielleicht gibt es dafür ja schon Mechanismen mit denen einige von euch Erfahrung haben.

Ja, schau nach "Optimistic und Pessimistic Locking".

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3