CPU
Lieutenant
- Registriert
- Jan. 2006
- Beiträge
- 704
Hallo Community,
um es vorab zu sagen: verwand mit meiner Frage ist ja die Frage, ob man Bilder in der Datenbank speichern soll und dann mit PHP "streamen" soll oder lieber im Dateisystem. Hier gibt es Vor- und Nachteile, die in diesem Artikel relativ gut beschrieben sind!
Mein Problem liegt aber etwas anders!
Bisher gibt es eine Datenbank, die Daten zu einem Einträg hält, und drei Netzlaufwerke, auf denen jeweils ein Ordner für jeden Eintrag (also mit ID als Ordnername) aus der Datenbank liegt und darin liegen ein Paar Worddokumente, Excel-Mappen, PDF-Dokumente und Bilder (c.a. <30 MB/p.a. 900 MB). Das die "Anhänge" zu diesen Daten in der Datenbank auf drei Netzlaufwerken verteilt liegen hat Berechtigungsgründe (nicht jeder darf auf alle drei Zugreifen, manche nur auf zwei und manche nur auf eines).
Das habe ich vor: nun einfach die Dokumente in der Datenbank zu speichern. Die Abfrage findet dann mit Java folgendermaßen statt: Java fragt - wenn der Benutzer auf der Eigenschaftsseite der Dokumente ist - eine Dokumentenliste ab (nur Dateinamen). Wenn ein Nutzer doppelt auf ein Dokument klickt, wird es ins temporäre Verzeichnis geladen, der Nutzer ändert und dann schließt der Nutzer das Dokument und wenn Änderungen vorgenommen wurden (z.B. Vergleich altes Änderungsdatum vs. neues Änderungsdatum o.ä.), dann fragt er den Benutzer, ob das Dokument in der Datenbank aktualisiert werden soll.
Vorteile: bessere Verbindung zwischen Daten und Dateien, bessere und einfacherere Berechtigungen möglich, Berechtigungen können mit einem Mal gesetzt werden (nicht einzeln für Daten und Dateien) = erhöhter Sicherheit
Da ich mit BLOBs noch nicht so oft gearbeitet habe (mit Java Bilder in die DB schreiben und wieder lesen ist echt einfach), weiß ich nicht wie sich die Datenbank verhält.
1.) Wie verhält sich mein Vorhaben performancetechnisch im lokalen Netzwerk? Muss der Rechner, auf dem die MySQL-Datenbank läuft "kräftig" sein (bei ca. 10 Benutzern, die damit arbeiten)?
2.) Was passiert, wenn die Gesamtdatenmenge in der Datenbank wächst (eigentlich liegen 90% der Dokumente ja nur "in" der Datenbank, mit 10% wird ja ständig gearbeitet. Wie wirkt sich das aus?)?
3.) Wie ist das mit der Datei-Sicherheit (also nicht Diebstahlschutz)? Klar werden regelmäßig Datenbank-Backups gemacht. Doch ist die Datenbank dann anfälliger für Probleme? Geht sie schneller "kaputt"? Ist es irgendwie nachteiliger als wenn ich Daten in DB und Dateien in FS habe?
4.) Wie verhalten sich die Übertragungsgeschwindigkeiten im lokalen Netzwerk (10/100)? Gibt es da irgendwelche grawierdenden Nachteile?
So, das wär's erstmal. Eigentlich finde ich die Idee mit der Datenbank garnicht schlecht. Weil sonst eben die Verknüpfung von (Meta-)Daten und Dateien nur über eine Pfadangabe läuft und man dann Probleme hat, wenn die Berechtigungen anstendig (und auch einfach) gesetzt werden sollen oder wenn man den Windows-Explorer öffnen muss aus Java mit der Pfad-Angabe (Problem, wenn sich der Laufwerksbuchstabe ändert etc.). Irgendwie ist das sehr "unsauber" und kann viele Probleme verursachen.
Viele Grüße,
CPU
um es vorab zu sagen: verwand mit meiner Frage ist ja die Frage, ob man Bilder in der Datenbank speichern soll und dann mit PHP "streamen" soll oder lieber im Dateisystem. Hier gibt es Vor- und Nachteile, die in diesem Artikel relativ gut beschrieben sind!
Mein Problem liegt aber etwas anders!
Bisher gibt es eine Datenbank, die Daten zu einem Einträg hält, und drei Netzlaufwerke, auf denen jeweils ein Ordner für jeden Eintrag (also mit ID als Ordnername) aus der Datenbank liegt und darin liegen ein Paar Worddokumente, Excel-Mappen, PDF-Dokumente und Bilder (c.a. <30 MB/p.a. 900 MB). Das die "Anhänge" zu diesen Daten in der Datenbank auf drei Netzlaufwerken verteilt liegen hat Berechtigungsgründe (nicht jeder darf auf alle drei Zugreifen, manche nur auf zwei und manche nur auf eines).
Das habe ich vor: nun einfach die Dokumente in der Datenbank zu speichern. Die Abfrage findet dann mit Java folgendermaßen statt: Java fragt - wenn der Benutzer auf der Eigenschaftsseite der Dokumente ist - eine Dokumentenliste ab (nur Dateinamen). Wenn ein Nutzer doppelt auf ein Dokument klickt, wird es ins temporäre Verzeichnis geladen, der Nutzer ändert und dann schließt der Nutzer das Dokument und wenn Änderungen vorgenommen wurden (z.B. Vergleich altes Änderungsdatum vs. neues Änderungsdatum o.ä.), dann fragt er den Benutzer, ob das Dokument in der Datenbank aktualisiert werden soll.
Vorteile: bessere Verbindung zwischen Daten und Dateien, bessere und einfacherere Berechtigungen möglich, Berechtigungen können mit einem Mal gesetzt werden (nicht einzeln für Daten und Dateien) = erhöhter Sicherheit
Da ich mit BLOBs noch nicht so oft gearbeitet habe (mit Java Bilder in die DB schreiben und wieder lesen ist echt einfach), weiß ich nicht wie sich die Datenbank verhält.
1.) Wie verhält sich mein Vorhaben performancetechnisch im lokalen Netzwerk? Muss der Rechner, auf dem die MySQL-Datenbank läuft "kräftig" sein (bei ca. 10 Benutzern, die damit arbeiten)?
2.) Was passiert, wenn die Gesamtdatenmenge in der Datenbank wächst (eigentlich liegen 90% der Dokumente ja nur "in" der Datenbank, mit 10% wird ja ständig gearbeitet. Wie wirkt sich das aus?)?
3.) Wie ist das mit der Datei-Sicherheit (also nicht Diebstahlschutz)? Klar werden regelmäßig Datenbank-Backups gemacht. Doch ist die Datenbank dann anfälliger für Probleme? Geht sie schneller "kaputt"? Ist es irgendwie nachteiliger als wenn ich Daten in DB und Dateien in FS habe?
4.) Wie verhalten sich die Übertragungsgeschwindigkeiten im lokalen Netzwerk (10/100)? Gibt es da irgendwelche grawierdenden Nachteile?
So, das wär's erstmal. Eigentlich finde ich die Idee mit der Datenbank garnicht schlecht. Weil sonst eben die Verknüpfung von (Meta-)Daten und Dateien nur über eine Pfadangabe läuft und man dann Probleme hat, wenn die Berechtigungen anstendig (und auch einfach) gesetzt werden sollen oder wenn man den Windows-Explorer öffnen muss aus Java mit der Pfad-Angabe (Problem, wenn sich der Laufwerksbuchstabe ändert etc.). Irgendwie ist das sehr "unsauber" und kann viele Probleme verursachen.
Viele Grüße,
CPU