Multi-Document Transactions হল একটি ডেটাবেস ট্রানজাকশন প্রক্রিয়া, যেখানে একাধিক ডকুমেন্ট বা রেকর্ডের উপর একযোগে পরিবর্তন করা হয়। এটি ডেটাবেসে একাধিক রেকর্ড বা ডকুমেন্ট আপডেট, ইনসার্ট বা ডিলিট করার সময় একে অপরের ওপর নির্ভরশীল থাকে এবং সমস্ত পরিবর্তন একত্রে সফলভাবে প্রয়োগ করা হয় অথবা পুরো ট্রানজাকশনটি ব্যর্থ হয়ে যায়। অর্থাৎ, ট্রানজাকশনটি ACID প্রপার্টি (Atomicity, Consistency, Isolation, Durability) অনুসরণ করে, যাতে ডেটাবেসের কনসিস্টেন্সি এবং সঠিকতা বজায় থাকে।
ধরা যাক, আপনি একটি ডেটাবেসে দুইটি ডকুমেন্ট আপডেট করতে চান:
এই দুইটি অপারেশন যদি একই সময়ে একযোগে সম্পন্ন হয়, তবে Multi-Document Transactions নিশ্চিত করবে যে, যদি একটি অপারেশন ব্যর্থ হয়, তবে অন্যটি ফেইল করবে না এবং কোনো ডেটা কনসিস্টেন্সি ক্ষতিগ্রস্ত হবে না। যদি একটি ট্রানজাকশন সফল হয়, তবে অন্যটি যথাযথভাবে আপডেট হবে। এবং যদি কোন কারণে একটি অপারেশন ব্যর্থ হয়, তখন সবকিছু আগের অবস্থায় ফিরে আসবে (rollback)।
ধরা যাক, একটি অ্যাকাউন্টের ব্যালেন্স আপডেট করতে হবে:
এই দুটি অপারেশন যদি একসাথে সম্পন্ন না হয়, তবে এর ফলে ডেটাবেসে অস্বাভাবিক অবস্থা তৈরি হতে পারে (যেমন, একটি অ্যাকাউন্টে টাকা বৃদ্ধি পাবে কিন্তু অন্য অ্যাকাউন্টে কমে যাবে)। Multi-Document Transaction এই পরিবর্তন দুটি একসাথে করতে সাহায্য করবে, এবং যদি একটি অপারেশন ব্যর্থ হয়, তবে পুরো প্রক্রিয়া রোলব্যাক (rollback) হয়ে যাবে, যাতে ডেটাবেসের সঙ্গতি বজায় থাকে।
MongoDB এবং DocumentDB উভয়ই Multi-Document Transactions সমর্থন করে, তবে এই ট্রানজাকশনগুলি ব্যবহারের সময় কিছু সীমাবদ্ধতা থাকতে পারে।
MongoDB 4.0 সংস্করণ থেকে Multi-Document Transactions সমর্থন শুরু হয়েছে। MongoDB-তে একটি ট্রানজাকশন শুরু করার জন্য আপনি startSession
এবং withTransaction
ব্যবহার করতে পারেন:
const session = client.startSession();
session.startTransaction();
try {
// Document A-তে পরিবর্তন
db.collection('accounts').updateOne({ _id: accountA }, { $inc: { balance: 100 } }, { session });
// Document B-তে পরিবর্তন
db.collection('accounts').updateOne({ _id: accountB }, { $inc: { balance: -100 } }, { session });
// যদি সবকিছু ঠিক থাকে, ট্রানজাকশন কমিট করুন
session.commitTransaction();
} catch (error) {
// কোন সমস্যা হলে, ট্রানজাকশন রোলব্যাক করুন
session.abortTransaction();
} finally {
session.endSession();
}
DocumentDB-তে MongoDB API সমর্থন করা হয়, তাই MongoDB-এর মতোই Multi-Document Transactions ব্যবহৃত হতে পারে, তবে এটি আরও কিছু সীমাবদ্ধতার মধ্যে পড়তে পারে, যেমন শুধুমাত্র কিছু নির্দিষ্ট MongoDB ভার্সনে এই ফিচারটি কাজ করে।
Multi-Document Transactions একটি শক্তিশালী ফিচার যা একাধিক ডকুমেন্টের উপর একযোগে পরিবর্তন করতে ব্যবহৃত হয়, এবং এটি ডেটাবেসের ACID properties বজায় রাখতে সাহায্য করে। এটি ডেটাবেসে Atomicity, Consistency, Isolation, এবং Durability নিশ্চিত করে, যাতে একাধিক ডকুমেন্টের পরিবর্তন একযোগে সফল বা ব্যর্থ হয় এবং ডেটা সঠিক ও নিরাপদ থাকে। MongoDB এবং DocumentDB-তে এই ফিচারটি ব্যবহৃত হয় এবং তা নিশ্চিত করে যে ডেটাবেসের সঙ্গতি এবং সুরক্ষা বজায় থাকবে।
common.read_more