Geeignetes Verzeichnis

Diskutiere Geeignetes Verzeichnis im Allgemeine Java-Themen Bereich.
T

TM69

Bezugnehmend auf den Beitrag von @Schuriko https://www.java-forum.org/thema/pfad-zu-ressourcen.188450/#post-1222298 hätte ich auch mal eine Frage an euch.

Ich erstelle gerad ein webbasiertes Zeichenwerkzeug. An dieses Zeichenwerkzeug können sich beliebig viele Benutzer anmelden und ihre eigene Zeichnung erstellen.
Später soll es auch Teambasiert noch arbeiten.

Jeder Benutzer kann z.B. u.a. auch eigene Paletten mit selbstdefinierten Farben erzeugen, diese soll im Backend auf einem Server gespeichert werden.
Wo würdet ihr diese Dateien speichern? Ich persönlich bin mir dabei noch etwas unschlüssig.
 
H

httpdigest

Auch, wenn man das sicherlich erstmal per irgendeiner Java File API als Datei auf dem lokalen Dateisystem speichern könnte, wirst du damit später Skalierungs- und Portierungsprobleme bekommen. Normalerweise sollte man immer den eigentlichen Server von der Datenhaltung entkoppeln, so dass im besten Fall beides auf unterschiedlichen Maschinen laufen kann und die Daten per Netzwerkprotokoll ausgetauscht werden können. Das ist aber nur dann wirklich notwendig, wenn du irgendwann einmal horizontale Skalierung etwa zwecks Lastverteilung oder Redundanz/Verfügbarkeit/Failover benötigst: Nur, weil du deinen Server ein zweites oder drittes Mal auf einer neuen Maschine startest, sollen ja nicht alle Daten aller Nutzer dort nicht mehr erreichbar sein, weil sie auf dem lokalen Dateisystem einer anderen Maschine gespeichert sind.
Natürlich kann man hier auch z.B. Netzwerkdateisysteme nutzen. Das Problem dabei ist aber, dass du die Atomarität und die Sichtbarkeit von konkurrierenden Änderungen durch mehrere Server selbst handeln musst. Du hast also ein verteiltes System mit einer nicht-transaktionalen Datenhaltung.
Gerade für das Stichwort "Transaktionalität" und "Ausfallsicherheit" bieten sich dann z.B. Systeme an, die das implementieren, wie eben OLTP Datenbanken wie etwa relationale Datenbanksysteme (MySQL, PostgreSQL, ...) oder auch viele dokumentbasierte oder Schlüssel-/Wert-basierte Datenbanken (MongoDB z.B.).
Letztlich hängt also die zu wählende Lösung von den Faktoren Verfügbarkeit, Ausfallsicherheit, Backupfähigkeit, Lastverteilung deiner Anwendung ab.
 
T

TM69

Ja,
Auch, wenn man das sicherlich erstmal per irgendeiner Java File API als Datei auf dem lokalen Dateisystem speichern könnte, wirst du damit später Skalierungs- und Portierungsprobleme bekommen. Normalerweise sollte man immer den eigentlichen Server von der Datenhaltung entkoppeln, so dass im besten Fall beides auf unterschiedlichen Maschinen laufen kann und die Daten per Netzwerkprotokoll ausgetauscht werden können. Das ist aber nur dann wirklich notwendig, wenn du irgendwann einmal horizontale Skalierung etwa zwecks Lastverteilung oder Redundanz/Verfügbarkeit/Failover benötigst: Nur, weil du deinen Server ein zweites oder drittes Mal auf einer neuen Maschine startest, sollen ja nicht alle Daten aller Nutzer dort nicht mehr erreichbar sein, weil sie auf dem lokalen Dateisystem einer anderen Maschine gespeichert sind.
Natürlich kann man hier auch z.B. Netzwerkdateisysteme nutzen. Das Problem dabei ist aber, dass du die Atomarität und die Sichtbarkeit von konkurrierenden Änderungen durch mehrere Server selbst handeln musst. Du hast also ein verteiltes System mit einer nicht-transaktionalen Datenhaltung.
Gerade für das Stichwort "Transaktionalität" und "Ausfallsicherheit" bieten sich dann z.B. Systeme an, die das implementieren, wie eben OLTP Datenbanken wie etwa relationale Datenbanksysteme (MySQL, PostgreSQL, ...) oder auch viele dokumentbasierte oder Schlüssel-/Wert-basierte Datenbanken (MongoDB z.B.).
Letztlich hängt also die zu wählende Lösung von den Faktoren Verfügbarkeit, Ausfallsicherheit, Backupfähigkeit, Lastverteilung deiner Anwendung ab.
Ja da gebe ich dir voll ganz recht. Deshalb fällt es mir momentan schwer eine optimale Technik zu finden. Was würdest du denn bevorzugen?
 
H

httpdigest

Ich würde nichts per se bevorzugen. Es hängt von den ganz konkreten Anforderungen ab.
 
L

LimDul

Standard ist in der Regel eine Datenbank. Allerdings setzt die voraus, dass man auch entsprechend strukturierte Daten hat, die man in einer Datenbank ablegen kann. Mit einer Datenbank bekommt man halt schon viel von dem was @httpdigest erwähnt hat geschenkt - zu dem Preis, dass man ein OR-Mapping braucht.
 
H

httpdigest

Korrekt, wobei Datenbank nicht gleich RDBMS heisst. Für unstrukturierte/schemalose und auch BLOB Daten, würde ich z.B. einfach ein dokumenten-basiertes Datenbankmanagementsystem wie MongoDB nehmen.
 
Thema: 

Geeignetes Verzeichnis

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben