Peter: Forumssoftware

Hallo!

Ich mir schlummert gerade die Programmierfreude, und so habe ich es mir nun zum Ziel gemacht eine Forumssoftware zu schreiben. Nun habe ich dazu noch eine Frage, und zwar, wie die Beiträge abzuspeichern am sinnvollsten ist:

- MySQL Datenbank
 - Flatfiles
 - Flatfiles mit XML

So, das wars eigentlich schon...

Schönen Tag noch!
 Peter

  1. Hallo,

    • MySQL Datenbank
    • Flatfiles mit XML

    Ich würde zwischen diesen Zwei entscheiden, da du es dann leichter hast, wenn du das irgendwohin in eine andere Software importieren willst. Bzw. gibt es da auch noch erheblich mehr Datenbanken als MySQL da würde ich mich wohl für die Schnellste entscheiden ;-)

    Grüße
    Jeena Paradies

    --
    Gefahren im Internet eine kleine Zusammenfassung | Jlog | Gourmetica Mentiri
    1. Hallo,

      • MySQL Datenbank
      • Flatfiles mit XML
        Ich würde zwischen diesen Zwei entscheiden, da du es dann leichter hast, wenn du das irgendwohin in eine andere Software importieren willst.

      Hmm... Haben Flatfiles nicht eine "vordefinierte" Größe, also, wo es dann schwieriger wird das ganze zu verwalten, sobald diese überschritten wird??

      Mit Flatfiles hätte ich folgendes Konzept: Thema wird geschrieben und in einem File z.b. mit dem Namen thema.xml gespeichert. Außerdem erhält das Thema eine fortlaufende id  z.b. TH_1. Wird jetzt beispielsweise auf "Antworten" geklickt, so wird diese über die URL übermittelt. Wird nun ein Kommentar verfasst, so wird dieses wieder in einem seperaten File z.b. kommentare.xml abgespeichert, wobei als id  eine mittels uniqid() generiert wird und die fortlaufende id des Themas vorangestellt, auf welches man geantwortet hat. Später wird dann, sobald das Thema aufgerufen wird das kommentar-file eingelesen und anhand der id's die Einträge mit der id in der URL verglichen und die passenden ausgegeben...

      Bzw. gibt es da auch noch erheblich mehr Datenbanken als MySQL da würde ich mich wohl für die Schnellste entscheiden ;-)

      Stimmt. Allerdings glaube ich, dass MySQL am meißten verbreitet ist...

      Grüße
      Jeena Paradies

      Schönen Tag noch
       Peter

      1. Moin!

        • MySQL Datenbank
        • Flatfiles mit XML
          Ich würde zwischen diesen Zwei entscheiden, da du es dann leichter hast, wenn du das irgendwohin in eine andere Software importieren willst.

        Hmm... Haben Flatfiles nicht eine "vordefinierte" Größe, also, wo es dann schwieriger wird das ganze zu verwalten, sobald diese überschritten wird??

        Die maximale Dateigröße bei manchen veralteten Dateisystemen ist 2 Gigabyte. Neue Dateisysteme verwalten locker _deutlich_ mehr (Terabyte).

        Das Problem ist eher: Wie kriegt man so große Dateien verarbeitet? Und wie greift man innerhalb so einer riesigen Datei ohne Durchlesen der 99% uninteressanten Daten auf genau die gewünschten zu.

        Und da kommen dann wieder Datenbanken ins Spiel. Die speichern ihre Daten ja auch nur in irgendwelchen Dateien, die ebenfalls ziemlich groß werden können, aber sie legen auch Index-Dateien an, die passend vorsortiert Zeiger auf die zu findenden Daten enthalten.

        Aber es muß ja nicht alles in eine Datei rein. Zuviele Einzeldateien in einem einzigen Verzeichnis sind allerdings auch nicht sehr gut, dann sucht das Dateisystem nämlich ziemlich lange nach der gewünschten Datei.

        - Sven Rautenberg

        --
        My sssignature, my preciousssss!
        1. 你好 Sven,

          Aber es muß ja nicht alles in eine Datei rein. Zuviele Einzeldateien in
          einem einzigen Verzeichnis sind allerdings auch nicht sehr gut, dann
          sucht das Dateisystem nämlich ziemlich lange nach der gewünschten Datei.

          Das stimmt nur für bestimmte Dateisysteme wie z. B. ext2fs. In anderen
          Dateisystemen (Beispiel ReiserFS oder XFS) gilt das nicht mehr.

          Tatsächlich nehmen moderne Dateisysteme sogar immer mehr Ähnlichkeit mit
          Datenbanken an.

          再见,
           克里斯蒂安

          --
          Kunden, sch… Kunden | Linux von Microsoft geschluckt
          Willst du die Freuden dieser Welt geniessen, so musst du auch ihr Leid erdulden.
          http://wwwtech.de/
          1. Hallo!

            Danke für eure Antworten. Ich werde, denke ich, auf XML basierte Flat-Files setzen und mich an meinem obigen Ansatz festhalten (der hoffentlich von der theorie her stimmt...). (Mit PHP5 geht es ja doch schon einfach(er) mittels SimpleXML auf solche zuzugreifen...)

            Schönen Tag noch!

            Peter

            1. echo $begrüßung;

              Danke für eure Antworten. Ich werde, denke ich, auf XML basierte Flat-Files setzen und mich an meinem obigen Ansatz festhalten (der hoffentlich von der theorie her stimmt...). (Mit PHP5 geht es ja doch schon einfach(er) mittels SimpleXML auf solche zuzugreifen...)

              Und wenn du ganz clever bist, erstellst du dir eine Datenzugriffsschicht, die sich mehr oder weniger einfach austauschen lässt, falls du deine Meinung doch mal ändern solltest.

              echo "$verabschiedung $name";

              1. Hallo!

                Und wenn du ganz clever bist, erstellst du dir eine Datenzugriffsschicht, die sich mehr oder weniger einfach austauschen

                ...klingt nicht schlecht, aber da fehlt mir noch die vorstellung, wie ich das machen sollte...?

                Schönen Tag noch
                 Peter

                1. echo $begrüßung;

                  Und wenn du ganz clever bist, erstellst du dir eine Datenzugriffsschicht, die sich mehr oder weniger einfach austauschen

                  ...klingt nicht schlecht, aber da fehlt mir noch die vorstellung, wie ich das machen sollte...?

                  Du überlegst dir, was du für Datenzugriffs-Funktionalität brauchst.
                  Beispielsweise (ich schreib mal DB stellvertretend für DB und XML und ... ):

                  • einen Beitrag in DB speichern
                  • einen Beitrag aus DB holen
                  • alle Folge-Beiträge aus DB holen
                  • ...

                  Weiterhin überlegst du dir, was für Parameter dafür jeweils benötigt werden und was an Daten zurückkommen soll.
                  Das packst du dann in je eine Funktion, die kommen in eine extra Datei, welche dann im Haupt-Teil eingebunden wird.

                  Dein Hauptprogramm hat keine Ahnung von der DB oder dem XML. Das bekommt nur die reinen Daten aus den Funktionen bzw. übergibt diesen diese. Und umgekehrt haben die Funktionen keine Ahnung vom Hauptprogramm. Damit sind sie austauschbar.

                  echo "$verabschiedung $name";

                  1. Achso...

                    Also jede Funktion eine extra Datei... eigentlich logisch, wenn ichs richtig verstanden habe... Thx!

                    Schönen Tag noch.
                     Peter

                    1. echo $begrüßung;

                      Also jede Funktion eine extra Datei... eigentlich logisch, wenn ichs richtig verstanden habe... Thx!

                      Eigentlich meinte ich: Jede Funktionalität in eine Funktion, alle Funktionen zusammen in eine Datei.
                      Es ist sicher kaum sinnvoll, nur eine einzelne der Funktionen auszutauschen.

                      Eine Klasse aus den Funktionen zu generieren wäre auch noch eine Option. Das hätte dann den Vorteil, dass übergreifende Dinge wie die Verbindung zur Datenbank in Klassen-Variablen abgelegt werden können und dann nicht mit gleichnamigen Variablen aus dem globalen Bereich kollidieren.

                      echo "$verabschiedung $name";

          2. Hallo Freunde des gehobenen Forumsgenusses,

            [...] dann sucht das Dateisystem nämlich ziemlich lange nach der gewünschten Datei.

            Das stimmt nur für bestimmte Dateisysteme wie z. B. ext2fs. In anderen
            Dateisystemen (Beispiel ReiserFS oder XFS) gilt das nicht mehr.

            Heißt das, dass es bei ReiseFS für den Dateizugriff (oder die Existenzprüfung) egal ist,
            ob in einem Verzeichnis 5 oder 50Mio Dateien sind?

            Gruß
            Alexander Brock

            --
            [latex]\lim_{3 \to 4}{\sqrt{3}} = 2[/latex]
            1. Hallo Alexander,

              Heißt das, dass es bei ReiseFS für den Dateizugriff (oder die Existenzprüfung) egal ist,
              ob in einem Verzeichnis 5 oder 50Mio Dateien sind?

              Naja, egal nicht, aber der Aufwand skaliert logarithmisch, nicht linear oder schlimmer. Das heißt: Wenn Du 50 Millionen = 5 * 10^7 Dateien in Deinem Verzeichnis hast, dann braucht das 7 mal so lange, wie wenn Du 5 Dateien in Deinem Verzeichnis hast (naja, zumindest grob, etwas mehr ist's dann wahrscheinlich schon, da auch der Index selbst größer ist). Unter älteren Dateisystemen braucht das ca. 10 Millionen so lange (naja, das Beispiel mit der Million war schlecht, weil ältere Dateisysteme so viele Dateien pro Verzeichnis nicht verkraften).

              Viele Grüße,
              Christian

  2. Hi,
    verfolge doch gleich ein zukunftsträchtiges Konzept.
    Lagere die Schreib- und Lesefunktionen/-klassen in externe Dateien aus und stelle für

    • MySQL Datenbank
    • Flatfiles
    • Flatfiles mit XML

    usw.

    entsprechende Includefiles zur Verfügung. Dann kann der Anwender selbst entscheiden, was er will. Evtl. wäre auch noch SQLight unter PHP5 ne alternative.