MongoDB-এ ক্যাপড কালেকশন (Capped Collection) হলো একটি ফিক্সড-সাইজ (fixed-size) কালেকশন যা হাই-থ্রুপুট (high-throughput) ইনসার্ট এবং রিট্রিভ অপারেশন সাপোর্ট করে। এটি ইনসার্শন অর্ডার (insertion order) অনুযায়ী ডকুমেন্ট রিটার্ন করে এবং পুরনো ডকুমেন্ট অটোমেটিক্যালি ওভাররাইট করে দেয় যখন সাইজ লিমিট পূর্ণ হয়।
ক্যাপড কালেকশন তৈরি করা
createCollection() মেথডে capped: true, size (বাইটে), এবং max (সর্বোচ্চ ডকুমেন্ট সংখ্যা) নির্দিষ্ট করে ক্যাপড কালেকশন তৈরি করা হয়।
> db.createCollection("demo539", { capped: true, size: 100, max: 4 });
{ "ok" : 1 }
এখানে size: 100 বাইট এবং max: 4 টি ডকুমেন্টের লিমিট সেট করা হয়েছে।
ডকুমেন্ট ইনসার্ট করা
> db.demo539.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8c9094ef4dcbee04fbbc09") }
> db.demo539.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8c9098ef4dcbee04fbbc0a") }
> db.demo539.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8c909bef4dcbee04fbbc0b") }
> db.demo539.insertOne({"Name":"Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8c909eef4dcbee04fbbc0c") }
> db.demo539.insertOne({"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8c90a4ef4dcbee04fbbc0d") }
৫টি ডকুমেন্ট ইনসার্ট করা হলেও, max: 4 হওয়ায় পুরনো ডকুমেন্ট ("Chris") অটোমেটিক্যালি মুছে যাবে।
সব ডকুমেন্ট দেখানো
> db.demo539.find();
আউটপুট (সর্বশেষ ৪টি ডকুমেন্ট):
{ "_id" : ObjectId("5e8c9098ef4dcbee04fbbc0a"), "Name" : "David" }
{ "_id" : ObjectId("5e8c909bef4dcbee04fbbc0b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e8c909eef4dcbee04fbbc0c"), "Name" : "Sam" }
{ "_id" : ObjectId("5e8c90a4ef4dcbee04fbbc0d"), "Name" : "Carol" }
ক্যাপড কালেকশনের বৈশিষ্ট্য ও সীমাবদ্ধতা
- ফিক্সড সাইজ: নির্দিষ্ট সাইজ পূর্ণ হলে পুরনো ডকুমেন্ট মুছে যাবে।
- ইনসার্শন অর্ডার: ডকুমেন্ট ইনসার্ট হওয়ার অর্ডারেই সংরক্ষিত থাকে।
- নো ডিলিট (No Delete): আলাদা করে ডকুমেন্ট ডিলিট করা যায় না (শুধু
drop()করে পুরো কালেকশন ডিলিট করা যায়)। - নো আপডেট (No Update): ডকুমেন্ট আপডেট করা যায় না যদি সেটি ডকুমেন্টের সাইজ বাড়ায়।
- উপযোগিতা: লগিং (logging), ক্যাশিং (caching), রিয়েল-টাইম অ্যানালিটিক্সের জন্য আদর্শ।
মূল পয়েন্টসমূহ
- ক্যাপড কালেকশন তৈরি করতে
db.createCollection(name, {capped: true, size: ..., max: ...})ব্যবহার করুন। - এটি হাই-পারফরম্যান্স লিখন (write) ওয়ার্কলোডের জন্য উপযুক্ত।
- সাইজ বা ডকুমেন্ট সংখ্যা লিমিট পূর্ণ হলে পুরনো ডেটা স্বয়ংক্রিয়ভাবে হারিয়ে যায়।