AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Viele Datensätze schnell aus Datei in Grid laden ...
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Datensätze schnell aus Datei in Grid laden ...

Ein Thema von mjustin · begonnen am 12. Aug 2010 · letzter Beitrag vom 13. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#1

Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 12. Aug 2010, 22:39
Hallo,

folgende Aufgabe würde ich gerne in Delphi 2009 Enterprise mit Standardkomponenten lösen (wozu ich in diesem Fall auch das QuantumGrid zähle, die in den Anwendungen bereits eingesetzt werden):

Ein Datenbestand mit ca. 100k Datensätzen zu jeweils 50 Feldern wird nachts von einem (Delphi-)Programm erzeugt. Diese Daten sollen von den FachanwenderInnen tagsüber dann in einer Delphi GUI Anwendung geöffnet, in einem QuantumGrid angezeigt und über Filterkriterien auf die gesuchten Daten eingeschränkt werden (z.B. von-bis Datum).

Ich würde es naiv mit einem TClientDataSet versuchen, das man als XML oder binär im Nachtjob abspeichert und dann in der Delphi GUI einliest. Aber ist das ausreichend schnell / resourcenfreundlich (es ist eine Terminalserverumgebung)? Oder überschreitet es die aktuellen ClientDataSet-Belastungsgrenzen zu sehr?

Das Ziel ist es vor allem durch den nächtlichen Lauf die Datenbank zu entlasten, und die Daten halbwegs schnell auf den Bildschirm zu bringen. Denkbar wäre, dass man die gewünschten Sätze bereits während des einlesens der Datei ausfiltert, oder nach dem Einlesen zuerst einen ClientDataSet Filterausdruck setzt, bevor die DataSource mit dem Grid verbunden wird. Auch das Cachen und Filtern auf einem Applikationsserver und Übertragung per DataSnap wäre möglich.

Also gesucht ist eine Lösung für diese Aufgabe, bei der t minimiert werden soll:

Grosse Anzahl Datensätze -> [Zeit t vergeht] -> Laden der Daten in eine Gridkomponente
Michael Justin
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 07:59
Hallo,

100k Datensätzen zu jeweils 50 Feldern -> = 5 Mio. Werte
Wer will die denn auf einmal sehen

Die alle auf Verdacht zu laden und danach zu filtern, ist doof

Lasse den User vorher die Filter-Kriterien festlegen
und lade nur die Daten, die er tatsächlich haben will.
Oder lege selber fest, dass standardmäßig z.B. nur die Daten von gestern angezeigt werden (Datums-Filter)

Ausserdem würde ich bei der Anzeige selber nochmal die gerade anzuzeigenden Datenmengen prüfen
und bei Bedarf eine Meldung "zu viele Datensätze, bitte mit Filer einschränken" anzeigen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 08:40
100k Datensätze mit 50 Spalten: Da dürfte jedes aktuell DBMS darüber lachen und die Daten sehr schnell zum Client liefern können. Vorrausgesetzt die HW ist für einen Server halbwegs aktuell und man hat bei der DB-Konfiguration nix falsch gemacht.

Auch die Darstellung sollte kein Problem sein - wenn man den in der Implementierung nix falsch macht.

Ich würde eher den Ansatz wählen das maximal (konfigurierbar) x Datensätze im Grid darstellbar sind und am Ende dann 'ne Meldung kommt "Bitt genauer einschränken".
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 08:43
Die alle auf Verdacht zu laden und danach zu filtern, ist doof ;)
Wie kann man sie denn filtern ohne sie zu laden :) ? Die grosse Datenmenge ist halt gegeben, sie müssen dann nur noch effizient abgelegt werden damit man sie ohne grosse Systemlast zu erzeugen einlesen kann. Notfalls als Exceldatei.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 08:49
Die alle auf Verdacht zu laden und danach zu filtern, ist doof
Wie kann man sie denn filtern ohne sie zu laden ?
Wozu hast du ein DMBS? Lass die DB filtern. Die kann das i.d.R. um Welten besser (schneller/performance-schonender)

