Alexander (HH): Problem mit Storable

Beitrag lesen

Moin Moin!

This is perl, v5.6.1 built for MSWin32-x86-multi-thread
;# $Log: Storable.pm,v $
;# Revision 1.0.1.11  2001/07/01 11:22:14  ram

Mal so am Rande: Dir ist bewußt, dass sich das Dateiformat von Storable mit jeder Version von Storable bzw. Perl ändern kann und sich auch oft genug geändert hat? Noch dazu ist das Format auch noch abhängig von der Architektur des Rechners.

Kompatibilität gibt es nur ansatzweise, man kann alte Storable-Files in ein neues Storable einlesen, aber man kann mit einem neuen Storable keine Files im alten Format erzeugen. Und über Architekturgrenzen hinweg geht schon mal gar nichts.

Storable ist gut, um "mal eben" ein paar Daten aus dem Speicher zu schaffen, die man "gleich" wieder braucht. Vielleicht auch über Prozessgrenzen auf der selben Maschine hinweg. Vor allem aber schnell.

Aber als Langzeit-Speicher ist Storable völlig ungeeignet, eben wegen der o.g. Probleme. Leider steht das so klar nicht in der Doku, und leider gibt es im Core (sprich: im perl-xxx.tar.gz) kein anderes Modul, was Daten schnell, sicher und portabel[1] speichert und wieder liest. Data::Dumper kann man zwar mißbrauchen, aber es braucht ein String-Eval, das ist gruselig langsam und vor allem gruselig unsicher.

Wenn Du Daten über verschiedene Perl-Installationen hinweg austauschen willst, und / oder auf die von Storage vorgelegte Geschwindigkeitsoptimierung verzichten kannst[2], nimm etwas anderes. DBI mit DBD::SQLite wäre ein Ansatz, JSON::XS ein anderer, notfalls auch XML::LibXML oder irgendeine YAML-Library. Allen gemeinsam ist aber der Haken, dass Du die Perl-Strukturen erst einmal selbst serialisieren und deserialisieren mußt, oder Dir ein dafür geeignetes Modul suchen mußt. Und im Core sind die Libraries auch nicht.

Alexander

[1] nicht dass Storable ein portables Format hätte

[2] Ja, Du kannst. Meistens. Sehr oft bremst I/O zur Platte oder zum Netz so stark, dass selbst massive Geschwindigkeitsunterschiede beim Serialisieren / Deserialisieren nicht auffallen. Erst recht, wenn Du vergleichsweise kleine Datenmengen hin und her schiebst.

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".