Skill

মঙ্গোডিবি (MongoDB)

900

মঙ্গোডিবি হলো একটি ওপেন-সোর্স, ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস যা JSON-এর মতো ডকুমেন্টে ডেটা সংরক্ষণ করে। এটি রিলেশনাল ডাটাবেস থেকে ভিন্ন, কারণ এতে স্কিমালেস (schema-less) বা ডাইনামিক স্কিমা সমর্থন করে, যার মানে হচ্ছে ডেটা স্টোরেজের জন্য নির্দিষ্ট কোনো টেবিল বা কলাম কাঠামো থাকতে হয় না। MongoDB উচ্চ গতির ডেটা সংরক্ষণ ও অনুসন্ধানের জন্য ডেভেলপারদের মধ্যে খুবই জনপ্রিয়। এটি horizontal scaling এবং বড় আকারের ডিস্ট্রিবিউটেড ডেটাবেস ব্যবস্থাপনার জন্য ব্যবহৃত হয়।


MongoDB: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

MongoDB হল একটি NoSQL ডকুমেন্ট-ভিত্তিক ডেটাবেস, যা JSON-এর মতো BSON (Binary JSON) ফরম্যাটে ডেটা সংরক্ষণ করে। এটি রিলেশনাল ডেটাবেসের মতো টেবিল এবং রো-ভিত্তিক নয়, বরং ডকুমেন্ট ও কালেকশন-ভিত্তিক একটি ডেটাবেস মডেল। MongoDB মূলত দ্রুতগতির ডেটা সংরক্ষণ, স্কেলেবিলিটি এবং ডিস্ট্রিবিউটেড ডেটা ম্যানেজমেন্টের জন্য ডিজাইন করা হয়েছে।

MongoDB এর অন্যতম বৈশিষ্ট্য হল এর Flexibility। এখানে ডেটা সংরক্ষণ করতে স্কিমা প্রয়োজন হয় না, অর্থাৎ আপনি ইচ্ছামত ডকুমেন্ট তৈরি করতে পারেন এবং পরে তা পরিবর্তন করতে পারেন। MongoDB বিভিন্ন ধরনের অ্যাপ্লিকেশনের জন্য উপযুক্ত, যেমন Big Data বা Real-time Analytics

MongoDB এর বৈশিষ্ট্যসমূহ

  1. ডকুমেন্ট-ভিত্তিক স্টোরেজ: MongoDB JSON বা BSON ফরম্যাটে ডেটা সংরক্ষণ করে, যা রিলেশনাল ডেটাবেসের টেবিলের মতো কাজ করে না। এটি ডেটার জন্য অনেক বেশি ফ্লেক্সিবল এবং স্কিমালেস।
  2. স্কেলেবিলিটি: MongoDB খুবই সহজে হরাইজন্টাল স্কেলিং (Sharding) সমর্থন করে, যার মাধ্যমে বড় ডেটাবেসের লোড শেয়ার করা যায়।
  3. ACID সমর্থন: MongoDB 4.0 থেকে সম্পূর্ণ ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজাকশন সাপোর্ট করে।
  4. Replication: MongoDB ডিস্ট্রিবিউটেড ডেটাবেস সাপোর্ট করে, যেমন Replica Set, যা উচ্চতর অ্যাভেলেবিলিটি নিশ্চিত করে।
  5. ইন্ডেক্সিং: MongoDB ডেটাবেসে দ্রুত কুয়েরি করার জন্য শক্তিশালী ইন্ডেক্সিং সিস্টেম প্রদান করে।
  6. ফ্লেক্সিবল ডেটা মডেল: MongoDB স্কিমালেস ডেটা মডেল সমর্থন করে, যার মাধ্যমে আপনি ডেটা ফরম্যাট নির্দিষ্ট না করেও ডেটা ইনসার্ট করতে পারেন।
  7. GeoJSON এবং GIS সাপোর্ট: MongoDB GeoJSON ডেটা এবং জিওগ্রাফিকাল ইনফরমেশন সিস্টেম (GIS) সমর্থন করে।
  8. Aggregation Framework: MongoDB-তে জটিল ডেটা প্রক্রিয়াকরণের জন্য Aggregation Pipeline ব্যবহার করা যায়।
  9. ফাস্ট রাইট অপারেশন: MongoDB দ্রুত রাইট অপারেশন সমর্থন করে, যা বড় আকারের ডেটা সংরক্ষণের জন্য কার্যকর।
  10. মাল্টি-ডকুমেন্ট ট্রানজাকশন: MongoDB 4.0 থেকে মাল্টি-ডকুমেন্ট ট্রানজাকশন সমর্থন করে, যা বড় এবং জটিল অ্যাপ্লিকেশনগুলোর জন্য প্রয়োজনীয়।

