همونطور که میدونیم MongoDB یک پایگاه داده NoSQL مبتنی بر سند هست که به دلیل انعطافپذیری و مقیاسپذیری بالا توی سالهای اخیر محبوبیت زیادی کسب کرده.
برخلاف پایگاه داده های رابطه ای که داده ها رو توی جداول و ردیف ها ذخیره می کنند، MongoDB دادهها رو در قالب اسناد JSON مانند ذخیره میکنه. این ساختار ذخیرهسازی به MongoDB اجازه میدهد تا به راحتی با دادههای پیچیده و غیرساختاریافته کار کنه.
MongoDB از طریق مقیاسپذیری افقی، توانایی مدیریت حجمهای بزرگ داده رو داره و میتونه با استفاده از ویژگیهایی مانند شاردینگ، ایندکسگذاری و تکرار، عملکرد بهینه و دسترسی بالایی رو فراهم کنه.
توی این مطلب قصد دارم در مورد GridFS (Grid File System) صحبت کنیم و بیشتر با این قابلیت توی دیتابیس MongoDB آشنا بشیم:
بصورت کلی GridFS یک سیستم فایل توزیع شده در MongoDB هست که برای ذخیره و بازیابی فایلهای بزرگ و دادههای باینری استفاده میشه.
GridFS فایلها را به قطعات کوچکتر تقسیم میکنه و هر قطعه را به صورت یک سند جداگانه ذخیره میکند. این روش امکان ذخیرهسازی و بازیابی کارآمد فایلهای بزرگ را فراهم میکنه و از ویژگیهای مقیاسپذیری و تکرار MongoDB پشتیبانی میکنه.
چه زمانی میتوان از GridFS استفاده کرد:
اگر حجم فایل های شما بیشتر از ۱۶ مگابایت هست، یا سیستم شما ذخیره سازی فایل در یک دایرکتوری رو محدود میکنه، اگر میخواید هر زمان به بخشی از فایل مورد نظر نه همه ی اون دسترسی داشته باشید استفاده از GridFS برای شما مفید هست.
برای استفاده از GridFS، ابتدا باید یک GridFSBucket ایجاد کنید و سپس فایلهای خود را آپلود و دانلود کنید.
GridFSBucket یک رابط در MongoDB برای مدیریت فایلهای بزرگ و دادههای باینری هست که به شما این امکان رو میده به راحتی فایل ها رو مدیریت کنید، فایل های رو به قطعات کوچک تبدیل(چانک) و سپس آپلود کنید. و همچنین به شما امکان میده به راحتی فایل های دانلود، آپلود و حذف کنید.
ایجاد GridFSBucket و آپلود فایل:
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
async function uploadFile() {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('mydatabase');
const bucket = new GridFSBucket(db, { bucketName: 'photos' });
const uploadStream = bucket.openUploadStream('myphoto.jpg', {
metadata: { contentType: 'image/jpeg' }
});
fs.createReadStream('/path/to/myphoto.jpg').pipe(uploadStream);
uploadStream.on('finish', () => {
console.log('File uploaded successfully!');
client.close();
});
}
uploadFile();
کد بالا یک کد جاوااسکریپت هست که پس از اتصال به دیتابیس MongoDB یک فایل در این دیتابیس به کمک GridFSBucket آپلود میکند.
برای دانلود فایل نیز به همین صورت میتوان با متد bucket.openDownloadStreamByName یک فایل رو دانلود کرد:
async function downloadFile() {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('mydatabase');
const bucket = new GridFSBucket(db, { bucketName: 'photos' });
const downloadStream = bucket.openDownloadStreamByName('myphoto.jpg');
downloadStream.pipe(fs.createWriteStream('/path/to/downloaded_myphoto.jpg'));
downloadStream.on('finish', () => {
console.log('File downloaded successfully!');
client.close();
});
}
downloadFile();
بطور کلی می توان گفت: استفاده از GridFS میتواند به ما کمک کنه تا به طور بهتر و موثرتری فایلهای بزرگ رو توی برنامههای خودمون مدیریت و از قابلیتهای پیشرفته MongoDB استفاده کنیم.
اگر دوست دارید بیشتر در مورد GridFS مطالعه کنید می توانید از این لینک و این لینک استفاده کنید.
امیدوارم این مقاله برای شما مفید بوده باشه. اگر شما هم در مورد GridFS و مزایا و معایب اون اطلاعاتی دارید از بخش نظرات برای ما ارسال کنید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!