Die grosse Datenmenge ist halt gegeben,
Große Datenmenge schaut in 2010 anders auß. Wenn du was von 100 Mio./1Mrd. Datensätze gesprochen hättest dann könnten wir von größerer Datenmenge sprechen

sie müssen dann nur noch effizient abgelegt werden damit man sie ohne grosse Systemlast zu erzeugen einlesen kann.
Hast du doch schon: Ein DBMS!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 09:02
100k Datensätze mit 50 Spalten: Da dürfte jedes aktuell DBMS darüber lachen und die Daten sehr schnell zum Client liefern können. Vorrausgesetzt die HW ist für einen Server halbwegs aktuell und man hat bei der DB-Konfiguration nix falsch gemacht.

Auch die Darstellung sollte kein Problem sein - wenn man den in der Implementierung nix falsch macht.

Ich würde eher den Ansatz wählen das maximal (konfigurierbar) x Datensätze im Grid darstellbar sind und am Ende dann 'ne Meldung kommt "Bitt genauer einschränken".
Es gibt leider keine Ausgabetabelle in der Datenbank für die generierten Daten - wir müssen die Daten in einer separaten Datei halten (wegen Kundenvorgaben). Vielleicht ist Excel daher eine Alternative. Ich teste mal, wie lange es bei durchschnittlicher Last im System dauert, zehn Megabyte in ein ClientDataSet einzulesen (direkt aus der DB oder aus einer XML Datei). Die damit mögliche ExpressGrid Lösung wäre besser in die Anwendung integriert.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 09:08
[QUOTE=mjustin;1041769]
Es gibt leider keine Ausgabetabelle in der Datenbank für die generierten Daten - wir müssen die Daten in einer separaten Datei halten (wegen Kundenvorgaben).
OK. Du darfst es in der ursprünglichen DB nicht halten. Aber wie wäre es dort eine weiter DB anzulegen und die Daten dort zu speichern?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 10:22
OK. Du darfst es in der ursprünglichen DB nicht halten. Aber wie wäre es dort eine weiter DB anzulegen und die Daten dort zu speichern?
Technisch machbar, organisatorisch / QM-seitig leider nicht: Änderungen an den Metadaten der Datenbank (von denen es voraussichtlich viele geben wird) im Produktivsystem erfordern quasi eine vierwöchige Voranmeldung und dürfen nur zwischen Mitternacht und zwei Uhr durchgeführt werden. Sonst rollen Köpfe :)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 10:30
Technisch machbar, organisatorisch / QM-seitig leider nicht: Änderungen an den Metadaten der Datenbank (von denen es voraussichtlich viele geben wird) im Produktivsystem ...
Ich habe gesagt das eine neue DB angelegt wird und nicht in der aktuellen DB (Produktivssystem) die neuen Tabellen angelegt werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Viele Datensätze schnell aus Datei in Grid laden ...

  Alt 13. Aug 2010, 11:45
Technisch machbar, organisatorisch / QM-seitig leider nicht: Änderungen an den Metadaten der Datenbank (von denen es voraussichtlich viele geben wird) im Produktivsystem ...
Ich habe gesagt das eine neue DB angelegt wird und nicht in der aktuellen DB (Produktivssystem) die neuen Tabellen angelegt werden.
Die neue DB wäre dann ebenfalls eine Produktivdatenbank und muss damit leider den gleichen strengen QM Regeln wie die bestehende folgen. Eine "Agile" Entwicklung ist in dieser Umgebung dann nicht möglich. Ein separates Testsystem mit weniger restriktiven Vorgaben müsste man ebenfalls irgendwann in Produktivbetrieb nehmen und dann sind alle Änderungen wieder aufwendig wg. QM.
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.
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