MongoDB ইনস্টলেশন এবং সেটআপ

MongoDB বিভিন্ন অপারেটিং সিস্টেমে ইনস্টল করা যায়। নিচে Linux (Ubuntu), Windows, এবং Mac এ MongoDB ইনস্টল করার ধাপগুলো দেওয়া হল:

Linux (Ubuntu)-এ MongoDB ইনস্টলেশন

ধাপ ১: MongoDB রিপোজিটরি যোগ করা

sudo apt update
sudo apt install -y gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

ধাপ ২: MongoDB ইনস্টল করা

sudo apt update
sudo apt install -y mongodb-org

ধাপ ৩: MongoDB সার্ভার চালু করা

sudo systemctl start mongod
sudo systemctl enable mongod

Windows-এ MongoDB ইনস্টলেশন

  1. MongoDB অফিসিয়াল ওয়েবসাইট থেকে Windows এর জন্য MongoDB ইনস্টলার ডাউনলোড করুন।
  2. ইনস্টলার চালান এবং নির্দেশনা অনুসরণ করুন।
  3. MongoDB চালানোর জন্য Command Prompt বা PowerShell খুলে mongod কমান্ডটি ব্যবহার করুন।

Mac-এ MongoDB ইনস্টলেশন (Homebrew ব্যবহার করে)

brew tap mongodb/brew
brew install mongodb-community@4.4

MongoDB সার্ভার চালানোর জন্য:

brew services start mongodb/brew/mongodb-community

MongoDB ব্যবহারের প্রথম ধাপ

MongoDB ইনস্টল করার পরে, আপনি MongoDB Shell (mongo) ব্যবহার করে MongoDB পরিচালনা করতে পারেন। MongoDB Shell আপনাকে ডাটাবেস ম্যানেজমেন্ট এবং কুয়েরি চালাতে সাহায্য করে।

MongoDB Shell এ লগইন করা

MongoDB সার্ভার চালু করার পরে, MongoDB Shell এ লগইন করতে পারেন নিচের কমান্ডটি ব্যবহার করে:

mongo

নতুন ডাটাবেস তৈরি করা

MongoDB তে একটি নতুন ডাটাবেস তৈরি করতে হলে, use কমান্ড ব্যবহার করতে হয়:

use my_database

নতুন কালেকশন তৈরি করা

MongoDB-তে একটি ডাটাবেসের মধ্যে Collection নামে ডকুমেন্ট স্টোর করা হয়। একটি নতুন কালেকশন তৈরি করতে হলে, নিচের কমান্ডটি ব্যবহার করুন:

db.createCollection("students")

ডকুমেন্ট ইনসার্ট করা

MongoDB তে একটি ডকুমেন্ট ইনসার্ট করার জন্য insertOne() ফাংশন ব্যবহার করতে পারেন:

db.students.insertOne({
    "name": "John Doe",
    "age": 25,
    "email": "john@example.com"
})

ডেটা রিট্রিভ করা

MongoDB তে ডেটা রিট্রিভ করতে find() ফাংশন ব্যবহার করা হয়:

db.students.find()

উপরের কুয়েরিটি students কালেকশন থেকে সমস্ত ডকুমেন্ট রিটার্ন করবে।

MongoDB এর ডেটা মডেল

MongoDB একটি ডকুমেন্ট-ভিত্তিক ডেটাবেস, যেখানে ডকুমেন্টগুলো JSON ফরম্যাটে থাকে। MongoDB তে স্কিমালেস ডেটা মডেল সমর্থিত, অর্থাৎ প্রতিটি ডকুমেন্টে ভিন্ন ভিন্ন ফিল্ড থাকতে পারে।

