Scalable Databases: Connecting Node.js Applications to MongoDB Atlas Free Tier
ডাইনামিক রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করার সময় নোএসকিউএল (NoSQL) ডাটাবেজের জন্য ক্লাউড ম্যানেজড সার্ভিস **MongoDB Atlas** বিশ্বজুড়ে সমাদৃত। এর 'M0 Free Tier' ক্লাস্টার ক্লাউড সার্ভিস ডেভলপারদের ৫১২ এমবি সম্পূর্ণ ফ্রি মেমরি প্রোভাইড করে, যা ছোট এবং মাঝারি প্রোজেক্ট, বট ট্র্যাকিং ও এপিআই হোস্ট করার জন্য চমৎকার ও যথেষ্ট।
তবে ডাইনামিক কানেকশন লুপে যদি ডাটাবেজ হ্যান্ডলিং দুর্বল হয়, তবে অ্যাপ্লিকেশনে "Max Database Connections Reached" এরর আসে। আজকের গাইডে আমরা দেখবো কীভাবে Node.js অ্যাপ্লিকেশনে ওআরএম মডিউল **Mongoose** ব্যবহার করে নিখুঁতভাবে কানেকশন পুলিং (Connection Pooling) লেয়ার মেইনটেইন করা যায়।
১. সিকিউরিটি আর্কিটেকচার: এনভায়রনমেন্ট ভ্যারিয়েবল এবং ডাটাবেজ মডিউল
আপনার ডাটাবেজ ক্রেডেনশিয়াল যেন কখনই কোডের ভেতর সরাসরি দৃশ্যমান না থাকে (Hardcoded URI), তার জন্য মূল ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন এবং আপনার গোপন কানেকশন স্ট্রিংটি সেখানে সেভ করুন:
# .env ফাইলের কনফিগারেশন স্ট্রাকচার
MONGO_URI=mongodb+srv://ahyan_user:YourSecurePassword@cluster0.abcde.mongodb.net/myDatabase?retryWrites=true&w=majority
এখন আপনার নোড অ্যাপ্লিকেশনের প্রজেক্টে ডাটাবেজ কানেকশনের জন্য `db.js` ফাইল ক্রিয়েট করে নিচের সিকিউরড মেকানিজম স্ক্রিপ্টটি লিখুন:
const mongoose = require('mongoose');
require('dotenv').config();
const connectDatabase = async () => {
try {
// কানেকশন লুপ অপ্টিমাইজেশন সেটিংস
const connectionOptions = {
maxPoolSize: 10, // সর্বোচ্চ ১০টি সমসাময়িক প্যারালাল কোয়েরি চ্যানেল খোলা রাখা
serverSelectionTimeoutMS: 5000, // ৫ সেকেন্ড রেসপন্স না পেলে টাইমআউট করা
};
await mongoose.connect(process.env.MONGO_URI, connectionOptions);
console.log("Database Node Gateway: Securely Synced to MongoDB Atlas! ");
} catch (error) {
console.error("Database Connection Layer Faulted:", error.message);
process.exit(1); // এরর আসলে প্রসেস বন্ধ করে দেওয়া যাতে ক্র্যাশ লুপ না হয়
}
};
module.exports = connectDatabase;
ধাপ ২: সার্ভার বুটস্ট্যাপ ফাইলে ইন্টিগ্রেশন
আপনার অ্যাপ্লিকেশনের মূল এন্ট্রি পয়েন্টে (যেমন `server.js` বা `index.js`) ফাইল এক্সিকিউট হওয়ার শুরুতেই ডাটাবেজ মেথডটি ইনভোক করে দিন:
const express = require('express');
const connectDatabase = require('./db');
const app = express();
app.use(express.json());
// ডাটাবেজ ক্লাউড সিঙ্ক চালু করা
connectDatabase();
app.listen(3000, () => {
console.log("Server ecosystem operating on port 3000");
});
আইপি হোয়াইটলিস্টিং কড়া সতর্কবার্তা: মঙ্গোডিবি অ্যাটলাস ক্লাউড ড্যাশবোর্ডে গিয়ে **Network Access** সেকশনে আপনার ডেভেলপমেন্ট আইপিটি অবশ্যই যুক্ত করবেন। যদি আপনার আইপি ঘন ঘন পরিবর্তন হয় (যেমন মোবাইল ডাটার ক্ষেত্রে), তবে সিকিউরিটির কথা মাথায় রেখে সাময়িকভাবে 0.0.0.0/0 (Allow Access from Anywhere) আইপি দিয়ে রাখতে পারেন। এতে যেকোনো নেটওয়ার্ক নোড থেকেই আপনার এপিআই সার্ভার ডাটাবেজ অ্যাক্সেস করতে পারবে।