Stockage binaire avec MongoDB et GridFS


Tue 17 November 2015 Par Mike Obrebski

J'ai abordé dans un précédent article de blog, le sujet des différentes options de stockage pour Nuxeo Platform, en particulier le support de MongoDB, avec des cas d'utilisation appropriés. Aujourd'hui, nous allons parler de GridFS pour le stockage binaire et en apprendre plus sur la flexibilité de Nuxeo Platform lorsqu'il s'agit de supporter différents sous-systèmes de stockage et de requêtage afin d'obtenir la configuration la plus adaptée à vos besoins spécifiques.

Jetons un œil à l'architecture de stockage de Nuxeo, ici configurée avec MongoDB et GridFS.
MongoDB - BlobManager
Vous pouvez voir que Nuxeo Platform utilise différents sous-systèmes pour le Document (métadonnées) et le Blob (données binaires). Un document est un ensemble de valeurs de métadonnées, de différents attributs (facettes) ainsi que de données binaires référenceés, combinés en sortie à partir de la base documentaire vers l'application. Pour Nuxeo, les données binaires sont englobées dans un Document. Cela nous permet d'utiliser le stockage le plus approprié pour les métadonnées et les données binaires. Le Nuxeo Document Store et le Blob Store peuvent être connectés afin de pouvoir utiliser ces données abstraites.

Les avantages d'utiliser GridFS


Les utilisateurs de MongoDB connaîtront certainement GridFS. En fournissant un Blob Store intégré via GridFS pour le stockage de données binaires pour remplacer le système de fichiers, nous intégrons le stockage dans un conteneur MongoDB.

Il y a deux avantages principaux :

Premièrement, les capacités de GridFS sont intrinsèquement élevées. Au lieu de gérer directement le système de fichiers, GridFS utilise les fonctionnalités de MongoDB pour fournir des fonctionnalités de réplication, de distribution et de redondance. C'est rendu possible en divisant chaque donnée binaire en morceaux pouvant être configurés et en les stockant en temps qu'enregistrements individuels dans une collection spécialement prévue à cet effet, tandis qu'une autre collection stocke les informations de chaque fichier. L'API GridFS est conçue au-dessus du système MongoDB et gère la division et la reconstitution des fichiers ainsi que les droits d'accès en lecture/écriture. Puisque les fichiers sont morcelés, vous pouvez accéder en lecture ou en écriture aux morceaux dont vous avez besoin sans streamer le fichier entier. Vous pouvez également télécharger et streamer plusieurs morceaux simultanément pour éventuellement augmenter le débit.

Le second avantage de combiner MongoDB et GridFS est la mutualisation des outils et des méthodes de gestion et d'administration. Il n'est plus nécessaire d'avoir différentes stratégies de backup et d'infrastructure pour la base de données et le système de fichiers, donc on bénéficie ainsi d'un gain d'efficacité en matière d'administration.

Configurer Nuxeo Platform pour utiliser GridFS


Configurer Nuxeo Platform pour utiliser GridFS à la place du système de fichiers est simple et transparent. Puisque Nuxeo Platform est basée sur un système d'extensions, il suffit de déployer une configuration XML pour spécifier l'implémentation du Blob Manager et quelques propriétés.

 <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>

Désormais, lorsqu'il accédera à une donnée binaire, le système utilisera simplement les mêmes méthodes de lecture/écriture sur la nouvelle implémentation. La migration devrait donc se dérouler assez simplement. Nuxeo Platform stocke les données binaires dans une structure dite en « bucket » où la seule référence est le nom de fichier basé sur une somme de contrôle MD5 unique. Donc si vous disposez de données binaires existantes dans Nuxeo Platform dans le système de fichiers, vous pouvez simplement les copier dans GridFS et activer le Blob Manager. Cette opération ne se voit pas dans l'application puisque seul l'identifiant est transmis au Blob Manager.

Le package GridFS est disponible sur la Marketplace - MongoDB GridFS Storage


Catégorie: Product & Development
Tagged: Insight, MongoDB, Nuxeo Integration, Nuxeo Platform 7.x