MongoDB - GridFS

GridFSresimler, ses dosyaları, video dosyaları vb. gibi büyük dosyaların depolanması ve geri alınması için MongoDB spesifikasyonudur. Dosyaları depolamak için bir tür dosya sistemidir, ancak verileri MongoDB koleksiyonlarında saklanır. GridFS, 16MB'lık belge boyutu sınırından bile daha büyük dosyaları saklama özelliğine sahiptir.

GridFS, bir dosyayı parçalara böler ve her veri yığınını, her biri maksimum 255k boyutunda olan ayrı bir belgede saklar.

GridFS varsayılan olarak iki koleksiyon kullanır fs.files ve fs.chunksdosyanın meta verilerini ve yığınlarını depolamak için. Her öbek, benzersiz _id ObjectId alanıyla tanımlanır. Fs.files, bir ana belge görevi görür. files_id fs.chunks belgesindeki alanı, öbeği üstüne bağlar.

Aşağıda, fs.files koleksiyonunun örnek bir belgesi verilmiştir -

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

Belge, dosya adını, yığın boyutunu, karşıya yükleme tarihini ve uzunluğunu belirtir.

Aşağıda, fs.chunks belgesinin örnek bir belgesi verilmiştir -

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

GridFS'ye Dosya Ekleme

Şimdi, GridFS kullanarak bir mp3 dosyasını saklayacağız. putkomut. Bunun için kullanacağızmongofiles.exe MongoDB kurulum klasörünün bin klasöründe bulunan yardımcı program.

Komut isteminizi açın, MongoDB kurulum klasörünün bin klasöründeki mongofiles.exe'ye gidin ve aşağıdaki kodu yazın -

>mongofiles.exe -d gridfs put song.mp3

Buraya, gridfsdosyanın depolanacağı veritabanının adıdır. Veritabanı mevcut değilse, MongoDB anında otomatik olarak yeni bir belge oluşturacaktır. Song.mp3, yüklenen dosyanın adıdır. Dosyanın belgesini veritabanında görmek için arama sorgusunu kullanabilirsiniz -

>db.fs.files.find()

Yukarıdaki komut aşağıdaki belgeyi döndürdü -

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

Ayrıca, önceki sorguda döndürülen belge kimliğini kullanarak aşağıdaki kodla saklanan dosyayla ilgili fs.chunks koleksiyonunda bulunan tüm parçaları görebiliriz -

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

Benim durumumda, sorgu 40 belge döndürdü, yani tüm mp3 belgesi 40 veri parçasına bölündü.