Brainstorming Userbilderalbum + Picsgallery // Mehrere Datenbanken?

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

  • Brainstorming Userbilderalbum + Picsgallery // Mehrere Datenbanken?

    Hi Leutz,

    ich soll für eine größere Community sowohl eine Bildergallery
    als auch ein Userbilderalbum proggen, wo jeder User eine
    vorgegebene Anzahl an Bildern in sein persönliches Album
    hochladen kann. Da diese Community sehr groß werden soll,
    tun sich mir da ein paar fragen bezüglich Speicherplatz auf.

    Folgende Situation als Beispiel:

    User XYZ hat in seinem Bilderalbum 24 Bilder.
    Hochladen darf er in sein Album 70 Bilder. Als er Bild 25
    hochladen will ist der Server voll... zum glück haben wir
    mehrere Server *Hui ein Glück*

    Ähnliches Problem könnte ich mir ebenfalls für die Bildergallerie
    vorstellen, die ebenfalls warscheinlich 3-4 mal die Woche
    mit Bildern gefüllt wird.

    Was ich suche ist ein vernünftiger Weg das ganze umzusetzen.
    Hat jemand schonmal sowas gemacht?

    Ich hab mir überlegt das ganze so anzuordnen:

    nen Ordner user_pics
    darin als unterordner die userid jedes user
    (da kommt dann alles rein was er in sein Album uppt)
    und nochmals als unterordner dann noch thumbs für
    die die Thumnails. In der Datenbank wollt ich dann ne
    Angabe machen, auf welchem Server das Ganze liegt,
    falls aufgrund des obigen Falles sich einmal der Inhalt
    eines Albums auf zwei Servern verstreut. Wenn ein User
    dann ein Bild in sein Album hochläd wollt ich überprüfen,
    ob noch genug Platz auf dem aktuellen Server vorhanden ist, oder das ganze auf den nexten Server wandern soll.

    Ist das so machbar oder gibst da ne bessere Methode?

    Dann hab ich noch ne zweite Frage:
    Möchte den User ermöglichen die Positionen der Bilder im
    Album festzulegen.

    Was ist die bessere Variante:
    Position in DB speichern und dort jeweils dann überschreiben,
    oder Position im dateinnamen mitgeben, also zum beispiel image_01.jpg, image_02.jpg usw... Was erzeugt mehr last für den/die Server?

    Freue mich auf euere Antworten.
    Zuletzt geändert von deschmiddi; 02.08.2007, 12:27.
    Geht net gibts net...

  • #2
    hm... eigentlich kann das der Applikation vollkommen egal sein wo die Bilder liegen~

    Ich würde da über z.B. SOAP (oder eine andere Schnittstelle) ein weiteres PHP-Skript die Findung der Bilder überlassen und alle Operationen an den Bildern gehen dann über diese Schnittstelle.
    D.h. in deiner Applikation steht z.B.
    $soap->move_pic('53.jpg', '54.jpg');
    und das andere php-Skript, rechnet dann zum Beispiel per Modulo sich aus, dass das 53.jpg-Bild gerade auf Server 1 im Ordner /5/3/ liegt und verschiebt das dann z.B. auf Server zwei in den Ordner /5/4/

    Für die Verlinkung würde ich auf einen zentralen Ort verlinken, z.B.
    http://daten.domain.de/53.jpg
    und dahinter kann ja wieder ein php-Skript lauschen, was dann den richtigen Server und Ordner errechnet und dann ein
    Location: http://server1.domain.de/5/3/53.jpg
    Header sendet

    Das ganze lohnt sich natürlich nur, wenn die Applikation auch z.B. dann und wann einen neuen Server erhält und die Dateien verschoben werden müssen, oder einer der Server voll ist (dann braucht das Backend aber eventuell auch noch eine Datenbank, damit man den Server determinieren kann)


    @2. Frage
    Die Position ist doch im Dateinamen vollkommen egal - da kannst du keine Ordnung drauf bauen...
    In die DB damit und gut ist~

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      also im groben klingt das ganze schon ganz gut und dürfte auch in etwa das sein was ich suche, allerdings hab ich keinen blassen schimmer, wie das dann im detail funktioniert.
      Du sagtest das backend braucht ne DB... meintest du damit ne eigene DB oder reicht die jenige, die die Seite eh schon benutzt aus?

      Wo kann ich denn etwas zu dem soap finden? Hoffe es gibt dazu auch ne ausführliche dokumentation
      Geht net gibts net...

      Kommentar


      • #4
        Original geschrieben von deschmiddi
        Du sagtest das backend braucht ne DB... meintest du damit ne eigene DB oder reicht die jenige, die die Seite eh schon benutzt aus?
        Um das System perfekt zu gestalten müsste es eine eigene sein - der Performance und Redundanz wegen dürfte es eher auf die gleiche hinaus laufen - kommt aber auch auf die Implementation an.

        Wo kann ich denn etwas zu dem soap finden? Hoffe es gibt dazu auch ne ausführliche dokumentation
        soap und
        Kann genauso gut aber auch ein einfaches shell-Skript sein, welches per exec aufgerufen wird... wenn du es nicht auf die Spitze treiben willst, würden rein theoretisch auch separate Funktionen/eine Klasse reichen.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          okay okay...
          also im groben is mir das ganze jetzt soweit relativ klar.
          Werd mir dann warscheinlich selbst ne klasse schreiben.

          Könnt mir das mit der struktur vielleicht jemand noch e klitzekleines bischen genauer erläutern?

          Oder gibts vielleicht irgentwo ein Beispiel wo ich mal bischen reinschnuppern kann?
          Geht net gibts net...

          Kommentar


          • #6
            Mehrere Datenbanken

            Hi Leutz,
            angenommen ich hab eine große Community mit über 100 000 usern am laufen und eine hohe Anzahl an Zugriffen auf die Datenbank, macht es da Sinn zwei Datenbanken zu verwenden, diese sekündlich zu spiegeln, und alle Select Anfragen über die eine Datenbank, alle inserts, updates, deletes usw über die andere db laufen zu lassen um das System zu entlasten?
            Geht net gibts net...

            Kommentar


            • #7
              Re: Mehrere Datenbanken

              Sekündlich spiegeln? Wovon träumst du nachts? Oo,

              Was du wohl machen willst ist Replikation - siehe Manual von MySQL.
              (Ob sich das aber bei einem Master und einem Slave schon lohnt wage ich fast zu bezweifeln ... eventuell ist da eine Master-Master-Kombination hilfreich - google gibt weitere Auskunft - ansonsten kann man auch einfach die Tabellen auf die beiden Server verteilen)

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X