MongoDB – GridFS

Publicités

GridFS est la spécification MongoDB pour le stockage et la récupération de fichiers volumineux tels que des images, des fichiers audio, des fichiers vidéo, etc. C’est une sorte de système de fichiers pour stocker des fichiers mais ses données sont stockées dans des collections MongoDB. GridFS a la capacité de stocker des fichiers encore plus grands que sa limite de taille de document de 16MB.

GridFS divise un fichier en chunks et stocke chaque chunk de données dans un document séparé, chacun d’une taille maximale de 255k.

GridFS utilise par défaut deux collections fs.files et fs.chunks pour stocker les métadonnées du fichier et les chunks. Chaque chunk est identifié par son champ unique _id ObjectId. Le fs.files sert de document parent. Le champ files_id du document fs.chunks relie le chunk à son parent.

Voici un exemple de document de la collection fs.files –

{ "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5": "7b762939321e146569b07f72c62cca4f", "length": NumberInt(646)}

Le document spécifie le nom du fichier, la taille du chunk, la date de téléchargement et la longueur.

Suivant est un exemple de document de fs.chunks document –

{ "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data"}

Ajouter des fichiers à GridFS

Maintenant, nous allons stocker un fichier mp3 en utilisant GridFS en utilisant la commande put. Pour cela, nous utiliserons l’utilitaire mongofiles.exe présent dans le dossier bin du dossier d’installation de MongoDB.

Ouvrez votre invite de commande, naviguez vers le mongofiles.exe dans le dossier bin du dossier d’installation de MongoDB et tapez le code suivant –

>mongofiles.exe -d gridfs put song.mp3

Ici, gridfs est le nom de la base de données dans laquelle le fichier sera stocké. Si la base de données n’est pas présente, MongoDB créera automatiquement un nouveau document à la volée. Song.mp3 est le nom du fichier téléchargé. Pour voir le document du fichier dans la base de données, vous pouvez utiliser la requête find –

>db.fs.files.find()

La commande ci-dessus a retourné le document suivant –

{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 }

Nous pouvons également voir tous les chunks présents dans fs.chunks collection relative au fichier stocké avec le code suivant, en utilisant l’id du document retourné dans la requête précédente –

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

Dans mon cas, la requête a retourné 40 documents, ce qui signifie que le document mp3 entier a été divisé en 40 chunks de données.

Publicités

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.