# Fotoverwaltung in einer Multi-User Anwendung



## cmtran (26. Jun 2014)

Hallo Gemeinde,

ich hoffe dass hier die richtige Stelle für meine Frage ist. 

Jeder User in einer Multi-User Anwendung hat mindestens ein Thumbnail. Normalerweise kann er noch seine Photos hochladen und anzeigen lassen, wie z.B. in Facebook. Wie werden diese Photos verwaltet? In einem eigenen Server getrennt von der Anwendungserver? Im Fall von Facebook sehe ich folgende Link wenn ich ein Photo in einem eigenen Tab öffne.

https://fbcdn-profile-a.akamaihd.ne...153/1939620_10101266232851011_437577509_n.jpg 

Gibt es Open Source Anwendung oder Service, die diese Verwaltung bietet, sodass ich die Fotosverwaltung für meine eigenen Webapp nicht neu implementieren muss?

Vielen Dank für jede Antwort.


----------



## Phash (7. Jul 2014)

Was genau willst du machen?

Willst du, dass Benutzer "irgendwelche Binärdaten (Fotos)" auf deinen Server laden, oder willst du, dass die Benutzer die Fotos woanders her holen und du speicherst "pfade / links"?

Du kannst dir entweder einfach eine Galery holen (meist php, da gibts 1000 Varianten) oder dir eine eigene Anwendung schreiben.

Wenn du es selbst machen willst, dann gibts 2 Möglichkeiten um die Daten zu speichern: entweder du speicherst die Bilder als "Blob" in einer Datenbank oder du speicherst in der Datenbank nur einen "Link" und verweist dann auf einen Speicherort. (Dieser kann auf deinem oder auf irgendeinem anderen Server sein)


Konkreter kann ich dir erst mehr sagen, wenn du deine Anfrage selbst konkretisierst


----------



## internet (26. Jul 2014)

Phash hat gesagt.:


> Wenn du es selbst machen willst, dann gibts 2 Möglichkeiten um die Daten zu speichern: entweder du speicherst die Bilder als "Blob" in einer Datenbank oder du speicherst in der Datenbank nur einen "Link" und verweist dann auf einen Speicherort. (Dieser kann auf deinem oder auf irgendeinem anderen Server sein)
> 
> Konkreter kann ich dir erst mehr sagen, wenn du deine Anfrage selbst konkretisierst



was siehst Du als die bessere Lösung an? Ich stehe ebenso gerade vor diesem Problem.
Ich habe mich bereits mit dem Thema befasst. Die Lösung das Bild per BLOB in die DB zu speichern, scheint aus Performancegründen nicht sonderlich gut (DB wird langsamer).

Ich habe ebenfalls eine Webanwendung mit zig tausend Usern.
Ich weiß ist zwar sehr unrealistisch, aber stellen wir uns mal Facebook vor:

Wie werden hier die Bilder gespeichert?
Wird pro User ein Ordner angelegt, der dann wiederum Unterordner hat?
- User1
  -Profilbild
  - Titelbild

Mit Sicherheit können alle Bilder in einem einzigen Ordner gespeichert werden. Aber das ist aus Performancesicht bestimmt nicht gut? Man stelle sich vor, dass der Ordner 100 Millionen Bilder enthält. Bei einem Request muss erst mal in diesem Ordner das entsprechende Bild gefunden werden.
Im Gegensatz dazu wäre es bei der Klassifizierung eines Ordners pro User deutlich einfacher.


Wie passiert das, wenn die Festplatte voll ist? Beispiel Festplatte hat 100 GB Speicher.
Der Link zu C:/bilder steht in der Tabelle der Datenbank.
Muss der Link dann zu D:/bilder führen, wenn die Festplatte voll ist?

Oder kann man die Größe der Festplatte einfach virtuell erweitern?

Kann mir jemand hierbei Hilfe geben. Gibt es andere Konzepte?


----------



## MR_UNIX (26. Jul 2014)

Grundsätzlich ist es (bei den herkömmlichen Datenbanken im Dev-Bereich wie MySQL und so) nicht empfehlenswert, Binärdaten in der DB abzulegen, da die einfach nicht dafür ausgelegt sind. Klar, es gibt die Möglichkeit. Aber optimiert sind Datenbanksysteme in erster Linie für Klartextdaten.

--> Bei sowas die eigentlichen Daten zentral in einem Ordner speichern aufm Server und in der DB die Links und andere relevante Daten (bei Bildern zum Beispiel das alt und so) abspeichern.


----------



## Phash (29. Jul 2014)

ich würds in die DB legen, wenn die Bilder kleiner als 250kb sind.


----------