ডকুমেন্টের উদাহরণ:

{
    "_id": ObjectId("60dbf830936d1bba286b2c4f"),
    "name": "Alice",
    "age": 30,
    "skills": ["Java", "Python", "MongoDB"]
}

MongoDB Collection

MongoDB তে ডকুমেন্টগুলো Collection এ সংরক্ষিত হয়, যা রিলেশনাল ডেটাবেসের টেবিলের মতো।

MongoDB এর ডাটাবেস কনসেপ্ট

  • Database: MongoDB এর মধ্যে অনেকগুলো ডাটাবেস থাকতে পারে।
  • Collection: প্রতিটি ডাটাবেসের মধ্যে এক বা একাধিক কালেকশন থাকতে পারে।
  • Document: প্রতিটি কালেকশনে একাধিক ডকুমেন্ট থাকে, যা JSON ফরম্যাটে সংরক্ষিত হয়।

MongoDB এর স্টোরেজ ইঞ্জিন

MongoDB দুটি প্রধান স্টোরেজ ইঞ্জিন সমর্থন করে:

  1. WiredTiger: MongoDB 3.2 থেকে এটি ডিফল্ট স্টোরেজ ইঞ্জিন। এটি উচ্চ কর্মক্ষমতা এবং ডাটা কম্প্রেশন সাপোর্ট করে।
  2. MMAPv1: এটি MongoDB এর পুরানো স্টোরেজ ইঞ্জিন, যা কম ফিচার সমর্থন করে এবং কর্মক্ষমতায় কম।

স্টোরেজ ইঞ্জিন পরিবর্তন করা

MongoDB এর স্টোরেজ ইঞ্জিন পরিবর্তন করতে নিচের মত করে mongod.conf ফাইলে কনফিগার করতে হয়:

storage:
  engine: wiredTiger

MongoDB এর অ্যাগ্রিগেশন ফ্রেমওয়ার্ক

MongoDB এর Aggregation Framework ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা যায়। এটি MapReduce এর মতো কাজ করে এবং বড় ডেটাবেস থেকে ডেটা প্রক্রিয়াকরণ ও বিশ্লেষণ করার জন্য উপযুক্ত।

Aggregation পাইপলাইনের উদাহরণ:

db.orders.aggregate([
    { $match: { status: "completed" } },
    { $group: { _id: "$customerId", total: { $sum: "$amount" } } }
])

উপরের উদাহরণে, আমরা orders কালেকশন থেকে সম্পূর্ণ অর্ডারগুলোকে গ্রুপ করে প্রতিটি কাস্টমারের মোট অর্ডার পরিমাণ বের করেছি।

MongoDB এর রেপ্লিকেশন

MongoDB তে Replica Set ব্যবহার করে ডেটাবেস রেপ্লিকেশন করা যায়। এটি মূলত একটি ডিস্ট্রিবিউটেড ডেটাবেস যেখানে একাধিক নোড একই ডেটার কপি রাখে।

Master-Slave Replication

MongoDB তে Primary এবং Secondary নোড থাকে। Primary নোডে ডেটা রাইট করা হয় এবং Secondary নোডগুলি ডেটা রিড করে।

Replica Set তৈরি করা

MongoDB তে একটি Replica Set তৈরি করতে, mongod ইনস্ট্যান্সগুলোকে নিচের মতো কনফিগার করতে হবে:

mongod --replSet "rs0"

এর পরে, MongoDB Shell এ লগইন করে rs.initiate() কমান্ড দিয়ে Replica Set শুরু করতে হবে:

rs.initiate()

MongoDB এর সুবিধা

  1. স্কিমালেস: MongoDB স্কিমালেস ডেটাবেস মডেল সমর্থন করে, যার ফলে আপনি ডেটা মডেলিংয়ে ফ্লেক্সিবিলিটি পান।
  2. স্কেলেবিলিটি: MongoDB বড় ডেটাবেসগুলির জন্য সহজে স্কেল করা যায়।
  3. দ্রুত ডেটা রাইট এবং রিড: MongoDB দ্রুত রাইট এবং রিড পারফরম্যান্স প্রদান করে।
  4. ডিস্ট্রিবিউটেড ডেটাবেস সাপোর্ট: MongoDB ডিস্ট্রিবিউটেড ডেটাবেস এবং রেপ্লিকেশন সমর্থন করে, যা হাই-অ্যাভেলেবিলিটি নিশ্চিত করে।
  5. JSON ডেটা ফরম্যাট: MongoDB JSON-এর মতো ডেটা ফরম্যাট ব্যবহার করে, যা ডেভেলপারদের জন্য সহজ এবং পরিচিত।

