Anwendung zur Datendarstellung/-auswertung: Technologie/Strategie gesucht
-
Hallo,
ich muss eine einfache Anwendung programmieren, die große Datenmengen einliest und diese dann über eine GUI in einer großen Tabelle Darstellt, mit der Möglichkeit zu filtern.
Dazu suche ich die passende Technologie.
Für die Anwenudng an sich schwebt mir Java oder .NET (C#) vor.Die Daten liegen zunächst in einem proprietären Dateiformat vor.
Ich gedenke diese zunächst in eine Datenbank zu importieren und anschließend darzustellen.
Die Darstellung soll vor allem schnell sein.
Die Daten stellen im wesentlichen nur eine einzige Tabelle dar, aber mit bis zu 100.000 Einträgen.Erstens: Würdet ihr auch über ein Datenbank gehen? Oder meint ihr alles direkt im Speicher mit eigenen Objekten verarbeiten ist evtl. besser?
Ist dann aber extrem Speicherhungrig.Zweitens: welche Kombination Datenbank+Gridcontrol schlagt ihr für die jeweilige Techno (Java/.NET) vor bzw. könnt ihr empfehlen mit Hinblick auf Performance?
Habe als Datenabnk SQLite (http://www.sqlite.org/) gefunden und würde das gerne nutzen, da es meine Anforderung erfüllt und recht kompakt ist. Entsprechende Java und C# wrapper gibt es.
Aber wie sieht es da aus, um die Daten in das entsprechende GUI-Control zu bekommen. Da muss man ja dann doch jeden Datensatz aus dem Ergebnis-Satz durchgehen und manuell in das GUI-Control schreiben? Is das nicht ein Performance-Killer??Alternativ gibt es eben die integrierten Lösungen z.B. C#+ADO.NET mit SQL Server/OLE DB und DataGridControls etc., aber das scheint mir Overkill.
wie würdet ihr das machen, mit Hinblick auf Performance in der Darstellung/Filterung als oberstes Ziel?
-
scrontch schrieb:
Da muss man ja dann doch jeden Datensatz aus dem Ergebnis-Satz durchgehen und manuell in das GUI-Control schreiben? Is das nicht ein Performance-Killer??
Das geht aber nun mal nicht anders; entwder machst Du das oder eine Bibliothek macht das für Dich ohne es Dir zu zeigen.
SQLite ist imho gut geeignet; klein,schnell und der Hauptnachteil (keine referentielle Integrtität) kann Dir ja egal sein bei nur einer Tabelle.Du kannst ja zu Testzwecken einen Mittelweg nehmen und die SQLite-Datenbank im Speicher anlegen (":memory:") statt ("test.db"), dann solltest Du eine Richtlinie für die Machbarkeit einer rein Freispeicher-orientierten Lösung erhalten.
Grüsse
*this
-
100.000 Datensätze finde ich eigentlich eher wenig. Dafür würde ich einfach ein Memory Mapped File nehmen und gut is.
Wenn du eine Datenbank nimmst, würde ich dir eine empfehlen, die Cursor unterstützt. Dann wird das Scrollen im Result-Set zum Kinderspiel. Wenn du dazu noch ein vernünftiges GUI-Control nimmst, das es dir ermöglicht nur die momentan sichtbaren Daten im Speicher zu halten, bekommst du gute Performance bei gleichzeitig minimalem Speicherbedarf.
-
Zunächst mal Danke.
Hat jemand schon konkrete Projekte ähnlicher Art in Java oder C# realisiert?