Bilder in Java-Webapplikationen

kevin82

Mitglied
Hallo,

ich würde gerne mal eure "best partices" erfahren. Wie speichert Ihr Bilder (die der Benutzer hochlädt) in euren Webapplikationen.

Lädt ihr die Bilddatei binär in die Datenbank, oder doch lieber im lokalen Filesystem?

Viele Grüße
Kevin
 

Zireal

Mitglied
Ich denke du wirst Gründe und Argumentationen zu beiden Apsekten finden. Ich persönlich würde es im Filesystem belassen. Ich habe das Gefühl die Bilder bleiben auf diese Weise "unverändert" und "original". ;)

Nachteil ist natürlich, dass ein einfaches Datenbankbackup dann nicht genügt um die Bilder mitzusichern... Aber für dieses Problem lässt sich bestimmt eine Abhilfe schaffen.

Hast du denn bereits einen Ansatz, der für dich stimmt?


Zireal
 

homer65

Top Contributor
Ich habe mal eine kleine Anwendung geschrieben, da werden Bilder als BLOB in der Datenbank gespeichert.
Meine Überlegung damals war, das nicht besonders viele Bilder abgespeichert werden und die Datenbank dadurch nicht sonderlich aufgebläht wurde. Von der Datenbank mache ich eh regelmäßige Sicherungen also brauchte ich mir kein neues Sicherungskonzept zu überlegen.
 

Zireal

Mitglied
Sind diese "Ich-denke-ich-habe-eh-nicht-so-viele-Daten"-Konstrukte nicht eher kritisch?

Allgemein sollte man meiner Meinung nach mit Lösungen arbeiten, die in jeder Situation einwandfrei funktionieren können. Unabhängig von Menge und Grösse der Datensätze.


Zireal
 
M

maki

Gast
Sind diese "Ich-denke-ich-habe-eh-nicht-so-viele-Daten"-Konstrukte nicht eher kritisch?
Das nennt sich UseCase bzw. Anforderung.

Allgemein sollte man meiner Meinung nach mit Lösungen arbeiten, die in jeder Situation einwandfrei funktionieren können. Unabhängig von Menge und Grösse der Datensätze.
Dann bleibt nur immer nur die DB Variante, man denke nur an Transaktionen, Datenkonsitenz,etc.
Kann ganz schön viel Aufwand sein (auch mit der HW/SW) wenn die Daten 2 bzw. 4 GiB überschreiten.
 

Zireal

Mitglied
Das nennt sich UseCase bzw. Anforderung.
Ich wollte viel mehr, auf die "Art" hinweisen Lösungen zu entwickeln, welche nur für diese eine Verwendung gebraucht werden können und sobald andere Aspekte dem "Use Case" beigefügt werden, nicht mehr in dieser Art und Weise verwendbar sind.

Dann bleibt nur immer nur die DB Variante, man denke nur an Transaktionen, Datenkonsitenz,etc.
Kann ganz schön viel Aufwand sein (auch mit der HW/SW) wenn die Daten 2 bzw. 4 GiB überschreiten.

Das stimmt. Doch der Aufwand würde sich vermutlich trotzdem ausbezahlen. :)
 
M

maki

Gast
Ich wollte viel mehr, auf die "Art" hinweisen Lösungen zu entwickeln, welche nur für diese eine Verwendung gebraucht werden können und sobald andere Aspekte dem "Use Case" beigefügt werden, nicht mehr in dieser Art und Weise verwendbar sind.
Beispiel:
Einen Elfenbeinturm zu bauen führt meistens dazu, dass der Kunde sagte: Wo ist die garage die ich bestellt hatte???

Man löst besser nicht alle möglichen Probleme/Anwendungsfälle die nicht gefordert sind, sonst wird man entweder nie fertig, oder im besten Falle hat man dann die berühmte "Overengienered/Overdesigned" Lösung.

Das stimmt. Doch der Aufwand würde sich vermutlich trotzdem ausbezahlen.
Nö, weil du einem Kunden eben nicht klarmachen kannst dass er eine teure, kommerzeille DB braucht um 100MB an Daten zu speichern.
Die OS DBs sind nicht so dolle wenn die Datenmengen richtig groß werden ;)

Hab schon beides gemacht, das berühmte "kommt darauf an" stimmt immer wieder :)
 

Zireal

Mitglied
Beispiel:
Einen Elfenbeinturm zu bauen führt meistens dazu, dass der Kunde sagte: Wo ist die garage die ich bestellt hatte???