MongoDB এর অসুবিধা

  1. জটিলতা: বড় এবং জটিল ডেটাবেস মডেলিংয়ের সময় MongoDB এর কনফিগারেশন এবং পরিচালনা কিছুটা জটিল হতে পারে।
  2. কম ট্রানজাকশন সাপোর্ট: MongoDB তে রিলেশনাল ডেটাবেসের মতো ট্রানজাকশন সমর্থন 4.0 সংস্করণের আগে ছিল না।
  3. RAM নির্ভরতা: MongoDB ইন-মেমোরি ভিত্তিক অপারেশন বেশি করে, তাই বড় ডেটাবেসে প্রচুর RAM প্রয়োজন হতে পারে।

MongoDB বনাম রিলেশনাল ডাটাবেস (RDBMS)

বৈশিষ্ট্যMongoDBরিলেশনাল ডাটাবেস (যেমন: MySQL, PostgreSQL)
ডেটা মডেলডকুমেন্ট ভিত্তিক (JSON, BSON)টেবিল ভিত্তিক (রিলেশনাল টেবিল)
স্কিমাস্কিমালেস, ডাইনামিক স্কিমাফিক্সড স্কিমা
ট্রানজ্যাকশন সমর্থনসীমিত (মাল্টি-ডকুমেন্ট ট্রানজ্যাকশন)ACID ট্রানজ্যাকশন
স্কেলেবিলিটিHorizontal scaling (শার্ডিং)সাধারণত Vertical scaling
ব্যবহারক্ষেত্রবিগ ডেটা, ওয়েব অ্যাপ্লিকেশন, রিয়েল-টাইম অ্যানালিটিক্সব্যাংকিং, ফাইন্যান্স, জটিল ট্রানজ্যাকশন প্রয়োজন

MongoDB বনাম Redis

বৈশিষ্ট্যMongoDBRedis
ডেটা মডেলডকুমেন্ট ভিত্তিক (JSON/BSON)কী-ভ্যালু, লিস্ট, সেট, হ্যাশ, স্ট্রিং ইত্যাদি
স্থায়ীত্বহ্যাঁ, ডেটা ডিস্কে সংরক্ষণ করেহ্যাঁ, তবে ইন-মেমরি ভিত্তিক
ইন্ডেক্সিংসমর্থন করেসমর্থন করে না (তবে দ্রুত অ্যাক্সেসে সক্ষম)
ব্যবহারক্ষেত্রডেটা স্টোরেজ এবং অ্যাপ্লিকেশন ডেটা মডেলিংইন-মেমরি ক্যাশিং, রিয়েল-টাইম ডেটা প্রসেসিং

উপসংহার

MongoDB হলো একটি অত্যন্ত শক্তিশালী এবং স্কেলেবল NoSQL ডাটাবেস, যা আধুনিক ওয়েব অ্যাপ্লিকেশন, বিগ ডেটা প্রসেসিং, এবং রিয়েল-টাইম ডেটা অ্যাপ্লিকেশনের জন্য আদর্শ। এর ডকুমেন্ট ভিত্তিক ডেটা মডেল, স্কিমালেস স্ট্রাকচার, এবং horizontal scaling এর ক্ষমতা একে ডেভেলপারদের কাছে জনপ্রিয় করেছে। যদিও এটি রিলেশনাল ডাটাবেসের মতো জটিল ট্রানজ্যাকশন এবং রিলেশনশিপ ব্যবস্থাপনা সমর্থন করে না, MongoDB তবুও উচ্চ পারফরম্যান্স, নমনীয়তা, এবং স্কেলেবিলিটির জন্য NoSQL ডাটাবেস হিসেবে বিশেষভাবে ব্যবহৃত হয়।

