Tom: Serialisierung v. Datenstrukturen in Binärdateien, Interesse?

Beitrag lesen

Hello,

Intelligente Datenstrukturen ermöglichen auch immer den Zugriff auf einzelne Elemente/Objekte oder zumindest Gruppen davon. Sie ermöglichen daher einen schlankeren und damit schnelleren Zugriff.

Es gibt Möglichkeiten, innerhalb einer Datei was zu ändern, ohne die ganze Datei "auseinanderzunehmen". Das setzt einen Adressblock in der Datei voraus. Serialize beschreitet jedoch einen anderen Weg: Es wird grundsätzlich immer die komplette Datei geschrieben und gelesen.

Das ist bei PHP nicht zwingend notwendig. Die Funktion unserialize() ist so aufgebaut, dass sie eine vollständige serialisierte Struktur (also mindestens einen kompletten String) haben möchte, oder mehr...

Man kann also unbesorgt mehrere serialisierte Datenstrukturen hintereinander in die Datei schreiben. Man benötigt dann zum deserialisieren nur den Aufsetzpunkt, wo eine solche beginnt und die ungefähre Länge (also die Mindestlänge zum Wiederholen). Wenn man ein Stück zuviel liefert, stört das unserialize() nicht. Nur der Anfang muss passen.

Wenn man nun die gespeicherten Strings in der Datei in Blöcken organisiert, kann man so auch quasi-wahlfrei auf die Strukturen zugreifen und sogar einzelne davon separat austauschen. Man darf eben nur nicht das Blockraster zerstören.

Wenn man nun als erste Struktur eine mit den Metadatan abspeichert, hat man schon eine etwas intelligentere Speicherform geschaffen, als eine reine serielle Datei.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de