hi,
Zur "hervorragenden Datenspeicherung" gehört für mich allerdings in der Hauptsache die ungehinderte Zugriffsmöglichkiet, also möglichst ein "Random Access".
Das ist bei allen seriellen Datenformaten nicht möglich.
Richtig, Tom, eine Sequenz wird sequentiell erzeugt und gelesen, das ist die Physik der Bytes. Auf der Physik kann jedoch eine Logik sitzen, die einen Quasi-Random-Access ermöglicht, nämlich über die vom Deserialize-Prozess gelieferte Datenstruktur.
Falls du ab und zu mal was mit Perl machst, in der letzten Ausgabe der $foo gibt es dazu einen Artikel von mir ;-)
Perl-Magazin ab Seite 34...
Es ist jedoch so, dass eine Sequenz, weil sie eben von a-z gelesen werden muss, komplett im Hauptspeicher liegt. Ich habe vor einiger Zeit ein Modul entwickelt, womit die Datenmenge auf ein Minimum beschränkt wird. Serialisiert wird eine Objektsammlung (in Perl: Hash of Hash). Deserialize liest nur die Namen der Objekt-Attribute und die Position in der Sequenz sowie den Offset. Erst wenn der Wert eines Attributes abgefragt werden soll, werden über Position und Offset die Bytes aus der Datei gelesen.
Je nachdem, wie die Objekte beschaffen sind, Beispiel: eine komplette Website mit 100 Einzelseiten belegt 2 MB in der Datei, im RAM liegen dann nur 200 kB. Der Quasi-Random-Access auf die Datei erfolgt in der Anwendung über die Datenstruktur.
Hotti