মঙ্গোডিবি হলো একটি ওপেন-সোর্স, ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস যা JSON-এর মতো ডকুমেন্টে ডেটা সংরক্ষণ করে। এটি রিলেশনাল ডাটাবেস থেকে ভিন্ন, কারণ এতে স্কিমালেস (schema-less) বা ডাইনামিক স্কিমা সমর্থন করে, যার মানে হচ্ছে ডেটা স্টোরেজের জন্য নির্দিষ্ট কোনো টেবিল বা কলাম কাঠামো থাকতে হয় না। MongoDB উচ্চ গতির ডেটা সংরক্ষণ ও অনুসন্ধানের জন্য ডেভেলপারদের মধ্যে খুবই জনপ্রিয়। এটি horizontal scaling এবং বড় আকারের ডিস্ট্রিবিউটেড ডেটাবেস ব্যবস্থাপনার জন্য ব্যবহৃত হয়।


MongoDB: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

MongoDB হল একটি NoSQL ডকুমেন্ট-ভিত্তিক ডেটাবেস, যা JSON-এর মতো BSON (Binary JSON) ফরম্যাটে ডেটা সংরক্ষণ করে। এটি রিলেশনাল ডেটাবেসের মতো টেবিল এবং রো-ভিত্তিক নয়, বরং ডকুমেন্ট ও কালেকশন-ভিত্তিক একটি ডেটাবেস মডেল। MongoDB মূলত দ্রুতগতির ডেটা সংরক্ষণ, স্কেলেবিলিটি এবং ডিস্ট্রিবিউটেড ডেটা ম্যানেজমেন্টের জন্য ডিজাইন করা হয়েছে।

MongoDB এর অন্যতম বৈশিষ্ট্য হল এর Flexibility। এখানে ডেটা সংরক্ষণ করতে স্কিমা প্রয়োজন হয় না, অর্থাৎ আপনি ইচ্ছামত ডকুমেন্ট তৈরি করতে পারেন এবং পরে তা পরিবর্তন করতে পারেন। MongoDB বিভিন্ন ধরনের অ্যাপ্লিকেশনের জন্য উপযুক্ত, যেমন Big Data বা Real-time Analytics

MongoDB এর বৈশিষ্ট্যসমূহ

  1. ডকুমেন্ট-ভিত্তিক স্টোরেজ: MongoDB JSON বা BSON ফরম্যাটে ডেটা সংরক্ষণ করে, যা রিলেশনাল ডেটাবেসের টেবিলের মতো কাজ করে না। এটি ডেটার জন্য অনেক বেশি ফ্লেক্সিবল এবং স্কিমালেস।
  2. স্কেলেবিলিটি: MongoDB খুবই সহজে হরাইজন্টাল স্কেলিং (Sharding) সমর্থন করে, যার মাধ্যমে বড় ডেটাবেসের লোড শেয়ার করা যায়।
  3. ACID সমর্থন: MongoDB 4.0 থেকে সম্পূর্ণ ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজাকশন সাপোর্ট করে।
  4. Replication: MongoDB ডিস্ট্রিবিউটেড ডেটাবেস সাপোর্ট করে, যেমন Replica Set, যা উচ্চতর অ্যাভেলেবিলিটি নিশ্চিত করে।
  5. ইন্ডেক্সিং: MongoDB ডেটাবেসে দ্রুত কুয়েরি করার জন্য শক্তিশালী ইন্ডেক্সিং সিস্টেম প্রদান করে।
  6. ফ্লেক্সিবল ডেটা মডেল: MongoDB স্কিমালেস ডেটা মডেল সমর্থন করে, যার মাধ্যমে আপনি ডেটা ফরম্যাট নির্দিষ্ট না করেও ডেটা ইনসার্ট করতে পারেন।
  7. GeoJSON এবং GIS সাপোর্ট: MongoDB GeoJSON ডেটা এবং জিওগ্রাফিকাল ইনফরমেশন সিস্টেম (GIS) সমর্থন করে।
  8. Aggregation Framework: MongoDB-তে জটিল ডেটা প্রক্রিয়াকরণের জন্য Aggregation Pipeline ব্যবহার করা যায়।
  9. ফাস্ট রাইট অপারেশন: MongoDB দ্রুত রাইট অপারেশন সমর্থন করে, যা বড় আকারের ডেটা সংরক্ষণের জন্য কার্যকর।
  10. মাল্টি-ডকুমেন্ট ট্রানজাকশন: MongoDB 4.0 থেকে মাল্টি-ডকুমেন্ট ট্রানজাকশন সমর্থন করে, যা বড় এবং জটিল অ্যাপ্লিকেশনগুলোর জন্য প্রয়োজনীয়।

