GridFS en MongoDB

GridFS dentro de MongoDB especificac el almacenamiento y recuperación de ficheros que exceden los 16 MB (tamaño de documento BSON).

Con GridFS en lugar de almacenar un fichero en un único documento se divide este fichero en partes (chunks) y cada uno de estos se almacena en un documento separado (tamaño por defecto del chunk es de 256 K).

Cuando se hace una query para un fichero a GridFS (al estilo de HDFS) el driver reensambla los chunks.

Con GridFS pueden realizarse queries de rango sobre ficheros, acceder información de secciones de ficheros,…

Por tanto GridFS es útil para almacenar ficheros de tamaño superior a 16MB pero también cuando necesito accede a partes de fichero sin cargarlo entero en memoria. En algunos casos el uso de GirdFS puede ser más eficiente que el almacenamiento en el sistema de archivos.

Se puede usar GridFS con un driver MongoDB y con la línea de comandos con el comando mongofiles.

Veamos para acabar como se usa desde Java

//Cargamos imagen abyte[] imageBytes = cargarImagen(«C:/Temp/miImagen.gif);

//conexion a BD Mongo

Mongo mongo = new Mongo( «xx.xx.xx.xx» );

String dbName = «mydatabase»;

DB db = mongo.getDB(dbName );

//Creo GridFS sobre base de datos

GridFS fs = new GridFS( db );

//almaceno imagen

GridFSInputFile in = fs.createFile( imageBytes );

in.save();

//recupero Id asignado

in.getId();

//busco imagen almacenada

GridFSDBFile out = fs.findOne( new BasicDBObject( «_id» , in.getId() ) );

Hay otras formas de usar la clase GridFS como podemos ver en este tutorial.

Guardar:

Recuperar:

Borrar:

Deja un comentario