Large ফাইল স্টোরেজ এবং GridFS ব্যবহার

Java Technologies - জাভা মঙ্গোডিবি (Java MongoDB) - MongoDB তে GridFS এবং ফাইল স্টোরেজ
126

MongoDB একটি NoSQL ডেটাবেস, যা সাধারণত ডকুমেন্ট-ভিত্তিক ডেটা সংরক্ষণ করে। তবে, MongoDB ফাইল স্টোরেজের জন্য GridFS নামক একটি বিশেষ ব্যবস্থা প্রদান করে। GridFS বড় আকারের ফাইল (যেমন ছবি, ভিডিও, বা অন্যান্য মিডিয়া ফাইল) MongoDB ডেটাবেসে সংরক্ষণের জন্য ব্যবহৃত হয়। GridFS ফাইলগুলিকে ছোট ব্লক (chunks) এ ভাগ করে সংরক্ষণ করে এবং প্রতিটি ব্লক MongoDB-তে একটি ডকুমেন্ট হিসেবে রাখা হয়।

Java MongoDB ড্রাইভার ব্যবহার করে GridFS মাধ্যমে বড় আকারের ফাইল স্টোর করা ও রিট্রিভ করা যেতে পারে।


GridFS কী?

GridFS একটি MongoDB এর উপাদান, যা MongoDB ডেটাবেসে বড় আকারের ফাইল সংরক্ষণের জন্য ব্যবহৃত হয়। MongoDB একটি নির্দিষ্ট আকারের ডকুমেন্ট ধারণ করতে পারে, তবে GridFS সেই সীমা অতিক্রম করে এবং একটি বড় ফাইলকে ছোট ছোট ব্লকে ভাগ করে ডেটাবেসে সংরক্ষণ করে।

GridFS এর মূল উপাদান:

  • chunks: ফাইলের ডেটা সংরক্ষণের জন্য MongoDB ডকুমেন্টগুলির অ্যারে। প্রতিটি chunk একটি নির্দিষ্ট আকারের ডেটা ধারণ করে।
  • files: ফাইলের মেটাডেটা (যেমন নাম, আকার, এবং অন্যান্য বৈশিষ্ট্য) সংরক্ষণকারী ডকুমেন্ট।

Java MongoDB ড্রাইভার দিয়ে GridFS ব্যবহার করা

GridFS ব্যবহার করতে, প্রথমে MongoDB ড্রাইভার এবং GridFS API ইনস্টল করতে হবে। নিচে Java MongoDB ড্রাইভার দিয়ে GridFS ব্যবহার করার কিছু উদাহরণ দেওয়া হলো।

GridFS Dependency ইনস্টলেশন

Maven Dependency:

<dependency>
  <groupId>org.mongodb</groupId>
  <artifactId>mongo-java-driver</artifactId>
  <version>4.4.0</version>
</dependency>
<dependency>
  <groupId>org.mongodb</groupId>
  <artifactId>mongo-gridfs-driver</artifactId>
  <version>4.4.0</version>
</dependency>

Gradle Dependency:

implementation 'org.mongodb:mongo-java-driver:4.4.0'
implementation 'org.mongodb:mongo-gridfs-driver:4.4.0'

Large ফাইল স্টোরেজের জন্য GridFS ব্যবহার

১. MongoDB-তে ফাইল আপলোড করা (Storing Files)

GridFS দিয়ে ফাইল আপলোড করার জন্য GridFSBucket ব্যবহার করা হয়, যা MongoDB-তে ফাইল সংরক্ষণের জন্য একটি API সরবরাহ করে। এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি ফাইল MongoDB ডেটাবেসে আপলোড করা হচ্ছে:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.bson.types.ObjectId;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class GridFSExample {
    public static void main(String[] args) throws Exception {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");

        GridFSBucket gridFSBucket = GridFSBuckets.create(database);

        File file = new File("path_to_large_file");
        InputStream stream = new FileInputStream(file);

        // ফাইল আপলোড করা
        ObjectId fileId = gridFSBucket.uploadFromStream(file.getName(), stream);
        System.out.println("File uploaded with id: " + fileId);
    }
}

এখানে uploadFromStream পদ্ধতি ব্যবহার করা হয়েছে, যা ফাইলের স্ট্রিম গ্রহণ করে এবং MongoDB-তে GridFS-এ সংরক্ষণ করে।


২. MongoDB থেকে ফাইল রিট্রিভ করা (Retrieving Files)

MongoDB থেকে একটি ফাইল রিট্রিভ করতে downloadToStream পদ্ধতি ব্যবহার করা হয়। এখানে একটি উদাহরণ দেওয়া হলো:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.bson.types.ObjectId;

import java.io.FileOutputStream;
import java.io.OutputStream;

public class GridFSExample {
    public static void main(String[] args) throws Exception {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");

        GridFSBucket gridFSBucket = GridFSBuckets.create(database);

        ObjectId fileId = new ObjectId("file_id_here"); // রিট্রিভ করার জন্য ফাইল ID

        // ফাইল রিট্রিভ করা
        OutputStream outputStream = new FileOutputStream("path_to_save_file");
        gridFSBucket.downloadToStream(fileId, outputStream);

        System.out.println("File downloaded successfully!");
    }
}

এখানে downloadToStream পদ্ধতি ব্যবহার করে MongoDB থেকে ফাইলটি রিট্রিভ করা হয়েছে এবং ফাইলটি লোকাল সিস্টেমে সংরক্ষণ করা হয়েছে।


GridFS এর সুবিধা

১. বড় আকারের ফাইল স্টোরেজ

GridFS MongoDB ডেটাবেসে বড় আকারের ফাইল সংরক্ষণ করার জন্য উপযুক্ত। এটি MongoDB এর ডকুমেন্ট সাইজ সীমাকে অতিক্রম করে ফাইলগুলোকে ছোট ছোট ব্লকে ভাগ করে সংরক্ষণ করে।

২. সহজ অ্যাক্সেস এবং রিট্রিভাল

GridFS ফাইলগুলিকে MongoDB ডেটাবেসের অংশ হিসেবে সংরক্ষণ করে, যার মাধ্যমে আপনি MongoDB এর সাধারণ কুয়েরি অপারেশন ব্যবহার করে ফাইল অ্যাক্সেস করতে পারেন।

৩. উচ্চ পারফরম্যান্স

GridFS MongoDB এর উন্নত পারফরম্যান্সের সুবিধা নেয়, কারণ এটি MongoDB এর ক্ষমতাকে ব্যবহার করে বড় আকারের ফাইল দ্রুত স্টোর এবং রিট্রিভ করতে সক্ষম।


Java MongoDB ড্রাইভার দিয়ে GridFS ব্যবহার করে বড় আকারের ফাইল MongoDB ডেটাবেসে সহজে সংরক্ষণ এবং রিট্রিভ করা যেতে পারে। এটি ফাইলগুলিকে ছোট ব্লকে ভাগ করে MongoDB ডেটাবেসে সংরক্ষণ করে এবং পরে সেই ব্লকগুলোকে একত্রিত করে ফাইলটি রিট্রিভ করে। GridFS বড় আকারের মিডিয়া ফাইল সংরক্ষণের জন্য একটি শক্তিশালী এবং পারফরম্যান্ট উপায় সরবরাহ করে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...