SQLite plattgemacht ;-)
-
Moin Hustbaer,
Dann miss es mal.
Ich hatte das nur sehr locker gemssen. Suchzeit bei meinem Systen (jeweils 3 Fundstellen) 0.14 sec,
bei der gleichen Datenmenge mit SQLIte hatte der Apache nach einigen Minuten etwas von einem 500 gemunkelt ...
(Feld-Wald+Wiesen-PC, Win XP prof, 4 GB RAM, Dualcore, RAID1, Apache 2).Interessante Ideen. Eigentlich logisch - ich muß das jetzt nur noch irgendwie mit der Praxis zusammenbringen.
Nach Deinen Ausführungen dürfte SQLite aber nicht dermaßen dramatisch einknicken.Eigentlich sollten die Sektoren mit den SQLite-Pages auch hintereinanderliegen, die Datenbank wurde ja neu
aufgebaut. Inwieweit da Ergebnisse des Caching eingehen weiß ich nicht. Nur, je weniger Daten umso mehr
dürfte auch in den Cache passen. Die Chance, daß eine Datei mit 1 MB komplett im Cache liegt ist naturgemäß
höher wie bei einer großen Datenbank.In der Firma läuft das auf schnellen PCs mit 10 Platten RAIDs, wir haben da auch ein 10 MBit Anbindung.
Bei unseren 130 Mio. Records wären das aufgerundet 6 IOs.
6 oder 27 I/Os dürften sich nicht so zwicken ...
Bei dem diskutierten System (es funktioniert da leicht anders), kenne ich die Datenmengen der einzelnen
vorkommenden Suchbegriffe - die habe ich mal in einzelne Dateien abgelegt (die größte wird 24 MB pro Jahr).
Die kann ich komplett in den Speicher laden, durchsuchen und habe dann sofort die Trefferliste. Von da
hole ich dann die Bestandsdaten.Wobei es auch relativ einfach sein sollte einen B-Baum-artigen Index mit deinem sortierten Datenfile zu verbinden.
Beim Herumprobieren mit SQLite habe ich alle Daten (nicht nur die Suchbegriffe) in einer DB. NUR die
Suchbegriffe dort speichern müßte ich nochmal probieren ...
("Bestandsdaten" bedeutet hier: Den Rest der Angaben aus den Rechnungszeilen, nicht die PDF/XML).Die Datenfiles sind "in order of einlesing", also unsortiert.
--
Suchbegriffe sind hier Kundennummer, Belegnummer, Artikelnummer (alle mit festen Längen).
Eingrenzungen durch Datum und Niederlassung sind möglich.
Bestandsdaten: Angaben wie Preise, Menge etc.