How to Use MongoDB Transactions & Rollbacks
Frontend Developer with 3 years of experience building scalable, SEO-optimized web applications using React.js, Next.js, and modern JavaScript ecosystems. Skilled in performance optimization, advanced state management (Redux, React Query), and driving frontend architecture decisions within Agile development teams.
Transaction কী?
Transaction এর মাধ্যমে একাধিক ডাটাবেইস অপারেশন একসাথে execute হয়, এবং সবগুলো সফল হলে তবেই ডাটাবেজে স্থায়ীভাবে save হয়।
যদি কোনো একটি অপারেশন fail করে, তাহলে সবকিছু rollback হয়ে যায় — অর্থাৎ, কোনো ডেটা চেঞ্জই হয় না।
উদাহরণ: ধরো তুমি একজন ইউজারকে create করছো এবং তার account-এর জন্য একটা balance সেট করছো। ইউজার তৈরি হলেও যদি balance সেট করতে গিয়ে error হয়, তাহলে পুরো process টা undo হয়ে যাবে — যাতে inconsistent ডেটা না থাকে।
Rollback কী?
Rollback মানে হল পূর্ববর্তী অবস্থায় ফিরে যাওয়া। অর্থাৎ, যদি transaction-এর মাঝখানে কোনো সমস্যা হয়, তাহলে আগের যেই সব কাজ হয়েছিল, সেগুলোকেও undo করে ফেলা হয়।
✅ Mongoose-এ Transaction কিভাবে কাজ করে?
Mongoose/MongoDB-তে transaction ব্যবহার করতে হলে session শুরু করতে হয়।
const mongoose = require('mongoose');
const runTransaction = async () => {
const session = await mongoose.startSession(); // Session শুরু
session.startTransaction(); // Transaction শুরু
try {
// প্রথম কাজ: ইউজার তৈরি
const user = await User.create([{ name: 'Zaki' }], { session });
// দ্বিতীয় কাজ: অ্যাকাউন্ট তৈরি
const account = await Account.create([{ userId: user[0]._id, balance: 1000 }], { session });
await session.commitTransaction(); // সবকিছু ঠিকঠাক হলে save করে ফেলে
console.log('Transaction committed successfully.');
} catch (error) {
await session.abortTransaction(); // সমস্যা হলে rollback করে
console.error('Transaction failed and rolled back:', error.message);
} finally {
session.endSession(); // Session শেষ
}
};
runTransaction();