Hallo,
Ich rate dir auch generell davon ab Dateien in die Datenbank zu speichern.
Ich würde eine Kombination aus Dateisystem und Datenbank verwenden. In der Datenbank die Schlüssel und Dateinamen und sonstige Dateiinfos speichern und die Daten selber im Dateisystem ablagern.
Damit du keine Konflikte mir Dateinamen etc bekommst am besten den Internen db Schlüssel als Dateinamen verwenden.
Falls Verzeichnisstrukturen innerhalb der Anwendung gewünscht sind würde ich diese wieder über die Datenbank verwalten. Das wird sonst unnötig kompliziert.
Generell würde ich aber wenn man mit sehr vielen Dateien rechnen kann nicht alle Dateien im einem Verzeichnis kopieren. Z.B. max 1000 Dateien in einem Verzeichnis anlegen und wenn diese erreicht sind ein neues Verzeichnis anlegen. Dieses einfach auch nur mit einer fortlaufenden Nummer.
Als Endpunkt und schliesslich um auf die Dateien zuzugreifen bietet sich ein Wcf-Service an. Hier sollten dann funktionen drin liegen um sich den Stream zu holen oder hochzuladen. Falls Dateien auch bearbeitet werden müssen muss noch an einem locking Mechanismus gedacht werden. Dies läßt sich aber auch recht umkompliziert umsetzen. Dateien dürfen auf nur über den Service gelöscht werden. Der Service muss selber auch darauf achten das das Dateisystem mit der Datenbank synchron bleibt. Hier solltest du aber bei MySql das InnoDb System verwenden. Das Isam unterstützt meinem Wissen her keine Transaktionen und diese sind hier total wichtig um sicher zu gehen das die Datenbank mit dem Dateisystem synchron bleibt.
Ich habe grob in der Art einen FileService entwickelt und es funktioniert sehr gut. Das Streaming per Wcf geht geht schnell und die Datenbank bleibt schön kompakt und schlank.
In meinem Service speichere ich auch noch Blobs in der Datenbank ab. Hier aber nur wenn es sich bei der jeweiligen Datei um ein Bild handelt. Wenn das der Fall ist wird ein Thumbnail erstellt und abgespeichert.
Hoffe das ich dir ein paar Tips geben konnte
Sorry wegen den Rechschreibfehlern .. viel zu tun heute .. aber irgendwie wollte ich unbedingt zu dem Thema was posten 😉
lg Sascha