Man löst besser nicht alle möglichen Probleme/Anwendungsfälle die nicht gefordert sind, sonst wird man entweder nie fertig, oder im besten Falle hat man dann die berühmte "Overengienered/Overdesigned" Lösung.
Hihi, ich glaube wir reden aneinander vorbei.
Mein KuchenBeispiel: ;)
Du möchtest einen Kuchen backen und da er eine ausgefallende Form haben soll, musst du eine Kuchenform basteln.
Bastelst du lieber eine Form aus einem einzigen Stück, dass du es für gerade diesen Kuchen verwenden und nur diese eine Form backen kannst oder baust du dir eine Form die aus ein paar Einzelteilen besteht, damit du X verschiedene Formen daraus zusammenstecken kannst und somit immer wieder Kuchen in verschiedensten Formen backen kannst?

(Abgesehen davon, dass wohl kaum jemand eine Kuchenform selbst "basteln" würde, geschweige denn in verschiedenen Formen - repräsentiert dieses Beispiel meine Aussage meiner Meinung nach treffend. :D )


Nö, weil du einem Kunden eben nicht klarmachen kannst dass er eine teure, kommerzeille DB braucht um 100MB an Daten zu speichern.
Die OS DBs sind nicht so dolle wenn die Datenmengen richtig groß werden ;)

Hab schon beides gemacht, das berühmte "kommt darauf an" stimmt immer wieder :)

Nun gut, da muss ich dir Recht geben! ;) Aber wenn du dem Kunden jedoch auch erzählen würdest, dass er damit auch mehrere Gigabyte an Daten aus zukünftigen Projekten sichern könnte, sieht das ganze vielleicht anders aus? Vielleicht. Investition? ;)
 

homer65

Top Contributor
Klar! Jedoch kann man sich an solche Lösungen "herantasten" in dem man entsprechende Technologien verwendet. ;)

Hmh, das ganze fängt schon bei der Hardware an, die man einsetzt. Die muß zu den Anforderungen passen.
Dann geht es bei der Architektur der Software weiter. Die legt man für große Datenmengen und viel Durchsatz auch anders an.
Jedenfalls erfordert so eine Lösung erheblich mehr Aufwand und wird damit auch entsprechend teuer.

Was spricht dagegen für einen einfachen Anwendungsfall auch eine kostengünstige Lösung zu suchen. Man macht nur das was nötig ist.

Das Beispiel mit der Garage und dem Elfenbeiturm finde ich gut. Vielleicht wäre der Kunde auch mit dem Elfenbeinturm zufrieden, wenn er ihn zum Preis der Garage bekäme.
 
M

maki

Gast
Aber wenn du dem Kunden jedoch auch erzählen würdest, dass er damit auch mehrere Gigabyte an Daten aus zukünftigen Projekten sichern könnte, sieht das ganze vielleicht anders aus? Vielleicht. Investition?
Klar, wenn er einsieht dass es zwischen 300% und 3000% teurer ist und ihm "heute" aber keinen Vorteil bringt ;)

Das ist leidier viel zu oft passiert, aber ohne dass der Kunde eine Wahl hatte, man sehe sich alte J2EE Projekte an..
Theoretisch: Skalierbar , Clusterfähig, ausfallsicher, standardkonform
Praktisch: sehr teuer, nicht skalierbar/Clusterfähig weil man sich nicht an den Standard gehalten hat, viel komplexer als notwendig

Es ist wirklich so, dass man am flexibelsten (und kostengünstigsten) bleibt, wenn man nur die genau die Problem löst bzw. Anforderungen umsetzt die der Kunde hat.
 

Zireal

Mitglied
Klar, wenn er einsieht dass es zwischen 300% und 3000% teurer ist und ihm "heute" aber keinen Vorteil bringt ;)

Das ist leidier viel zu oft passiert, aber ohne dass der Kunde eine Wahl hatte, man sehe sich alte J2EE Projekte an..
Theoretisch: Skalierbar , Clusterfähig, ausfallsicher, standardkonform
Praktisch: sehr teuer, nicht skalierbar/Clusterfähig weil man sich nicht an den Standard gehalten hat, viel komplexer als notwendig

Es ist wirklich so, dass man am flexibelsten (und kostengünstigsten) bleibt, wenn man nur die genau die Problem löst bzw. Anforderungen umsetzt die der Kunde hat.

Vermutlich hast du Recht. Doch es gibt bestimmt Leute welche für solche Projekte eine Investition als lohnenswert erachten. (Da es Ihnen in Zukunft Vorteile einbringen kann...) ;)

