# Brauche Anregungen für Mandantensystem: Abspeicherung



## internet (26. Apr 2014)

Hallo zusammen,

ich plane eine Applikation, die mandantenfähig ist.
Jeder Mandant soll Dokumente (Bilder, PDF, ein Userbild etc. haben).

Nun stellt sich mir die Frage wie ich das aufbaue.
Erstelle ich für jeden Mandanten ein Verzeichnis, das dann physisch auf der Festplatte sich befindet?
Also Beispiel:

User1:

Ordername: user1
- user1\userbild
- user1\dokumente

usw.
Oder kann hier jemand aus der Erfahrung sprechen?
Wie sieht das mit der Skalierbarkeit aus? Sprich: Was ist, wenn Festplatte voll ist? 

Über hilfreiche Antworten würde ich mich sehr freuen.


----------



## turtle (26. Apr 2014)

Nimm eine Datenbank.


----------



## internet (27. Apr 2014)

Ich habe eine Datenbank.
Aber hier muss ich ja auch einen Pfad für die Speicherung angegeben.

Es macht doch Sinn dies zu organisieren, sonst habe ich ja zig tausend Dateien in einem Ordner???


----------



## turtle (27. Apr 2014)

> Es macht doch Sinn dies zu organisieren, sonst habe ich ja zig tausend Dateien in einem Ordner???


Eben nicht. BTW, welche DB hast du denn ?

Du speicherst ja Daten in Tabellen in der Datenbank. 

Wie das auf ein Speichermedium verteilt wird, kann dir "völlig" egal sein. Häufig werden proprietäre Formate verwendet, damit beispielsweise in einer Datei (auf Platte) eine Tabelle (mit vielleicht tausenden Records) gespeichert sind.

Deine Anforderung nach Bildern, PDF-Dokumenten wird in einer Datenbank als Blob oder CLob gespeichert. Hier kommt häufig eine Grössenbeschränkung zum Tragen,das so ein Blob "nur" 2-GB groß sein darf. Hier kannst du ebenfalls abwägen, ob der Blob in der Tabelle oder separat im Dateisystem abgespeichert wird.

Wenn du aber mehre tausend Benutzer hast und jeder Einzelne hat hat Dokumente im GB-Bereich...

Dein Hinweis mit zig tausend Dateien verwirrt mich. Denn entweder hast du so große Datenbestände oder nicht. Und du hast ja wohl nicht zig tausende Tabellen, selbst wenn du die DB Blobs als externe Files speichern lässt. Und Plattenplatz ist nun wirklich kein Argument. Wichtiger sind da wohl mehr Wartbarkeit und Performance des Systems, Gründe die ebenfalls für eine DB sprechen.


----------



## internet (27. Apr 2014)

Hallo turtle, 
vielen Dank für Deine Antwort.

Ich nutze als Datenbanksystem MySQL.
Ich habe in JSF mit Primefaces eine kleinere Applikation geschrieben, in der der User Bilder hochladen kann. Die Datei wird als BLOB gespeichert. Funktioniert alles soweit auch.
Die Datei wird ebenfalls auf der Festplatte gespeichert.
Hierfür musste ich ja ein Pfad angeben, in welchem sich die Datei dann befindet.

Deshalb würde es doch Sinn machen, dass jeder User ein Ordner hat?

Leider kenne ich mich hierbei überhaupt nicht aus. Daher auch diese Frage im Forum.

Generell würde mich interessieren:
a) Wie groß muss man sich so eine BLOB vorstellen? Steckt dahinter quasi der Binär-Code, der dann zur Laufzeit umgewandelt wird in die eigentliche Datei?

Du meinst also, dass das Speichern *NUR* in der Datenbank deutlich mehr Sinn macht?
- Welche Vorteile bringt das Speichern als Datei *und* als BLOB mit sich?

Ich freue mich über Deine Antwort.


----------

