rolfrost: Artikel zu DB_File - was sollte alles rein?

Hallo PERLfreunde,

derzeit schreibe ich einen kleinen Artikel zur Verwendung von Berkeley - DBs, einerseits weil ich von diesen kleinen Datenbanken echt begeistert bin, andererseits weil DB_File Möglichkeiten zur Datenhaltung bietet die vielleicht gar nicht so bekannt sind...

Hmmm, gibts hier WebKollegen wo auch gerne mit DB_File 'rummachen? Und könnten mir noch ein paar Tipps geben was da unbedingt reinsoll in den Artikel, der noch nicht ganz fertig ist;

Grob umrissen:

  • Speichern von Daten als KEY-VALUE Paar
  • Speichern von mehreren Feldern auf einen eindeutigen KEY
  • Zugriff auf Flatfiles und handlen von sehr großen Textfiles als Array / Besonderheiten von tie()

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?
  1. Hi rolf,

    Wichtig kann sein, dass es einen Versionssprung gab, der nicht kompbatibel ist. Mit dem Problem schlag ich mich grad rum und leb in der bangen Hoffnung, dass mein Provider seine Perl Version nicht updated bevor mein Portierung auf mySQL fertig ist. Momentan kann meine Version auf winXP nicht die Daten vom Server lesen und leider gibt es für Win auch kein Konvertierungstoll.

    Ich hab dir mal den thread aus der Newsgroup rausgeszucht http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&oe=UTF-8&threadm=87u182ofdf.fsf%40vran.herceg.de&rnum=9&prev=/groups%3Fhl%3Dde%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26q%3DDB_File%26btnG%3DGoogle%2BSuche%26meta%3Dgroup%253Dde.comp.lang.perl.misc

    Struppi.

    1. hi Struppi,

      Wichtig kann sein, dass es einen Versionssprung gab, der nicht kompbatibel ist. Mit dem Problem schlag ich mich grad rum und leb in der bangen Hoffnung, dass mein Provider seine Perl Version nicht updated bevor mein Portierung auf mySQL fertig ist. Momentan kann meine Version auf winXP nicht die Daten vom Server lesen und leider gibt es für Win auch kein Konvertierungstoll.

      Jow, darüber bin ich auch schon gestolpert.

      Ich hab dir mal den thread aus der Newsgroup rausgeszucht http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&oe=UTF-8&threadm=87u182ofdf.fsf%40vran.herceg.de&rnum=9&prev=/groups%3Fhl%3Dde%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26q%3DDB_File%26btnG%3DGoogle%2BSuche%26meta%3Dgroup%253Dde.comp.lang.perl.misc

      Interessaner Thread - Danke! Ich darf das mal recherchieren und das Excerpt davon in meinen Artikel reintun?

      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?
      1. Interessaner Thread - Danke! Ich darf das mal recherchieren und das Excerpt davon in meinen Artikel reintun?

        klar.
        Ich hatte auch ein paar Seiten wo dies genauer beschrieben wurde gefunden. Aber mir nicht gemerkt, da ich sowieso umstellen wollte.

        Struppi.

        1. hi Struppi,

          es ist vollbracht, bitte schau mal rein
          http://i-netlab.de/cgi-bin/index.cgi?vi=DB_File

          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?
          1. hi Struppi,

            es ist vollbracht, bitte schau mal rein
            http://i-netlab.de/cgi-bin/index.cgi?vi=DB_File

            Grade eben gemacht, wegen dem kleinen Tool für Forumssüchtige ;-)

            Ein Punkt der mir auffiel.
            Bist du sicher, dass die nicht plattformunabhängig sind?
            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.

            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.

            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.

            Struppi.

            1. hi Struppi,

              es ist vollbracht, bitte schau mal rein
              http://i-netlab.de/cgi-bin/index.cgi?vi=DB_File

              Grade 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?