با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در این جلسه از آموزش های MongoDB با مفهوم GridFS در MongoDB آشنا خواهید شد.GridFS یک مشخصه MongoDB برای ذخیره و بازیابی فایل های بزرگ مانند تصاویر، فایل های صوتی، فایل های ویدئویی و غیره است. نوعی فایل سیستم برای ذخیره فایل ها است، اما داده های آن در مجموعه MongoDB ذخیره می شود. GridFS توانایی ذخیره فایل ها حتی بیشتر از اندازه سند خود یعنی ۱۶MB را دارد.
GridFS یک فایل را تکه تکه می کند و هر تکه از داده ها را در یک سند جداگانه ذخیره می کند، حداکثر اندازه هر کدام ۲۵۵k است.
همچنین GridFS به طور پیش فرض از دو مجموعه fs.files و fs.chunks برای ذخیره فراداده فایل و تکه ها استفاده می کند.
هر تکه توسط فیلد منحصر به فرد شناسه ObjectId شناسایی می شود.
fs.files نیز به عنوان یک سند پدر و مادر عمل می کند.
فیلد id فایل ها در سند fs.chunks هر تکه را با پدر و مادرش مرتبط می کند.
در زیر یک سند نمونه از مجموعه fs.files نشان داده شده است:
1 2 3 4 5 6 7 | { "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5": "7b762939321e146569b07f72c62cca4f", "length": NumberInt(646) } |
سند نام فایل، اندازه کرک، تاریخ آپلود و طول را مشخص می کند.
در زیر یک سند نمونه از سند fs.chunks نشان داده شده است :
1 2 3 4 5 | { "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data" } |
اکنون، یک فایل mp3 را با استفاده از GridFS و با استفاده از دستور put قرار می دهیم.
برای این کار، ما از ابزار mongofiles.exe موجود در پوشه bin پوشه نصب MongoDB استفاده خواهیم کرد.
خط فرمان خود را باز کنید، به فایل mongofiles.exe در پوشه bin پوشه نصب MongoDB بروید و کد زیر را تایپ کنید
1 | >mongofiles.exe -d gridfs put song.mp3 |
در اینجا، gridfs نام پایگاه داده ای است که در آن فایل ذخیره می شود.
اگر پایگاه داده موجود نباشد، MongoDB به طور خودکار یک سند جدید را در fly ایجاد خواهد کرد. Song.mp3 نام فایل بارگذاری شده است.
برای دیدن سند فایل در پایگاه داده، می توانید از کوئری find استفاده کنید :
1 | >db.fs.files.find() |
دستور بالا سند زیرا باز می گرداند :
1 2 3 4 5 6 7 | { _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 } |
ما همچنین می توانیم تمام تکه های موجود در مجموعه fs.chunks مربوط به فایل ذخیره شده را با کد زیر را مشاهده کنیم، با استفاده از شناسه سند بازگشتی در کوئری قبلی :
1 | >db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')}) |
در این مورد، کوئری ۴۰ سند را بازگردانده که معنی آن این است که کل مستند mp3 به ۴۰ تکه داده تقسیم شده است. با مفهوم GridFS در MongoDB آشنا شدید. امیدوارم از مطالب ذکر شده بهره کافی را برده باشید.در جلسه بعد مجموعه های محدود شده در MongoDB را فرا خواهید گرفت.