Datenmenge
-
Hi,
ich habe eine Textdatei mit 1 Mio bis 2 Mio Einträgen.
Wie kann ich auf diese Daten möglichst effizent zugreifen (Suchen, Lesen, das ganze ist Readonly).Das Suchen muss wirklich schnell sein.
Welche möglichkeiten hab ich?
-
1. Einen Tree aufbauen und im Speicher halten
2. Einen Tree aufbauen und teilweise im Speicher halten
3. Das ganze nehmen und in eine datenbank übertragen - dort dann mit SQL abfragen erstellen
4. Verschiedene Suchoperationen durchführen - speziell gut bei fixer satzlänge
kommt auf die daten an
-
Hallo
ich wuerde die Methode 3 bevorzugen (Datenbank)
ist gesammt gesehen am schnellsten und sehr flexibel
(mySQL waere da nicht schlecht)MfG
Klaus
-
MySql ist dafür völlig überdimensioniert. Für eine Einzelplatzanwendung halte ich das für reinen Overkill. Da würde ich doch eher Desktop-Datenbanken bevorzugen. Mein Tip wäre SQLite, weil es klein und schnell ist, und vor allem direkt mit in die Exe gelinkt werden kann, man also nicht darauf angewiesen ist das ein DB-Server installiert ist.
Die Frage ist, ob sich bei lächerlichen 2 Mio Datensätzen der Aufwand lohnt... Wenn man mit SQL vertraut ist, okay. Wenn nicht hat man in der Zeit in der man sich mit SQL auseinandersetzt einem simplen Index (std::map bzw. std::multimap) 10 mal selbstgestrickt
-
wie gesagt
kommt ja auch auf die daten an
-
@franky
Kannst du das mit dem Index genauer erläutern?
-
Wenn es keine systemkritisches System ist, dann ist eine SQL-Datenbank tatsächlich überdimensioniert.
Wie von Franki schon gesagt, reicht da meiner Meinung auch ein std::map aus. Vorallem, was versteht man unter schnell? Für bestimmte Anwendungen ist schon 0,5 Sek. zu langsam. Andere sagen, wenn ich nach 1 Sek. ein Ergebnis sehe, dann bin ich zufrieden.