GridFS چیست؟

GridFS چیست؟

بصورت کلی GridFS یک سیستم فایل توزیع شده در MongoDB هست که برای ذخیره و بازیابی فایل‌های بزرگ و داده‌های باینری استفاده میشه.

همونطور که میدونیم MongoDB یک پایگاه داده NoSQL مبتنی بر سند هست که به دلیل انعطاف‌پذیری و مقیاس‌پذیری بالا  توی سالهای اخیر محبوبیت زیادی کسب کرده.

برخلاف پایگاه داده های رابطه ای که داده ها رو توی جداول و ردیف ها ذخیره می کنند، MongoDB داده‌ها رو در قالب اسناد JSON مانند ذخیره می‌کنه. این ساختار ذخیره‌سازی به MongoDB اجازه می‌دهد تا به راحتی با داده‌های پیچیده و غیرساختاریافته کار کنه.

MongoDB از طریق مقیاس‌پذیری افقی، توانایی مدیریت حجم‌های بزرگ داده رو داره و میتونه با استفاده از ویژگی‌هایی مانند شاردینگ، ایندکس‌گذاری و تکرار، عملکرد بهینه و دسترسی بالایی رو فراهم کنه.

توی این مطلب قصد دارم در مورد GridFS (Grid File System) صحبت کنیم و بیشتر با این قابلیت توی دیتابیس MongoDB آشنا بشیم:

 

بصورت کلی GridFS یک سیستم فایل توزیع شده در MongoDB هست که برای ذخیره و بازیابی فایل‌های بزرگ و داده‌های باینری استفاده میشه.

GridFS فایل‌ها را به قطعات کوچکتر تقسیم میکنه و هر قطعه را به صورت یک سند جداگانه ذخیره میکند. این روش امکان ذخیره‌سازی و بازیابی کارآمد فایل‌های بزرگ را فراهم میکنه و از ویژگی‌های مقیاس‌پذیری و تکرار MongoDB پشتیبانی میکنه.

 

ویژگی‌ها و مزایای GridFS

  1. ذخیره‌سازی کارآمد فایل‌های بزرگ: GridFS فایل‌های بزرگ را به قطعات کوچکتر تقسیم می‌کند، که امکان مدیریت آسان‌تر و کارآمدتر این فایل‌ها رو فراهم میکنه.
  2. مقیاس‌پذیری و تکرار: با استفاده از GridFS، میشه از توانایی‌های مقیاس‌پذیری و تکرار MongoDB به آسانی استفاده کرد.
  3. دسترسی سریع و همزمانی بالا: امکان دسترسی سریع به بخش‌های مختلف فایل و پشتیبانی از دسترسی همزمان به داده‌ها.

 

چه زمانی میتوان از GridFS استفاده کرد:

اگر حجم فایل های شما بیشتر از ۱۶ مگابایت هست، یا سیستم شما ذخیره سازی فایل در یک دایرکتوری رو محدود میکنه، اگر میخواید هر زمان به بخشی از فایل مورد نظر نه همه ی اون دسترسی داشته باشید استفاده از GridFS برای شما مفید هست.

 

چطور از GridFS در MongoDB استفاده کنیم:

برای استفاده از 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 و مزایا و معایب اون اطلاعاتی دارید از بخش نظرات برای ما ارسال کنید.


دسته بندی ها:

دیتابیس

ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!