Amazon DocumentDB (with MongoDB compatibility) আধুনিক ডকুমেন্ট-ভিত্তিক ডেটাবেস হিসাবে অনেক উন্নত ফিচার প্রদান করে, যা স্কেলেবিলিটি, পারফরম্যান্স, সিকিউরিটি, এবং ডেটা পরিচালনা উন্নত করতে সাহায্য করে। এই ফিচারগুলি বিভিন্ন প্রকার অ্যাপ্লিকেশন এবং ব্যবহারের ক্ষেত্রে অত্যন্ত কার্যকরী হতে পারে। নিচে DocumentDB-এর কিছু Advanced Features বিস্তারিতভাবে আলোচনা করা হল।
DocumentDB MongoDB-এর মত Aggregation Pipelines সমর্থন করে, যা ডেটা প্রক্রিয়া এবং বিশ্লেষণের জন্য একটি শক্তিশালী টুল। Aggregation Pipelines ব্যবহার করে আপনি ডেটাকে বিভিন্ন স্টেপের মাধ্যমে প্রসেস করতে পারেন, যেমন:
db.orders.aggregate([
{ "$match": { "status": "shipped" } },
{ "$group": { "_id": "$customer_id", "total_sales": { "$sum": "$amount" } } },
{ "$sort": { "total_sales": -1 } }
])
এটি "shipped" স্ট্যাটাসের অর্ডারগুলো ফিল্টার করবে, তারপর customer_id অনুযায়ী মোট বিক্রয় পরিমাণ যোগ করবে এবং সর্বোচ্চ বিক্রয় পরিমাণ দিয়ে সাজাবে।
DocumentDB শার্ডিং সমর্থন করে, যা ডেটাকে বিভিন্ন সার্ভারে বা shards-এ বিভক্ত করে স্টোরেজ এবং পারফরম্যান্স বৃদ্ধি করে। শার্ডিংয়ের মাধ্যমে ডেটার লোড ভারসাম্য এবং স্কেলিং সহজ করা যায়, বিশেষ করে বড় ডেটাসেটের ক্ষেত্রে।
sh.shardCollection("sales", { "product_id": 1 })
এটি sales
কালেকশনে product_id ফিল্ডের উপর ভিত্তি করে শার্ডিং করবে।
DocumentDB-তে multi-document transactions সমর্থিত, যা ডেটার একাধিক ডকুমেন্টের মধ্যে ACID (Atomicity, Consistency, Isolation, Durability) গ্যারান্টি নিশ্চিত করে। এতে একাধিক ডকুমেন্টে একসাথে রাইট (লিখন) এবং রিড (পড়া) অপারেশন পরিচালনা করা যায়।
const session = client.startSession();
session.startTransaction();
try {
db.accounts.updateOne({ account_id: "12345" }, { $inc: { balance: -100 } }, { session });
db.accounts.updateOne({ account_id: "67890" }, { $inc: { balance: 100 } }, { session });
session.commitTransaction();
} catch (error) {
session.abortTransaction();
}
session.endSession();
এটি একটি অ্যাকাউন্ট থেকে টাকা কমিয়ে অন্য অ্যাকাউন্টে যোগ করে এবং multi-document transaction ব্যবহার করে সম্পূর্ণ প্রক্রিয়াটিকে atomic নিশ্চিত করে।
DocumentDB ডেটা এনক্রিপশন সমর্থন করে, যা Data-at-Rest এবং Data-in-Transit সুরক্ষিত রাখে।
DocumentDB এর সাথে ইনস্টলেশন এবং কনফিগারেশন পরবর্তী সময়ে এনক্রিপশন সক্ষম করা যায়।
DocumentDB Point-in-Time Recovery (PITR) সমর্থন করে, যা আপনাকে নির্দিষ্ট সময়ের মধ্যে ডেটাবেস পুনরুদ্ধার করতে সাহায্য করে। এটি আপনার ডেটাবেসে করা সমস্ত পরিবর্তন রেকর্ড করে এবং একটি নির্দিষ্ট সময় বা ডেটাবেসের অবস্থা পুনরুদ্ধার করতে পারে।
DocumentDB অটোমেটিক ব্যাকআপ তৈরি করে, যা সিস্টেমের কোনো সমস্যা বা ব্যর্থতা হলে ডেটার সুরক্ষা নিশ্চিত করে। ব্যাকআপগুলি নিরাপদে স্টোর করা হয় এবং একাধিক দিন পর্যন্ত পুনরুদ্ধার করা যায়।
DocumentDB Replica Sets সমর্থন করে, যা ডেটার উচ্চ অ্যাভেইলেবিলিটি এবং পারফরম্যান্স নিশ্চিত করে। Replica sets ব্যবহার করে ডেটাবেসের কপি তৈরি হয় এবং একাধিক অবস্থানে সংরক্ষিত থাকে, যাতে কোনো একটি ইনস্ট্যান্স নষ্ট হলে অন্য একটি ইনস্ট্যান্স থেকে ডেটা পুনরুদ্ধার করা যায়।
DocumentDB বিভিন্ন ধরনের indexes সমর্থন করে, যা ডেটা অনুসন্ধান এবং পারফরম্যান্স অপ্টিমাইজেশনে সহায়ক।
db.users.createIndex({ "name": 1 })
এটি name ফিল্ডের উপর একটি সেকেন্ডারি ইনডেক্স তৈরি করবে।
DocumentDB সম্পূর্ণরূপে monitoring এবং logging সমর্থন করে, যা ডেটাবেস পারফরম্যান্স এবং অ্যাপ্লিকেশনের সুস্থতা ট্র্যাক করতে সহায়ক। Amazon CloudWatch ব্যবহার করে আপনি ডেটাবেসের পারফরম্যান্স মেট্রিক্স যেমন CPU ব্যবহার, ডিস্ক I/O, এবং স্টোরেজ খরচ পর্যবেক্ষণ করতে পারেন।
DocumentDB AWS Identity and Access Management (IAM) এর সাথে একীভূত, যা ডেটাবেস অ্যাক্সেস এবং রোল ভিত্তিক নিয়ন্ত্রণ পরিচালনা করতে সহায়ক। IAM ব্যবহারকারীদের নির্দিষ্ট roles প্রদান করে, যা তাদের ডেটাবেসের কিভাবে অ্যাক্সেস করবে তা নির্ধারণ করে।
DocumentDB-এর Advanced Features যেমন Aggregation Pipelines, Sharding, Multi-Document Transactions, Encryption, Point-in-Time Recovery, এবং High Availability ব্যবহার করে আপনি বড় এবং জটিল ডেটাবেস অ্যাপ্লিকেশনগুলো খুবই দক্ষভাবে পরিচালনা করতে পারেন। এগুলির মাধ্যমে ডেটার নিরাপত্তা, পারফরম্যান্স, এবং স্কেলেবিলিটি অনেক বৃদ্ধি পায়, এবং এটি আপনার অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী এবং সুরক্ষিত ডেটাবেস সমাধান প্রদান করে।
Aggregation Pipelines MongoDB এবং DocumentDB-তে ডেটা বিশ্লেষণ এবং প্রক্রিয়া করার জন্য অত্যন্ত শক্তিশালী একটি ফিচার। এটি বিভিন্ন stages এবং operators ব্যবহার করে ডেটাকে একাধিক ধাপে প্রক্রিয়া করতে সহায়তা করে, যেমন ডেটা ফিল্টারিং, গ্রুপিং, সোর্টিং, প্রজেকশন, এবং আরও অনেক কিছু। এখানে আমরা Aggregation Pipelines এর উন্নত ব্যবহারের কিছু কৌশল এবং উদাহরণ আলোচনা করব, যা আপনার ডেটা প্রসেসিংকে আরও শক্তিশালী এবং কার্যকরী করে তুলবে।
এই স্টেজগুলি একে অপরের সাথে সংযুক্ত করে Pipeline তৈরি করা হয়, যা একাধিক স্টেপে ডেটা প্রক্রিয়া করতে সাহায্য করে।
একাধিক স্টেজকে একত্রে ব্যবহার করে জটিল ডেটা প্রসেসিং কার্যক্রম করা যায়। উদাহরণস্বরূপ, আপনি ডেটা ফিল্টার করার পর সেটি গ্রুপ করতে পারেন এবং তারপর সেগুলো সঠিকভাবে সাজিয়ে একটি নির্দিষ্ট লিমিট পর্যন্ত রেজাল্ট দেখতে পারেন।
উদাহরণ: নিচের কুয়েরি একটি ইকমার্স ডেটাবেসের অর্ডার ডেটা গ্রুপ করে, প্রতি গ্রাহকের জন্য মোট অর্ডারের পরিমাণ বের করে এবং সর্বোচ্চ ৫টি গ্রাহক দেখায়।
db.orders.aggregate([
{ $match: { status: "completed" } }, // শুধুমাত্র সম্পন্ন অর্ডার
{ $group: { _id: "$customerId", totalAmount: { $sum: "$amount" } } }, // গ্রুপিং করে মোট পরিমাণ হিসাব করা
{ $sort: { totalAmount: -1 } }, // মোট পরিমাণ অনুযায়ী সাজানো
{ $limit: 5 } // শীর্ষ ৫টি গ্রাহক
])
এই উদাহরণে:
status
ফিল্টার করা হচ্ছে।totalAmount
হিসাব করা হচ্ছে।totalAmount
এর ভিত্তিতে সজ্জিত করা হচ্ছে এবং শীর্ষ ৫টি গ্রাহক দেখানো হচ্ছে।$lookup
(Join-like Operation)MongoDB-তে $lookup ব্যবহার করে দুটি আলাদা কালেকশনের মধ্যে join করা যায়, যা SQL ডেটাবেসের JOIN এর মতো। এটি দুটি কালেকশনের মধ্যে সম্পর্ক স্থাপন করে।
উদাহরণ: ধরা যাক, আপনার কাছে orders
এবং products
নামের দুটি কালেকশন আছে এবং আপনি প্রতিটি অর্ডারের সাথে সংশ্লিষ্ট পণ্যের তথ্য যুক্ত করতে চান।
db.orders.aggregate([
{
$lookup: {
from: "products", // যেখানে join করতে হবে
localField: "productId", // অর্ডার ডকুমেন্টের ক্ষেত্র
foreignField: "_id", // পণ্য ডকুমেন্টের ক্ষেত্র
as: "productDetails" // যেখানে ফলাফল রাখা হবে
}
},
{ $unwind: "$productDetails" } // পণ্যের তথ্য এক্সপ্যান্ড করা
])
এখানে:
$lookup
দুটি কালেকশনের মধ্যে সম্পর্ক স্থাপন করেছে, এবং অর্ডারের তথ্যের সাথে সংশ্লিষ্ট পণ্যের তথ্য যুক্ত করেছে।$unwind
ব্যবহার করে অ্যারে ভ্যালু এক্সপ্যান্ড করা হয়েছে।$facet
(Multiple Pipelines)$facet স্টেজ ব্যবহার করে আপনি একাধিক পিপলাইনের মাধ্যমে একসাথে একাধিক ডেটা প্রসেসিং করতে পারেন। এটি জটিল কুয়েরি তৈরি করতে সহায়ক।
উদাহরণ: ধরা যাক, আপনি চান একদিকে সকল পণ্য তথ্য এবং অন্যদিকে বিক্রির মোট পরিমাণ আলাদা আলাদা ভাবে বের করতে:
db.orders.aggregate([
{
$facet: {
"totalSales": [
{ $match: { status: "completed" } },
{ $group: { _id: null, totalSales: { $sum: "$amount" } } }
],
"productStats": [
{ $unwind: "$products" },
{ $group: { _id: "$products.productId", totalSold: { $sum: "$products.quantity" } } }
]
}
}
])
এখানে:
totalSales
এর জন্য এবং অপরটি productStats
এর জন্য।কখনও কখনও আপনার প্রক্রিয়াজাত ডেটার মধ্যে আরও জটিল ফিল্টার এবং সোর্টিং প্রয়োজন হতে পারে, যা সহজে $match এবং $sort স্টেজ ব্যবহার করে করা যায়।
উদাহরণ: ধরা যাক, আপনি এমন সমস্ত অর্ডারের ডেটা চান যেখানে গ্রাহক age > 30
এবং পরিমাণ > 1000
, এবং সেগুলি date এর ভিত্তিতে সজ্জিত করতে চান:
db.orders.aggregate([
{ $match: { age: { $gt: 30 }, amount: { $gt: 1000 } } },
{ $sort: { date: -1 } }
])
এটি শুধুমাত্র সেই অর্ডারগুলো দেখাবে যেখানে গ্রাহকের বয়স ৩০ এর বেশি এবং অর্ডারের পরিমাণ ১০০০ এর বেশি।
$addFields
এবং $set
(Adding New Fields)$addFields এবং $set অপারেশন ব্যবহার করে আপনি নতুন ফিল্ড যোগ করতে পারেন বা বিদ্যমান ফিল্ডের মান পরিবর্তন করতে পারেন।
উদাহরণ: ধরা যাক, আপনি প্রতি অর্ডারের সাথে একটি নতুন ফিল্ড taxAmount
যোগ করতে চান:
db.orders.aggregate([
{ $addFields: { taxAmount: { $multiply: ["$amount", 0.1] } } }
])
এখানে:
$addFields
অপারেশনটি প্রতিটি অর্ডারের জন্য taxAmount
হিসাব করে এবং সেটি নতুন ফিল্ড হিসেবে যোগ করেছে।Aggregation Pipelines MongoDB এবং DocumentDB-তে ডেটা প্রক্রিয়া এবং বিশ্লেষণের জন্য অত্যন্ত শক্তিশালী একটি ফিচার। $match, $group, $sort, $lookup, $facet, এবং $addFields এর মতো স্টেজগুলি ব্যবহার করে আপনি জটিল ডেটা প্রসেসিং ও বিশ্লেষণ কার্যক্রম সম্পাদন করতে পারেন। এই ফিচারগুলো ব্যবহার করে আপনি আপনার ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ প্রক্রিয়াকে আরও শক্তিশালী এবং কার্যকরী করতে পারেন।
Time-series data হল এমন ডেটা যা সময়ের সাথে পরিবর্তিত হয় এবং সাধারণত একটি নির্দিষ্ট সময় পরিসরে সংগ্রহ করা হয়। এটি নির্দিষ্ট সময়ে ঘটিত ঘটনাগুলির তথ্য সংগ্রহ করে, যেমন মেট্রিক্স, লগস, সেন্সর ডেটা, ট্রানজেকশন বা স্টক মার্কেটের মূল্য। Time-series data ব্যবস্থাপনা একটি বিশেষ চ্যালেঞ্জ হতে পারে, কারণ এটি বড় পরিমাণে ডেটা প্রক্রিয়া এবং সংরক্ষণ করার জন্য দক্ষ স্টোরেজ এবং বিশ্লেষণ পদ্ধতির প্রয়োজন।
Amazon DocumentDB এবং অন্যান্য ডেটাবেসে time-series data পরিচালনা করার জন্য বেশ কিছু কৌশল এবং পদ্ধতি রয়েছে। এই কৌশলগুলি আপনার ডেটা সংগ্রহ এবং বিশ্লেষণকে আরও কার্যকরী এবং স্কেলযোগ্য করে তোলে।
{"timestamp": "2024-11-01T00:00:00Z", "value": 100}
।Time-series data কে কার্যকরভাবে পরিচালনা করতে কিছু সেরা কৌশল আছে:
timestamp
ফিল্ডে ইনডেক্স তৈরি করা যাতে নির্দিষ্ট সময়ের মধ্যে ডেটা সহজে খুঁজে পাওয়া যায়।উদাহরণ:
db.sensorData.find({ "timestamp": { "$gte": "2024-01-01T00:00:00Z", "$lt": "2024-01-02T00:00:00Z" } })
sum
, avg
, min
, max
, ইত্যাদি অ্যাগ্রিগেশন ফাংশন ব্যবহার করে ডেটার সারাংশ তৈরি করা।DocumentDB MongoDB এর মত NoSQL ডেটাবেসে time-series data ম্যানেজমেন্টের জন্য কিছু বিশেষ কৌশল গ্রহণ করা যায়:
timestamp
এবং value
ফিল্ড থাকবে।timestamp
ফিল্ডে ইনডেক্স তৈরি করলে, সময়ের উপর ভিত্তি করে দ্রুত কুয়েরি করা যায়।উদাহরণ:
db.sensorData.aggregate([
{ "$match": { "timestamp": { "$gte": "2024-01-01T00:00:00Z", "$lt": "2024-01-02T00:00:00Z" } } },
{ "$group": { "_id": null, "avgTemperature": { "$avg": "$temperature" } } }
])
Time-series ডেটা বিশ্লেষণের জন্য কিছু শক্তিশালী টুলস এবং ফ্রেমওয়ার্ক রয়েছে:
Time-series data management হল এমন একটি প্রক্রিয়া যা সময়ের সাথে পরিবর্তনশীল ডেটা সংগ্রহ, বিশ্লেষণ এবং সংরক্ষণ করে। DocumentDB বা MongoDB-তে time-series ডেটা সংরক্ষণের জন্য in-memory indexing, aggregation pipelines, এবং sharding ইত্যাদি পদ্ধতি ব্যবহার করা যেতে পারে। কার্যকরীভাবে time-series data পরিচালনা করতে ডেটা কম্প্রেশন, ইনডেক্সিং, এবং প্রজেকশন কৌশলগুলি গুরুত্বপূর্ণ ভূমিকা পালন করে।
Event-Driven Architecture (EDA) এবং Change Streams দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডিস্ট্রিবিউটেড সিস্টেম এবং মাইক্রোসার্ভিস আর্কিটেকচারের জন্য কার্যকরী। এই দুটি কনসেপ্ট ডেটাবেসের পরিবর্তনসমূহ ট্র্যাক করতে এবং স্বয়ংক্রিয়ভাবে প্রতিক্রিয়া জানাতে ব্যবহৃত হয়। DocumentDB এ Change Streams একটি গুরুত্বপূর্ণ ফিচার যা MongoDB এর মতো কাজ করে এবং ইভেন্ট ড্রিভেন আর্কিটেকচার তৈরি করতে সাহায্য করে।
Event-Driven Architecture (EDA) একটি আর্কিটেকচারাল প্যাটার্ন যেখানে সিস্টেম বা অ্যাপ্লিকেশন বিভিন্ন ইভেন্টের উপর ভিত্তি করে প্রতিক্রিয়া জানায়। এখানে, ইভেন্টগুলি হতে পারে যেকোনো পরিবর্তন বা অ্যাকশন যা সিস্টেমের মধ্যে ঘটে, যেমন ডেটাবেস পরিবর্তন, ব্যবহারকারী ইনপুট, নেটওয়ার্ক রিকোয়েস্ট ইত্যাদি।
Change Streams একটি MongoDB বৈশিষ্ট্য, যা DocumentDB-তেও সমর্থিত। এটি ব্যবহারকারীদের ডেটাবেসের মধ্যে ঘটিত পরিবর্তনগুলি ট্র্যাক করার সুযোগ দেয় এবং সেই পরিবর্তনগুলির উপর ভিত্তি করে প্রতিক্রিয়া জানাতে সহায়ক। এটি ইভেন্ট-ড্রিভেন আর্কিটেকচারের ক্ষেত্রে গুরুত্বপূর্ণ, যেখানে ডেটাবেসের আপডেট বা পরিবর্তনগুলির ভিত্তিতে অন্যান্য সিস্টেমে কার্যকলাপ ট্রিগার করা হয়।
Change Streams ডেটাবেসের পরিবর্তনসমূহ শোনে এবং সেই পরিবর্তনগুলিকে অন্য সিস্টেমের কাছে পাঠায়। DocumentDB-তে Change Streams MongoDB-এর মতই কাজ করে এবং সাধারণত একটি MongoDB Aggregation Pipeline হিসাবে ব্যবহার করা হয়।
উদাহরণ: ধরা যাক আপনি একটি sales নামক collection এ পরিবর্তন শোনা চান। আপনি Change Stream ব্যবহার করে এই collection এ ঘটিত নতুন insert
, update
, বা delete
পরিবর্তনগুলি ট্র্যাক করতে পারেন।
const changeStream = db.sales.watch([
{ $match: { 'operationType': { $in: ['insert', 'update', 'delete'] } } }
]);
changeStream.on('change', (change) => {
console.log('Detected a change in sales:', change);
});
এই কোডটি DocumentDB এর sales
collection-এ যেকোনো নতুন insert
, update
, বা delete
অপারেশন পরিবর্তন শনাক্ত করবে এবং সেই পরিবর্তনটি কনসোল আউটপুট হিসেবে প্রদর্শন করবে।
orders
collection এ যখন নতুন অর্ডার যোগ হয়, তখন Change Streams সেই পরিবর্তন ট্র্যাক করতে পারে এবং অর্ডার প্রক্রিয়াকরণ সিস্টেমে ইভেন্ট পাঠাতে পারে।Event-Driven Architecture (EDA) এবং Change Streams দুটি গুরুত্বপূর্ণ কৌশল যা সিস্টেমে ডেটার পরিবর্তন শোনা এবং তা অনুযায়ী প্রতিক্রিয়া জানাতে ব্যবহৃত হয়। DocumentDB-তে Change Streams ব্যবহার করে আপনি ডেটাবেসের সকল পরিবর্তন রিয়েল-টাইমে ট্র্যাক করতে পারবেন এবং তৎক্ষণাৎ সিস্টেমে অন্য কোনো কার্যকলাপ ট্রিগার করতে পারবেন। এটি ইভেন্ট-ভিত্তিক কার্যক্রম এবং মাইক্রোসার্ভিস আর্কিটেকচার পরিচালনা করার জন্য অত্যন্ত কার্যকর।
Triggers এবং Functions হল ডেটাবেস পরিচালন ব্যবস্থার গুরুত্বপূর্ণ উপাদান, যা ডেটাবেসে স্বয়ংক্রিয় কার্যক্রম পরিচালনা করতে সাহায্য করে। Triggers একটি নির্দিষ্ট ইভেন্টের জন্য স্বয়ংক্রিয়ভাবে চালিত হয়, এবং Functions হল পুনরায় ব্যবহারযোগ্য কোড যা ডেটাবেসে নির্দিষ্ট কাজ করতে ব্যবহৃত হয়।
তবে, CouchDB এবং MongoDB উভয়েই ঐতিহ্যগত SQL ডেটাবেসের মতো ট্রিগার বা ফাংশন সমর্থন করে না, কিন্তু কিছু আধুনিক NoSQL ডেটাবেসে ট্রিগার এবং ফাংশনালিটি রয়েছে, যা সাধারণত অ্যাপ্লিকেশন লেভেলে পরিচালিত হয়। নিচে Triggers এবং Functions সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Triggers হল বিশেষ ধরনের স্নিপেট বা কোড, যা স্বয়ংক্রিয়ভাবে একটি নির্দিষ্ট ডেটাবেস ইভেন্ট (যেমন ইনসার্ট, আপডেট বা ডিলিট) সংঘটিত হলে চালিত হয়। SQL ডেটাবেসে, ট্রিগার সাধারণত INSERT, UPDATE, DELETE ইভেন্টের উপর ভিত্তি করে চলে। NoSQL ডেটাবেসে, বিশেষ করে CouchDB এবং MongoDB-তে, ট্রিগার ব্যবহারের জন্য অন্য ধরনের পদ্ধতি থাকতে পারে।
CouchDB তে কোনো সোজা ট্রিগার ব্যবস্থাপনা নেই, তবে আপনি CouchDB Design Documents এবং Views ব্যবহার করে কিছু ম্যানুয়াল প্রক্রিয়া তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি কিছু কাস্টম ফাংশন এবং MapReduce ব্যবহার করে ডেটার ওপর কিছু অটোমেটেড প্রসেস তৈরি করতে পারেন।
MongoDB তে Triggers সাধারণত Change Streams ব্যবহার করে তৈরি করা হয়, যা MongoDB 3.6 সংস্করণ থেকে উপলব্ধ। এটি একটি real-time ইভেন্ট ড্রিভেন সিস্টেম যেখানে ডেটা পরিবর্তনের সময় MongoDB ক্লাস্টারের মধ্যে সঠিক কাজের জন্য event listeners বসানো হয়। MongoDB-তে Change Streams ব্যবহার করে আপনি ডেটাবেসের পরিবর্তন বা আপডেটের প্রতি মনিটর করতে পারেন এবং সেই অনুযায়ী কার্যক্রম চালাতে পারেন।
MongoDB তে ট্রিগার কার্যক্রমের উদাহরণ হতে পারে:
const changeStream = db.collection.watch();
changeStream.on('change', (next) => {
console.log(next);
// Handle changes (Insert, Update, Delete) here
});
এই কোডটি MongoDB-র watch ফিচার ব্যবহার করে, যেটি ডেটাবেসের পরিবর্তন নজরদারি করে এবং আপনি যেকোনো পরিবর্তন ঘটলে কাস্টম ফাংশন চালাতে পারেন।
Functions হল কোডের পুনঃব্যবহারযোগ্য অংশ, যা নির্দিষ্ট ইনপুট নিয়ে কার্য সম্পাদন করে। SQL ডেটাবেসে stored functions বা user-defined functions (UDFs) ব্যবহৃত হয়, যেখানে আপনি একাধিক ইনপুট দিয়ে একটি নির্দিষ্ট কাজ সম্পাদন করতে পারেন। NoSQL ডেটাবেসে, সাধারণত এটি অ্যাপ্লিকেশন লেভেল ফাংশন হিসাবে কার্যকর হয়, তবে কিছু NoSQL ডেটাবেসে সীমিত ফাংশনালিটি রয়েছে।
CouchDB তে functions সাধারণত views এবং MapReduce কৌশলগুলির মাধ্যমে তৈরি করা হয়। JavaScript ব্যবহার করে আপনি কিছু কাস্টম ফাংশন তৈরি করতে পারেন, যা ডেটাবেসের উপর কাজ করবে। CouchDB-তে ফাংশন মূলত MapReduce ফাংশনালিটি হিসেবে কাজ করে।
CouchDB View Function Example:
function(doc) {
if (doc.type === "user") {
emit(doc.name, doc.age);
}
}
এই কোডটি user
ধরনের ডকুমেন্টের নাম এবং বয়স প্রদর্শন করবে, যা একটি কাস্টম ফাংশনের মাধ্যমে করা হচ্ছে।
MongoDB তে functions অ্যাপ্লিকেশন স্তরে সাধারণত JavaScript, Node.js, Python ইত্যাদির মাধ্যমে তৈরি করা হয়। MongoDB server-side JavaScript এবং MongoDB Atlas Functions সাপোর্ট করে, যা কাস্টম কোড চালাতে ব্যবহৃত হয়। MongoDB Atlas Functions ব্যবহার করে ক্লাউডে ফাংশন তৈরি করতে পারেন।
MongoDB Atlas Function Example:
exports = function(payload) {
const collection = context.services.get("mongodb-atlas").db("sampleDB").collection("users");
return collection.find({ age: { $gt: 18 } }).toArray();
};
এই ফাংশনটি MongoDB Atlas ক্লাউডের মধ্যে ডেটা ফিল্টারিং এবং রিটার্ন করার জন্য ব্যবহৃত হবে।
বৈশিষ্ট্য | CouchDB | MongoDB |
---|---|---|
Triggers | সরাসরি ট্রিগার সমর্থন করে না, তবে views এবং functions ব্যবহার করা যায় | Change Streams সমর্থন করে, যা ডেটাবেস পরিবর্তন নজরদারি করে |
Functions | MapReduce ফাংশনালিটি, JavaScript ব্যবহার করা হয় | Atlas Functions এবং server-side JavaScript |
প্রক্রিয়া | Views এবং MapReduce এর মাধ্যমে প্রক্রিয়া করা হয় | MongoDB এর watch ফিচার ব্যবহার করে real-time কার্য সম্পাদন |
ট্রিগার বা ফাংশনের কার্যক্রম | কোড বা ফাংশন কাস্টম লজিকের সাথে যুক্ত | পরিবর্তনের উপর ভিত্তি করে সিস্টেমে কার্যকারিতা অটোমেটেড হয় |
Triggers এবং Functions ডেটাবেসে স্বয়ংক্রিয় কার্যক্রম পরিচালনা করার জন্য খুবই গুরুত্বপূর্ণ। CouchDB এবং MongoDB উভয়েই বিভিন্ন পদ্ধতিতে এই কার্যক্রম সম্পন্ন করে, তবে তাদের বাস্তবায়ন ভিন্ন। CouchDB তে MapReduce এবং views ব্যবহার করে কার্য সম্পাদন করা হয়, whereas MongoDB তে Change Streams এবং Atlas Functions ব্যবহৃত হয়। MongoDB বেশ কিছু ক্ষেত্রে real-time ডেটা পরিবর্তন মনিটর করতে সহায়ক এবং ফাংশনগুলিকে আরও ডাইনামিক ভাবে প্রয়োগ করা সম্ভব।
common.read_more