Recientemente tomé un curso para empezar a trabajar con NoSQL y MongoDB. Una de las preguntas de un alumno, que yo seguí de cerca en cuanto la leí nos lleva hasta la entrada de hoy: ¿cómo se pueden meter imágenes en una colección de MongoDB?

Como sabemos, dentro de los sistemas NoSQL MongoDB forma parte de la familia conocida como ‘Document Databases’ o bases de datos de documentos. Esto quiere decir que los datos se organizan en documentos, entenciendo éstos como una colección de pares clave-valor que de común guardan una relación entre sí. Por ejemplo un documento puede ser una ficha de un alumno, o la información de un cliente. Sin extenderme demasiado, estos documentos se agrupan en colecciones (ie: todas las fichas de alunnos de un instituto o todos los clientes de un banco).

La arquitectura de estos documentos es una variante binaria de JSON conocida como BSON, aquí abajo podéis ver la pinta que tiene (los documentos van entre llaves, cada elemento tiene una clave y un valor y termina con ,)

BSON document

En la parte inferior de la imagen ya vemos una de las peculiaridades de este sistema NoSQL: se puede embeber un documento dentro de otro.

Ahora bien: ¿aquí dónde meto una imagen de satélite que pesa 1,5Gb?? La cosa no es baladí, ya que como podemos leer en el artículo que nos servirá como tutorial del portal Learnmongo los objetos BSON están limitados a un tamaño de 4MB.

Por tanto, toca trocear y almacenar la imagen, video o el fichero X de grandes dimensiones con GridFS:

GridFS breaks large files into manageable chunks. It saves the chunks to one collection (fs.chunks) and then metadata about the file to another collection (fs.files). When you query for the file, GridFS queries the chunks collection and returns the file one piece at a time.

Os dejo que lo sigáis leyendo en la página de donde he encontrado la información: http://learnmongo.com/posts/getting-started-with-mongodb-gridfs/

data-goonies

Ya veis que poco a poco MongoDB se está haciendo un huequito en mi corazón… :-P Have fun!