MongoDB ইনস্টলেশন এবং সেটআপ

MongoDB বিভিন্ন অপারেটিং সিস্টেমে ইনস্টল করা যায়। নিচে Linux (Ubuntu), Windows, এবং Mac এ MongoDB ইনস্টল করার ধাপগুলো দেওয়া হল:

Linux (Ubuntu)-এ MongoDB ইনস্টলেশন

ধাপ ১: MongoDB রিপোজিটরি যোগ করা

sudo apt update
sudo apt install -y gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

ধাপ ২: MongoDB ইনস্টল করা

sudo apt update
sudo apt install -y mongodb-org

ধাপ ৩: MongoDB সার্ভার চালু করা

sudo systemctl start mongod
sudo systemctl enable mongod

Windows-এ MongoDB ইনস্টলেশন

  1. MongoDB অফিসিয়াল ওয়েবসাইট থেকে Windows এর জন্য MongoDB ইনস্টলার ডাউনলোড করুন।
  2. ইনস্টলার চালান এবং নির্দেশনা অনুসরণ করুন।
  3. MongoDB চালানোর জন্য Command Prompt বা PowerShell খুলে mongod কমান্ডটি ব্যবহার করুন।

Mac-এ MongoDB ইনস্টলেশন (Homebrew ব্যবহার করে)

brew tap mongodb/brew
brew install mongodb-community@4.4

MongoDB সার্ভার চালানোর জন্য:

brew services start mongodb/brew/mongodb-community

MongoDB ব্যবহারের প্রথম ধাপ

MongoDB ইনস্টল করার পরে, আপনি MongoDB Shell (mongo) ব্যবহার করে MongoDB পরিচালনা করতে পারেন। MongoDB Shell আপনাকে ডাটাবেস ম্যানেজমেন্ট এবং কুয়েরি চালাতে সাহায্য করে।

MongoDB Shell এ লগইন করা

MongoDB সার্ভার চালু করার পরে, MongoDB Shell এ লগইন করতে পারেন নিচের কমান্ডটি ব্যবহার করে:

mongo

নতুন ডাটাবেস তৈরি করা

MongoDB তে একটি নতুন ডাটাবেস তৈরি করতে হলে, use কমান্ড ব্যবহার করতে হয়:

use my_database

নতুন কালেকশন তৈরি করা

MongoDB-তে একটি ডাটাবেসের মধ্যে Collection নামে ডকুমেন্ট স্টোর করা হয়। একটি নতুন কালেকশন তৈরি করতে হলে, নিচের কমান্ডটি ব্যবহার করুন:

db.createCollection("students")

ডকুমেন্ট ইনসার্ট করা

MongoDB তে একটি ডকুমেন্ট ইনসার্ট করার জন্য insertOne() ফাংশন ব্যবহার করতে পারেন:

db.students.insertOne({
    "name": "John Doe",
    "age": 25,
    "email": "john@example.com"
})

ডেটা রিট্রিভ করা

MongoDB তে ডেটা রিট্রিভ করতে find() ফাংশন ব্যবহার করা হয়:

db.students.find()

উপরের কুয়েরিটি students কালেকশন থেকে সমস্ত ডকুমেন্ট রিটার্ন করবে।

MongoDB এর ডেটা মডেল

MongoDB একটি ডকুমেন্ট-ভিত্তিক ডেটাবেস, যেখানে ডকুমেন্টগুলো JSON ফরম্যাটে থাকে। MongoDB তে স্কিমালেস ডেটা মডেল সমর্থিত, অর্থাৎ প্রতিটি ডকুমেন্টে ভিন্ন ভিন্ন ফিল্ড থাকতে পারে।

