Datenbanken Online Lexikon TH Köln, Campus Gummersbach
Aktuelle Änderungen - Suchen:

GridFS

Hierunter wird verstanden, dass in einer bestehenden MongoDB-Installation Dateien gehostet werden können. Hierfür werden keine zusätzlichen Server oder Programme benötigt. GridFS besteht im Groben aus zwei Collections:

  • fs.files
    • Hier werden Metainformationen zu den gespeicherten Daten abgelegt. Hierunter zählen neben der ObjectId auch die Größe, der Name, der Typ und sonstige weitere Metadaten der Datei.
  • fs.chunks
    • Hier werden die eigentlichen Daten gespeichert, es wird nicht eine Datei pro Dokument abgelegt, sondern das Dokument über mehrere Dateien (vgl. 16 MB Limit) aufgeteilt.

Beim Speichern der Datei wird diese in gleichgroße Chunks (256 KB) aufgeteilt. Diese Größe ist auch im Metadatendokument unter dem Feld ChunkSize gespeichert. Ist die Dateigröße kleiner als 256 KB wird nur eine Datei in fs.chunks Collection verwendet. Ist die Datei größer wird Chunk für Chunk in ein einzelnes Dokument gespeichert. Diese werden über das Feld field_id (enthält ObjectId des Metadatendokuments) dem Metadatendokument zugeordnet. Zusätzlich werden die einzelnen Chunks durchnummeriert, damit sie nachher wieder in der richtigen Reihenfolge zusammengesetzt werden können. Dann wird das Dokument in der fs.files angelegt, dieses enthält die folgenden Informationen:

  • _id
  • filename
  • length
  • chunkSize
  • uploadDate
  • md5

Wenn nun irgendwann wieder auf das ursprüngliche Dokument zugegriffen werden soll, können anhand des Metadatendokuments die einzelnen Chunks wieder zusammnegesetzt werden. Hierfür wird mithilfe der ObjectId oder dem Dateinamen auf das Metadatendokument zugegriffen. Sobald Zugriff auf die Metadaten möglich ist, können sich alle Chunks anzeigen lassen. Für die Ordnung können diese anhand des Feldes n sortiert und direkt in der richtigen Reihenfolge zusammengesetzt werden.

Zusammenfassend lässt sich anhand der folgenden Übersicht entscheiden, ob sich die Verwendung von GridFS anbietet oder nicht:

GridFS-Verwendung bei:

  • vielen Dateien, GridFS kann oftmals viele Dateien besser händeln als viele Dateisysteme
  • Nutzer lädt Dateien hoch, hierbei entstehen oft viele Dateien, welche repliziert und gesichert werden. GridFS ist hierfür der perfekte Ort um diese zu speichern, damit diese wie gewöhnliche Dateien gemanaged werden können. Hierbei kann auch per Query nach User, Uploaddatum, etc. direkt gesucht werden
  • Dateien, die sich oft verändern, da diese an einem Ort gespeichert werden und somit alle Clients diese Updates mitbekommen.

Keine GridFS-Verwendung bei:

  • wenig, kleine und statische Dateien
  • automatisches Update von binären Objekten, welches unter der Dokumentengröße (16 MB) liegt. Hier lässt sich überlegen, das Objekt manuell in einem einzelnen Dokument zu speichern

zurück zu MongoDB