hi Struppi,
es ist vollbracht, bitte schau mal rein
http://i-netlab.de/cgi-bin/index.cgi?vi=DB_FileGrade eben gemacht, wegen dem kleinen Tool für Forumssüchtige ;-)
Danke für Dein Feedback!
Ein Punkt der mir auffiel.
Bist du sicher, dass die nicht plattformunabhängig sind?
Selbst von debian zu suse: DB nicht lesbar...
Ich hatte bisher damit keine Probleme, abgesehen von dem Versionsprung konnte ich bisher die Datenbanken immer auf meinem Win Systemen genauso lesen und schreiben wie auf dem Linux server.
Möglicherweise geht das ja doch, ich werde das mal testen.
Und das Locking kommt IMHO etwas zu kurz bzw. ist bei DB_FILE ein anderer Ansatz als mit normalen Files nötig. Da Perl ja in der Regel hauptsächlich als CGI Sprache Anwendung findet ist das kein unwichtiger Punkt.
Ich hatte das bisher immer mit der unsicheren Variante des Filelockings gemacht, aber die Doku zu DB_File erwähnt eine andere Methode.
Yes, it is. Auf die in der Dok. beschriebene Methode kannst du getrost verzichten, weil die Daten gepuffert werden beim Schreiben. Für richtige Locks gibt es weitere Module, wie in der Dok. steht.
Auf jeden Fall gibt es auch ohne FileLocking nicht die Probleme welche beim gemeinsamen Schreiben von Textdateien auftreten können, die im ungünstigsten Fall den Server abwürgen - das passiert bei DB_File nicht: hier werden im ungünstigsten Fall nur die Daten überschrieben. In meiner Praxis hat sich als Preventive dazu das Verfahren mit dem Timestamp bewährt, so auch mein Hinweis darauf. Time::HighRes --> noch besser.
Interessant fand ich die Ausführung zu DB_RECNO, das wußte ich bisher nicht oder hatte das überlesen. Ist schon eine praktische Sache, das ganze Modul.
Das hab ich auch erst jetzt mitbekommen, es eröffnet ungeahnte Möglichkeiten, z.B. das handlen von _sehr großen_ Dateien auf einem Array: tie() sorg dafür dass ein Solches an die Datei gebunden wird und somit nicht komplett im speicher rumliegt.
Viele Grüße, Rolf
SELFforum - Das Tor zur Welt!
Theoretiker: Wie kommt das Kupfer in die Leitung?
Praktiker: Wie kommt der Strom in die Leitung?