Gridfs

O GridFS é um sistema de armazenamento de arquivos. Usado para gerenciamento de arquivos. Como assim? Calma, por padrão, uma database dentro do MongoDB sempre terá no máximo 16MB com isso podemos pensa, e quando minha base ser maior que isso? É nesse ponto que entra o mongoDB ele “ajuda” no gerenciamente de arquivos muito grande.

Para isso vamos realizar um pequeno exemplo, vamos inserir um arquivo .mp4 em uma database porém vamos utilizar o gridFS. O comando é o mongofiles utilizado FORA do mongod, ou seja, no terminal mesmo.

A sintaxe dele é assim:

mongofiles -d -h put

mongofiles -d be-mean-files -h 127.0.0.1 put arquivo.mp4

Após a criação vamos entra em nossa database e verifica quais informações foram criadas

> use be-mean-files
switched to db be-mean-files
> show collections
fs.chunks
fs.files
system.indexes

Veja, foi criado a coleção fs.chunks e fs.files

fs.chunks

Aqui temos os arquivos binários quebrados em pequnos blocos de 255KB. Sua estrutura fica assim:

{       
 "_id":<ObjectId>,
 "files_id": <ObjectId>,
 "n": <NÚMERO DE SEQUENCIA MONTADA>,
 "data": <binary>
}

fs.files

Aqui é armazenado os metadados dos arquivos.

{ “_id”:, "length":, "chunkSize":, "uploadDate": , "md5": , "filename": }

Então vamos ver nossos arquivos.

> db.fs.chunks.findOne({})

Não vou colocar os dados pq como você deve ter percebido que o campo “data” é muito extenso. Para isso, vamos usar um filtro nos nossos valores.

> db.fs.chunks.findOne({},{data:0})
{
        "_id" : ObjectId("565a35b860dafe2404000002"),
        "files_id" : ObjectId("565a35b860dafe2404000001"),
        "n" : 0
}

Com o “files_id” vamos buscar na coleção fs.files o arquivo que pertense esse chunk

> db.fs.files.find({"_id" : ObjectId("565a35b860dafe2404000001")}).pretty()
{
        "_id" : ObjectId("565a35b860dafe2404000001"),
        "chunkSize" : 261120,
        "uploadDate" : ISODate("2015-11-28T23:16:09.696Z"),
        "length" : 22020043,
        "md5" : "2e618a83ddb580b1f92037c5b0114151",
        "filename" : "Os_Raios_do_Pikachu.mp4"
}

Aqui eu usei um arquivo chamado “Os_Raios_do_Pikachu.mp4”, sim é dahora!…kkk

Temos o tamanho do nosso “chunk” que esta em binário e é 255KB, tamanho limite suportado por cada chunk. Também vemos a data de criação ou modificação do arquivo, tamanho total em bytes, e o hash em md5 que foi criado.

Mas, pra que serve esse md5? Boa pergunta.

Esse md5 ele serve para você verificar a existem de um outro arquivo IDENTICO. Isso mesmo, vamos supor que temos 2 arquivos identico, então você decide o que fazer com um dos arquivos, como por exemplo remove-lo.

Compartilhe

Back