Nun gut, wir sind etwas vom Thema abgewichen. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
N Bilder aus Datenbank dynamisch in JSF streamen Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
H im IE werden leere Bilder mit X gekennzeichnet Web Tier 4
K Bilder nach dem Upload nutzen Web Tier 10
M Bilder in Servlets Web Tier 8
M JSP Custom Tag für Bilder Web Tier 14
D Bilder werden nicht angezeigt Web Tier 2
D Bilder werden nicht angezeigt Web Tier 21
H Vorgehensweise: Bilder anzeigen/erstellen in JSP/Servlet ? Web Tier 3
N JSF: Servlet für Bilder: Verbindung zu Spring Service ? Web Tier 1
LimDul Komplexe Generierung von Java-Klassen aus WSDL Web Tier 1
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
platofan23 Java Login Überprüfung ohne Srciptlets in der JSP Web Tier 4
Dimax JSP Progress Bar in JSP nur mit Java Web Tier 4
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
R JavaScript für Java Enterprise Entwickler Web Tier 1
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
S Button klick soll Java methode aufrufen Web Tier 2
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
F JSP jSP Datei mit normalem Java Programm auslesen? Web Tier 5
T Spark Java Web Framework Web Tier 0
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S java.lang.ExceptionInInitializerError: Wieso??? Web Tier 3
N JSP Free Webhoster Java Backend? PHP? Web Tier 1
D Java EE Servlet login Problem Web Tier 1
L Servlet Java Entschlüsselungsprogramm in Webapplikation einbinden Web Tier 0
Streeber java.lang.NoClassDefFoundError: org/sqlite/NativeDB Web Tier 0
M GWT - Externe Java Libs auf Server Seite - zB. JDBC Web Tier 6
S Java Bean und Java Servlet Web Tier 2
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
H MVC in Java pur / Controller als Instanz? / Theorie! Web Tier 4
T Einsteigerfragen zu Servlets/Webprogrammierung mit Java Web Tier 11
J Übergabe von Parameter aus JSP an Java Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
D JSF Überprüfen der Session ID in JSF und JAVA Web Tier 9
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
J JSF Java Beans Konventionen Web Tier 2
P Blog in Java/JSP Web Tier 5
S Per JavaScript Java ansteuern - Welche Technik? Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B Thread start bei Java Web Anwendung Web Tier 6
M Suche Java Framework Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
G Probleme mit EclipseLink und Java.util.Date Web Tier 3
ruutaiokwu js kalendar, der mit java.text.SimpleDateFormat kombatibel ist... Web Tier 4
B Java EE 6 Problem (EL) Web Tier 4
F Migration eines CMS von PHP nach JAVA Web Tier 3
R GWT 2.1.1 mit Java 1.6 statt 1.5 Web Tier 8
W JSP - Attribut-Werte aus JAVA-Klasse ? Web Tier 8
T Werte aus java Klasse in jsp nutzen Web Tier 5
N java.lang.NoClassDefFoundError: org/jdom/JDOMException Web Tier 3
M JSP Ausgabe von Java-Objekten Web Tier 7
D JSP, Java Applets einbinden Web Tier 2
LadyMilka java.lang.NumberFormatException: For input string: ... Web Tier 5
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
S Java Servlet Content Type Web Tier 3
K Analye einer Seite (Java, JSP, ...) Web Tier 12
J rich:modalpanel vom java-code aus öffnen und schliessen Web Tier 2
S Expression Language in Java Web Tier 13
A Ssh connection mit java jsch? Web Tier 2
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
M Body onUnload Java Methode aufrufen Web Tier 13
F Frage zu Java Beans Web Tier 17
M Java Framework für größere Projekte verwenden Web Tier 5
U access denied bei Datei Schreiben mit Java unter Linux trotz gesetzter Rechte Web Tier 2
P Java-Program -> Web Programm Web Tier 6
F Java Applets in html einbinden Web Tier 10
A SSL-Zertifikat in Java-Webanwendungen laden Web Tier 4
ruutaiokwu Wert hinter JSP-Tag nach Java-String in Skriptlet Web Tier 4
N java bean in eclipse Web Tier 6
S Java Code in JSF Web Tier 10
N Servlet und java.lang.NoClassDefFoundError Web Tier 4
D request.contextPath in Java-Klasse ausführen Web Tier 5
T In einem Struts Tag Werte mit Java einfügen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
G CSV-Anbindung an Java Web Tier 2
G Java Server Face Performancelastig? Web Tier 2
H Java Servlet und HTML Form Web Tier 3
U Java Application auf Tomcat Web Tier 5
G Validierung mit Java Server Faces Web Tier 4
J SingleSign on bei 2 Webapplikationen Web Tier 1
S Daten zwischen 2 Servlets aus 2 Webapplikationen teilen? Web Tier 17

Ähnliche Java Themen

Neue Themen


Oben