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
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”:
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 | ||
![]() | ![]() | ![]() |