Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten aus Datenbank in Speicher halten?! (https://www.delphipraxis.net/165497-daten-aus-datenbank-speicher-halten.html)

BUG 8. Jan 2012 23:21

AW: Daten aus Datenbank in Speicher halten?!
 
Zitat:

Zitat von Furtbichler (Beitrag 1144939)
Wir müssen (bzw. wollen) bis zu 5000 Aufträge im Speicher halten, weil die Disponenten beim Anruf eines Kunden schnell die richtigen Aufträge finden müssen. Eine Query dauert dann leider doch etwas, weil auch Großkunden mit mehreren Hundert Aufträgen dabei sind. Und pro Auftrag sind es 300-400 Details, die mit geladen werden, also schon einiges an Daten.

Das Finden und Filtern der Aufträge sowie das Einpflegen der Änderungen sollte ja möglichst bereits in der Datenbank geschehen. Durch das Bearbeiten im Client gibt es ja einige Probleme:
  • Zumindest die Übertragung großer Datenmengen.
  • Redundanz (Clientdaten <-> Serverdaten), dadurch vielleicht unterschiedliche Version bei verschiedenen Nutzern.
  • Keine Transaktionen.
  • Geänderte Daten sind nicht crashsave in der Datenbank, sondern liegen beim Client im Speicher.

Andererseits könnte man das Ganze als Caching* bezeichnen, was ja nötig sein kann, wenn der Rechner schlecht an das Datenbanksystem angebunden ist.
Aber bei einer lokalen Datenbank sollte es in den meisten Fällen Schwachsinn sein.

* Obwohl ich 5000+ Datensatze irgendwie schon ziemlich extrem finde.


Achtung:
Das ist die Sicht, die ich aktuell nach dem Genuss einer (einzigen) Datenbankvorlesung habe.
Ich will nicht behaupten, dass du bei deinem konkreten Anwendungsfall etwas falsch machst.

Furtbichler 9. Jan 2012 07:27

AW: Daten aus Datenbank in Speicher halten?!
 
Alle diese Probleme sind gelöst, durch Recordlocking, transaktionssicheres Ändern etc.

Die 5000 Datensätze quasi live zu zeigen waren auch wirklich ein ganz schönes Problem, vor allen Dingen das clientseitige Sperren in der GUI.

In einer lokalen DB kann es auch nötig sein, eine in-Memory Kopie der Daten zu haben. So eine lokale DB benötigt ja auch einiges an Zeit, leider.

hans ditter 9. Jan 2012 16:43

AW: Daten aus Datenbank in Speicher halten?!
 
Ich hab grad so in den letzten Beiträgen rausgehört, dass mein Vorhaben Irsinn ist. Aber dann würde ich euch gerne mal fragen, wie man das dann am Besten löst. Es ging mir vor allem darum, dass man durch die Datensätze navigieren kann.
Mein erster Ansatz war dann ja, dass ich einfach für den nächsten bzw. vorigen Datensatz eine neue Abfrage starte.
Der zweite Ansatz war dann jetzt, die Daten aus der DB in den Speicher zu ziehen (z.B. mit Klasse und ObjectList) um einfach navigieren zu können, ohne die DB bei jedem Vor/Zurück anzusprechen.

Ist das nicht der richtige Ansatz? Denn letztlich muss doch ein StringGrid o.ä. die angezeigten Daten auch im Speicher halten...

nachti1505 12. Jan 2012 11:43

AW: Daten aus Datenbank in Speicher halten?!
 
Ich unterstelle jetzt einfach mal keine jahrelang CodingXperience. In diesem Fall würde ich dringend auf die datensensitiven Controls von Delphi verweisen. Einfacher kann man eine derartige Applikation nicht entwerfen.

Auch hier werden je nach Implementation die Daten im Speicher gehalten (TDataset-Nachfahre), allerdings sind das erprobte Komponenten. Die TObjectList-Lösung ist imho schon um einiges aufwendiger zu programmieren.

hans ditter 12. Jan 2012 14:50

AW: Daten aus Datenbank in Speicher halten?!
 
@Nachti: Einfacher ist es in jedem Fall... aber darum geht es ja gerade: ich will lernen, also nehm ich nicht immer den einfachsten Weg.
Ich hab diesen Thread nicht aufgemacht um möglichst schnell mein Programm fertig zu bekommen, sondern um bessere Alternativen kennenzulernen und sie umzusetzten.

Zu dem zweiten Teil deines Posts: werden die Daten nur bei bestimmten Datensensitiven Komponenten im Speicher gehalten? Ich frage, weil du schriebst "TDataset-Nachfahren" und "je nach Implementation".

LG; hans ditter


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz