
Kommst Du denn mit ausschließlich "scharfer" Zuordnung aus, oder brauchst Du auch noch "Tippfehler" / "Schreibweise" Toleranz ?
Bei einem 64 Bit System hat alles Platz im virtuellen Speicher. Ob die Speicherverwaltung des OS in diesem Fall effektiv genug arbeitet ist eine andere Frage. Es könnte aber durchaus sein, das ein Hash-System im virtuellem Speicher besser passt als eine Datenbank. (Für Texte liegen in den Hash-Tabellen beispielsweise die binären 128 Bit (16 Byte) MD5 Checksummen des Textes. Da hält sich der Speicherbedarf durchaus in Grenzen. Um den Zugriff auf die kompletten Texte nach dem eigentlichen Suchvorgang kümmert sich die virtuelle Speicherverwaltung gut genug.)gocher hat geschrieben: diese Struktur hätte aber leider bei der Datenmasse nicht mehr genug Platz im Speicher
Ein Hash-System ist recht einfach zu programmieren und man kann mit sehr geringem Aufwand dynamisch zusätzliche Hash-Tabellen anlegen, wenn man neue Such-Tabellen ("Eigenschaften") braucht. Da es hauptsächlich auf schnelles Suchen und nicht auf schnelle Daten-Einfügen ankommt, ist es auch nicht schlimm, dass das Vergrößern von Hash-Tabellen (z.B. bei Füllgrad über 80 %) ein komplettes Umspeichern (mit zukünftigem Aus-Swappen der veränderten Seiten !!) erfordert.
Hashen ist für virtuellen Speicher ideal (besser als binäres Suchen) weil in vielen Fällen der gewünschte Satz mit einem oder wenigen Lesezugriffen gefunden ist, was das Swappen minimiert.
Noch (viel) langsamer beim Einfügen, aber schneller beim Suchen und Platz-Effektiver sind natürlich streng sortierte Tabellen. Aber Binärbäume (wie eine Datenbank, im virtuellen Speicher oder auf der Platte, deterministisch schnell beim Einfügen aber aufwändig zu programmieren) brauchst Du eigentlich nicht. Und referentielle Integrität (wie jede ordentliche Datenbank, kommt wohl hauptsächlich beim Löschen von Sätzen zu tragen) brauchst Du vermutlich überhaupt nicht.
Die Funktionalität einer Datenbank ist also wohl "Kanonen auf Spatzen".
In jedem Fall scheinen mir die XML- (Text-) Dateien allenfalls als Rohdaten, nicht aber als aktive Information für die Suchvorgänge sinnvoll zu sein.
-Michael