In einem früheren Blog-Beitrag habe ich über verschiedene Speicheroptionen für die Nuxeo Platform und im Speziellen über Unterstützung für MongoDB und entsprechende Anwendungsfälle gesprochen. Heute besprechen wir GridFS für Binärspeicher und Einzelheiten über die Flexibilität der Nuxeo Platform zur Unterstützung verschiedener untergeordneter Speicher- und Abfragesysteme, damit Sie die perfekte Konfiguration für Ihre konkreten Anwendungsfälle erreichen.

Lassen Sie uns noch einmal die Speicherarchitektur von Nuxeo anschauen, in diesem Fall konfiguriert mit MongoDB und GridFS.

MongoDB - BlobManager

Sie können sehen, dass die Nuxeo Platform verschiedene untergeordnete Systeme für das Dokument (Metadaten) und den Blob (Binärdateien) verwendet. Ein Dokument besteht aus einer Reihe von Metadaten, verschiedenen Attributen (Facetten) sowie referenzierten Binärdateien, die in der Repository-Ausgabe an die Anwendung kombiniert werden. Ein Binary ist in Nuxeo von einem Dokument umschlossen. Aus diesem Grund können wir den am besten geeigneten Speicher für Metadaten und Binärdateien verwenden. Der Nuxeo Document Store und die Blob-Stores sind flexibel und erlauben die Möglichkeit, diese Abstraktionen zu nutzen.

Vorteile von GridFS

Benutzer von MongoDB sind sicher mit GridFS vertraut. Durch die Bereitstellung eines Blob-Stores, der durch GridFS implementiert wurde, um das Dateisystem durch Binärspeicher zu ersetzen, integrieren wir auf sinnvolle Weise den Dokument- und Blob-Speicher in den MongoDB-Container.

Hier gibt es Vorteile in zwei Bereichen:

Erstens sind die GridFS-Funktionen selbst hervorragend. Statt direkt mit dem Dateisystem zu arbeiten, nutzt GridFS die Funktionalität von MongoDB, um Replikations-, Bereitstellungs- und mögliche Redundanzfunktionen zur Verfügung zu stellen. Dies ist möglich, indem jedes Binary in Blöcke mit konfigurierbarer Größe aufgeteilt wird. Diese werden dann als einzelne Datensätze in einer ihnen eigenen Kollektion gespeichert, während eine andere Kollektion die Informationen jeder Datei speichert. Die GridFS API ist auf dem MongoDB-System erstellt und übernimmt die gesamte Blockerstellung (Chunking), die Wiederherstellung von Dateien und den Lese-/Schreibzugriff. Da die Dateien in Blöcke aufgeteilt sind, können Sie auf die benötigten Blöcke für Lese- oder Schreibvorgänge zugreifen, ohne die gesamte Datei zu streamen. Sie können außerdem mehrere Teile gleichzeitig herunterladen und streamen, um den Datenverarbeitung möglicherweise zu erhöhen.

Der zweite Vorteil, MongoDB mit GridFS zu kombinieren, liegt in den Standardverwaltungs- und Administrations-Tools und -Methoden. Unterschiedliche Backup- und Infrastrukturstrategien für die Datenbank und das Dateisystem werden nicht mehr benötigt und damit unter dem Aspekt der Verwaltung effizient.

Konfiguration der Nuxeo Platform für die Verwendung von GridFS

Die Konfiguration der Nuxeo Platform für die Verwendung von GridFS anstelle des Dateisystems ist einfach und transparent. Da die Nuxeo Platform auf Erweiterungen basiert, muss lediglich eine XML-basierte Konfiguration bereitgestellt werden, um die Blob-Manager-Implementierung und einige Eigenschaften festzulegen.

 <extension target="org.nuxeo.ecm.core.blob.BlobManager" point="configuration">
     <blobprovider name="default">
         <class>org.nuxeo.mongodb.blob.GridFSBinaryManager</class>
         <property name="server">localhost</property>
         <property name="dbname">nuxeo</property>
         <property name="bucket">nxblobs</property>
     </blobprovider>
 </extension>

Beim Zugriff auf ein Binary ruft das System nun einfach dieselben Lese-/Schreibmethoden für die neue Implementierung auf. Auch eine Migration wäre ein einfacher Vorgang. Die Nuxeo Platform speichert Binaries in einer einfachen Bucket-ähnlichen Struktur, wo die einzige Referenz ein eindeutiger auf MD5 Checksum basierter Dateiname ist. Wenn also auf der Nuxeo Platform schon Binaries im Dateisystem vorhanden sind, könne Sie sie einfach kopieren und in GridFS ablegen und den Blob-Manager wechseln. Dieser Vorgang ist für die Anwendung transparent, da nur die ID an den Blob-Manager weitergegeben wird.

Das GridFS-Paket steht im Marketplace-Paket zur Verfügung - MongoDB GridFS Storage