Umgang mit Video- und Audiodaten

Registriert
Juli 2020
Beiträge
18
Ich muss eine Video- und Audioverwaltung programmieren. Ich habe bisher aber nur Datensätze in relationale Datenbanken gespeichert. Bei diesem Problem fällt mir aber auf, dass sich Video- und Audiodaten nicht gerade für relationale Datenbanken eignen. Wie würdet ihr denn solche Formate strukturiert speichern, so dass man sie programmtechnisch auch verwalten kann?
 
Den Dateien eine eindeutige ID geben und unter dieser ID als Dateinamen im Dateisystem ablegen. Die ID dann in der Datenbank speichern und mit den relevanten Informationen über die Datei und wo sie dazugehört verknüpfen.

Große Dateien will man generell nicht in der DB speichern, das macht die Wartung und Backups sehr schnell zu einem Problem. Es limitiert auch in anderen Bereichen, z.B. wenn man die Dateien auslagern will auf andere Server. Es hat aber auch einen Nachteil wenn man die Dateien außerhalb der DB hat, man muss selbst für die Konsistenz der Dateien und der DB sorgen. Das ist nicht so schwierig wenn man die Dateien nie verändert, ansonsten kann das sehr problematisch sein.

Wenn es sehr viele Dateien sein sollen, würde ich Unterordner anlegen und die Dateien nach irgendeinem Schema gleichmäßig darin verteilen. Viele Tools haben leichte bis ernsthafte Probleme wenn sehr viele Dateien in einem Ordner sind.

Auf keinen Fall den Dateinamen vom User übernehmen im Dateisystem, sondern nur in der DB speichern. Wenn man da nicht sehr aufpasst ist das ansonsten schnell eine Sicherheitslücke.

Eine Nummer größer wäre die Dateien in Object Storage zu verwalten wie z.B. Amazon AWS S3. Ist bei großen Dateien aber auch nicht billig, ganz besonders beim Traffic, und S3 ist natürlich zwangsweise in der Cloud, nicht lokal.
 
In anderen Anwendungen wird meistens ein "Library" Ordner festgelegt und der Pfad als Konstante genutzt.

die Datei-Daten werden dann in einer Tabelle mit ID, Filename, Path, Format, Codec, Bewertung, Publisher, etc gespeichert.
 
Möglicherweise sollen sich auch dokumentenbasierte Datenbanken wie CouchDB für z. B. mpeg-Formate eignen, aber das muss ich erstmal experimentell prüfen. Theoretisch wäre das dann aber vergleichbar mit dem Ansatz von @Dalek
 
MYSQL_ERROR_33 schrieb:
Möglicherweise sollen sich auch dokumentenbasierte Datenbanken wie CouchDB für z. B. mpeg-Formate eignen, aber das muss ich erstmal experimentell prüfen. Theoretisch wäre das dann aber vergleichbar mit dem Ansatz von @Dalek

Der wesentliche Vorteil wenn man Dateien in der Datenbank speichert ist das die Integrität von Metadataden und den Dateien selbst automatisch gewährleistet ist. Wenn man eine separate DB für Files nimmt ist das nicht mehr so, und es gibt die gleiche Problematik wie wenn sie im Dateisystem gespeichert wären.

Auch eine Dokumentendatenbank ist nicht ideal für Dateien, und ich sehe da keinen Vorteil gegenüber dem Dateisystem. Für die Datenbank sind die Dateien einfach nur binäre Blobs, die kann da nichts sinnvolles mit machen. Alle interessanten Daten nach denen man Filtern würde oder Statistiken draus macht sind in der relationalen Datenbank, das sind die Metadaten zu den Dateien.
 
Zurück
Oben