MySQL Load vs. PHP interne Verarbeitung. Eure Meinung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Load vs. PHP interne Verarbeitung. Eure Meinung

    Hi Leute,

    mal eine theoretische Frage. Ich bastel an einer social networking Anwendung mit PHP und MySQL. Es geht darum, die kürzeste Verbindung zwischen zwei Benutzern zu berechnen, also:

    Ich --> Hans --> Wurst --> Anna oder
    Ich --> Anna

    Abgespeichert werden die Infos wie folg:
    Ich kenne Hans
    Hans kennt Wurst
    Wurst kennt Anna

    - Natürlich mit IDs etc.

    Je nach Grad der Bekanntschaft. Ich hab das soweit schon realisiert, die Abfrage geht vom Prinzip her folgendermaßen:

    - Hole Freundesliste vom Ausgangspunkt.
    - Wenn Zielpunkt nicht in der Liste, hole Freundesliste von Zielpunkt
    - Wenn Startpunkt nicht in der Freundesliste von Zielpunkt, hole Freundesliste vom ersten Freund von Startpunkt
    ...

    etc.

    Ihr könnt Euch das Prinzip denke ich vorstellen.

    Nun meine Frage: Auf die Art schicke ich einen großen Haufen Datenbankabfragen an MySQL und verarbeite dann die Info Häppchenweise in PHP.

    Was ist besser: Eine komplexe MySQL Abfrage, die mir eine Beziehungsmatrix produziert (wie eine Matrix in einem Grafensystem) und das ganze Php seitig einmal errechnen oder Häppchenweise, wie ich es jetzt mache?

    Im Moment sind etwa 50.000 Beziehungen in der DB und die Seite fängt an, langsam zu laden.

    Vielen Dank für Eure Meinungen / Anregungen / Kommentare.

    Criscrasp

  • #2
    also bei
    Ich --> Hans --> Wurst --> Anna
    kann ich mir so eine rekursive abfrage vorstellen, aber wenn die bezihung über 5 personnen geht, oder in schlimsten fall zwischen "ich und Anna" überhaupt keine freundschaft besteht, dann würde diese function katastrofale serverüberlastung bedeuten und in keinem fall für eine online-anwendung geeignet ist.
    wenn du nach Matrix prinzip deine Tabellen aufbaust, dann wird der lese-Ergebnis zwar schneller, aber bei dem einfügen von neuer Person unglaublich rechenaufwendig und die datenbank-grösse wird bei dem einfügen von neuer Person schnell wachsen.
    Zuletzt geändert von Slava; 14.07.2006, 16:58.
    Slava
    bituniverse.com

    Kommentar


    • #3
      Die Stichworte sind hier:

      http://de.wikipedia.org/wiki/A*
      http://de.wikipedia.org/wiki/Algorithmus_von_Dijkstra
      http://de.wikipedia.org/wiki/Algorit...d_und_Warshall


      Wie haben hier auch sowas implemtiert - sehr aufwändig.

      Du musst anfangen Teile der Adjazenz Matrix bei Änderungen an deinen Relationen upzudaten.

      //Edit:
      Achso, das Problem heißt "all-pair-shortest-path"

      Kommentar

      Lädt...
      X