ডকুমেন্টের উদাহরণ:

{
    "_id": ObjectId("60dbf830936d1bba286b2c4f"),
    "name": "Alice",
    "age": 30,
    "skills": ["Java", "Python", "MongoDB"]
}

MongoDB Collection

MongoDB তে ডকুমেন্টগুলো Collection এ সংরক্ষিত হয়, যা রিলেশনাল ডেটাবেসের টেবিলের মতো।

MongoDB এর ডাটাবেস কনসেপ্ট

  • Database: MongoDB এর মধ্যে অনেকগুলো ডাটাবেস থাকতে পারে।
  • Collection: প্রতিটি ডাটাবেসের মধ্যে এক বা একাধিক কালেকশন থাকতে পারে।
  • Document: প্রতিটি কালেকশনে একাধিক ডকুমেন্ট থাকে, যা JSON ফরম্যাটে সংরক্ষিত হয়।

MongoDB এর স্টোরেজ ইঞ্জিন

MongoDB দুটি প্রধান স্টোরেজ ইঞ্জিন সমর্থন করে:

  1. WiredTiger: MongoDB 3.2 থেকে এটি ডিফল্ট স্টোরেজ ইঞ্জিন। এটি উচ্চ কর্মক্ষমতা এবং ডাটা কম্প্রেশন সাপোর্ট করে।
  2. MMAPv1: এটি MongoDB এর পুরানো স্টোরেজ ইঞ্জিন, যা কম ফিচার সমর্থন করে এবং কর্মক্ষমতায় কম।

স্টোরেজ ইঞ্জিন পরিবর্তন করা

MongoDB এর স্টোরেজ ইঞ্জিন পরিবর্তন করতে নিচের মত করে mongod.conf ফাইলে কনফিগার করতে হয়:

storage:
  engine: wiredTiger

MongoDB এর অ্যাগ্রিগেশন ফ্রেমওয়ার্ক

MongoDB এর Aggregation Framework ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা যায়। এটি MapReduce এর মতো কাজ করে এবং বড় ডেটাবেস থেকে ডেটা প্রক্রিয়াকরণ ও বিশ্লেষণ করার জন্য উপযুক্ত।

Aggregation পাইপলাইনের উদাহরণ:

db.orders.aggregate([
    { $match: { status: "completed" } },
    { $group: { _id: "$customerId", total: { $sum: "$amount" } } }
])

উপরের উদাহরণে, আমরা orders কালেকশন থেকে সম্পূর্ণ অর্ডারগুলোকে গ্রুপ করে প্রতিটি কাস্টমারের মোট অর্ডার পরিমাণ বের করেছি।

MongoDB এর রেপ্লিকেশন

MongoDB তে Replica Set ব্যবহার করে ডেটাবেস রেপ্লিকেশন করা যায়। এটি মূলত একটি ডিস্ট্রিবিউটেড ডেটাবেস যেখানে একাধিক নোড একই ডেটার কপি রাখে।

Master-Slave Replication

MongoDB তে Primary এবং Secondary নোড থাকে। Primary নোডে ডেটা রাইট করা হয় এবং Secondary নোডগুলি ডেটা রিড করে।

Replica Set তৈরি করা

MongoDB তে একটি Replica Set তৈরি করতে, mongod ইনস্ট্যান্সগুলোকে নিচের মতো কনফিগার করতে হবে:

mongod --replSet "rs0"

এর পরে, MongoDB Shell এ লগইন করে rs.initiate() কমান্ড দিয়ে Replica Set শুরু করতে হবে:

rs.initiate()

MongoDB এর সুবিধা

  1. স্কিমালেস: MongoDB স্কিমালেস ডেটাবেস মডেল সমর্থন করে, যার ফলে আপনি ডেটা মডেলিংয়ে ফ্লেক্সিবিলিটি পান।
  2. স্কেলেবিলিটি: MongoDB বড় ডেটাবেসগুলির জন্য সহজে স্কেল করা যায়।
  3. দ্রুত ডেটা রাইট এবং রিড: MongoDB দ্রুত রাইট এবং রিড পারফরম্যান্স প্রদান করে।
  4. ডিস্ট্রিবিউটেড ডেটাবেস সাপোর্ট: MongoDB ডিস্ট্রিবিউটেড ডেটাবেস এবং রেপ্লিকেশন সমর্থন করে, যা হাই-অ্যাভেলেবিলিটি নিশ্চিত করে।
  5. JSON ডেটা ফরম্যাট: MongoDB JSON-এর মতো ডেটা ফরম্যাট ব্যবহার করে, যা ডেভেলপারদের জন্য সহজ এবং পরিচিত।

