Laden...

Umgang mit großen Datenmengen

Erstellt von KingRing vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.481 Views
K
KingRing Themenstarter:in
1 Beiträge seit 2006
vor 17 Jahren
Umgang mit großen Datenmengen

Hallo,
ich bin gerade an einem Tool zur Für eine Testprotokollauswertung.
Die Protokolleinträge sind in einer MySQL-Datenbank gespeichert und es können mehrere Millionen Einträge zustande kommen.
d.h. komplettes einlesen in ein DataSet ist unmöglich. Deshalb will ich zuerst nach protokoll einträgen sortieren welche einen fehler signalisieren (werden über ein flag gekennzeichnet).


da = new OdbcDataAdapter("SELECT * FROM entries WHERE error = 1" , con);

Diese Daten werden dann an ein DataGridView gebunden. Jetzt will ich beim auswählen einer Zeile, in der der fehlereintrag steht, die letzten und die nächsten 20 Zeilen anzeigen lassen. Einen DataAdapter, der dann über den PrimaryKey die entsprechenden Datensätze ausliest, ist vorhanden. Jedoch stellt sich die Frage wohin mit den Daten? In eine neue Tabelle im DataSet? Aber was ist dann, wenn ich die nächste Fehlerzeile anklicke? Wieder eine neue Tabelle mit den ausgelesenen daten erstellen?

hat jemand eine Idee wie man beim Programmaufbau grundsätzlich vorgehen könnte?

3.825 Beiträge seit 2006
vor 17 Jahren

Hallo KingRing,

wenn Du sehr viele Datensätze liest ist Dein Ansatz etwas sehr langsam.

Besser : DataReader und DoubleBuffered Listview verwenden. Dann hat der Anwender so gut wie keine Wartezeit. Auch bei mehreren Tausend / Millionen Einträgen.

Erst wenn Du einen Eintrag im ListView anklickst den Eintrag in ein Dataset laden.

Grüße Bernd

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

L
770 Beiträge seit 2006
vor 17 Jahren

Hallo,

auch ich stehe vor dem Problem dass ich mehrere Einträge habe.
Meine DB beruht auf Access und wenn die 10000 einträge oder ähnliches hat ist sense.

Daher meine Frage was ist mit DataReader gemeint? nicht etwa der OleDbDataReader ?? ´Daweil habe ich es so gelöst, dass ich in einer Textbox nur 5 Einträge anzeige, und immer nur per SQL weitere 5 abfrage.. geht zwar gut. aber ich muss eben auch die Gesamte Liste laden können bzw was damit anstellen.

Zur Zeit verwendet ich folgendes:

Temp is eine Liste und cPerson eine selbst definierte Klasse, ich mein, ich verstehe warum sich mein Programm die kugel gibt wenn man ewig viel Datensätze auf die Art einließt, aber ich habe leider keine Idee wie ich BufferReader verwenden kann 🙁 google macht mich nicht schlau oder ich suche falsch. z.Z. verwende ich wie gesagt nen Textfeld, kann aber gern auf ListView umsteigen.

lg Lion