MongoDB এর অসুবিধা

  1. জটিলতা: বড় এবং জটিল ডেটাবেস মডেলিংয়ের সময় MongoDB এর কনফিগারেশন এবং পরিচালনা কিছুটা জটিল হতে পারে।
  2. কম ট্রানজাকশন সাপোর্ট: MongoDB তে রিলেশনাল ডেটাবেসের মতো ট্রানজাকশন সমর্থন 4.0 সংস্করণের আগে ছিল না।
  3. RAM নির্ভরতা: MongoDB ইন-মেমোরি ভিত্তিক অপারেশন বেশি করে, তাই বড় ডেটাবেসে প্রচুর RAM প্রয়োজন হতে পারে।

MongoDB বনাম রিলেশনাল ডাটাবেস (RDBMS)

বৈশিষ্ট্যMongoDBরিলেশনাল ডাটাবেস (যেমন: MySQL, PostgreSQL)
ডেটা মডেলডকুমেন্ট ভিত্তিক (JSON, BSON)টেবিল ভিত্তিক (রিলেশনাল টেবিল)
স্কিমাস্কিমালেস, ডাইনামিক স্কিমাফিক্সড স্কিমা
ট্রানজ্যাকশন সমর্থনসীমিত (মাল্টি-ডকুমেন্ট ট্রানজ্যাকশন)ACID ট্রানজ্যাকশন
স্কেলেবিলিটিHorizontal scaling (শার্ডিং)সাধারণত Vertical scaling
ব্যবহারক্ষেত্রবিগ ডেটা, ওয়েব অ্যাপ্লিকেশন, রিয়েল-টাইম অ্যানালিটিক্সব্যাংকিং, ফাইন্যান্স, জটিল ট্রানজ্যাকশন প্রয়োজন

MongoDB বনাম Redis

বৈশিষ্ট্যMongoDBRedis
ডেটা মডেলডকুমেন্ট ভিত্তিক (JSON/BSON)কী-ভ্যালু, লিস্ট, সেট, হ্যাশ, স্ট্রিং ইত্যাদি
স্থায়ীত্বহ্যাঁ, ডেটা ডিস্কে সংরক্ষণ করেহ্যাঁ, তবে ইন-মেমরি ভিত্তিক
ইন্ডেক্সিংসমর্থন করেসমর্থন করে না (তবে দ্রুত অ্যাক্সেসে সক্ষম)
ব্যবহারক্ষেত্রডেটা স্টোরেজ এবং অ্যাপ্লিকেশন ডেটা মডেলিংইন-মেমরি ক্যাশিং, রিয়েল-টাইম ডেটা প্রসেসিং

উপসংহার

MongoDB হলো একটি অত্যন্ত শক্তিশালী এবং স্কেলেবল NoSQL ডাটাবেস, যা আধুনিক ওয়েব অ্যাপ্লিকেশন, বিগ ডেটা প্রসেসিং, এবং রিয়েল-টাইম ডেটা অ্যাপ্লিকেশনের জন্য আদর্শ। এর ডকুমেন্ট ভিত্তিক ডেটা মডেল, স্কিমালেস স্ট্রাকচার, এবং horizontal scaling এর ক্ষমতা একে ডেভেলপারদের কাছে জনপ্রিয় করেছে। যদিও এটি রিলেশনাল ডাটাবেসের মতো জটিল ট্রানজ্যাকশন এবং রিলেশনশিপ ব্যবস্থাপনা সমর্থন করে না, MongoDB তবুও উচ্চ পারফরম্যান্স, নমনীয়তা, এবং স্কেলেবিলিটির জন্য NoSQL ডাটাবেস হিসেবে বিশেষভাবে ব্যবহৃত হয়।

Promotion

Are you sure to start over?

Loading...