Database Tutorials Transactions API ব্যবহার করা গাইড ও নোট

360

MongoDB তে Transactions API ব্যবহারের মাধ্যমে আপনি ডেটাবেসে একাধিক অপারেশন একযোগে কার্যকর করতে পারেন। একাধিক ডেটাবেস এবং কালেকশনে কার্যক্রম চালানোর সময় সব অপারেশন যদি একত্রে সফল না হয়, তাহলে আপনি সেই সব অপারেশনগুলো রোলব্যাক (rollback) করতে পারেন। এটি একটি ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজেকশন সাপোর্ট প্রদান করে, যা ডেটাবেসের অখণ্ডতা বজায় রাখতে সাহায্য করে।

MongoDB তে ট্রানজেকশন চালানোর জন্য Replica Set সেটআপ থাকতে হবে, কারণ ট্রানজেকশনগুলি Replica Set ভিত্তিক পরিবেশে কাজ করে। MongoDB 4.0 এবং তার পরবর্তী সংস্করণে ট্রানজেকশন সাপোর্ট রয়েছে।


1. ট্রানজেকশন চালানোর জন্য পরিবেশ প্রস্তুত করা

MongoDB তে ট্রানজেকশন শুরু করার আগে নিশ্চিত করুন যে আপনি একটি Replica Set ব্যবহার করছেন। লোকালহোস্টে Replica Set চালু করার জন্য আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:

mongod --replSet "rs0"

Replica Set প্রস্তুত হলে, ট্রানজেকশন ব্যবহার করা যেতে পারে।


2. MongoDB তে ট্রানজেকশন ব্যবহার করার ধাপ

MongoDB তে ট্রানজেকশন ব্যবহারের জন্য, আপনাকে session এবং startTransaction() ব্যবহার করে একটি ট্রানজেকশন শুরু করতে হবে। ট্রানজেকশন চলাকালীন সময়ে যদি কোনো সমস্যা হয়, তবে আপনি abortTransaction() ব্যবহার করে সেই অপারেশনগুলো রোলব্যাক করতে পারেন, এবং যদি সব অপারেশন সফল হয়, তাহলে commitTransaction() ব্যবহার করে পরিবর্তনগুলো সংরক্ষণ করতে পারেন।

2.1. ট্রানজেকশন শুরু করা

MongoDB তে ট্রানজেকশন শুরু করতে, প্রথমে একটি session তৈরি করতে হবে। তারপরে, startTransaction() ব্যবহার করে ট্রানজেকশন শুরু করা যায়।

const session = client.startSession();

session.startTransaction();

2.2. ট্রানজেকশনে ডেটা ইনসার্ট করা

ট্রানজেকশন চালানোর সময় আপনি একাধিক ডকুমেন্ট ইনসার্ট, আপডেট বা ডিলিট করতে পারেন। উদাহরণস্বরূপ, দুটি কালেকশনে ডেটা ইনসার্ট করার ক্ষেত্রে:

const collection1 = db.collection('orders');
const collection2 = db.collection('inventory');

try {
  collection1.insertOne({ orderId: 1, item: 'Laptop', quantity: 2 }, { session });
  collection2.updateOne({ item: 'Laptop' }, { $inc: { stock: -2 } }, { session });
  session.commitTransaction();  // সফল হলে ট্রানজেকশন কমিট করুন
} catch (error) {
  session.abortTransaction();  // কোনো সমস্যা হলে ট্রানজেকশন রোলব্যাক করুন
} finally {
  session.endSession();  // সেশন বন্ধ করুন
}

2.3. ট্রানজেকশন রোলব্যাক করা

যদি কোনো অপারেশন সফল না হয়, আপনি abortTransaction() ব্যবহার করে ট্রানজেকশন রোলব্যাক করতে পারেন:

try {
  // ট্রানজেকশন অপারেশন
  session.commitTransaction();  // সফল হলে কমিট
} catch (error) {
  session.abortTransaction();  // সমস্যার ক্ষেত্রে রোলব্যাক
}

2.4. ট্রানজেকশন কমিট করা

যদি সমস্ত অপারেশন সফল হয়, তবে commitTransaction() ব্যবহার করে পরিবর্তনগুলো সংরক্ষণ করা হয়।

session.commitTransaction();

3. একাধিক কালেকশনে ট্রানজেকশন ব্যবহার

MongoDB তে ট্রানজেকশন একাধিক কালেকশনে কাজ করতে পারে। উদাহরণস্বরূপ, দুটি কালেকশনে ডেটা আপডেট করার সময় ট্রানজেকশন ব্যবহার করা যেতে পারে:

const session = client.startSession();

try {
  session.startTransaction();

  const ordersCollection = db.collection('orders');
  const inventoryCollection = db.collection('inventory');

  ordersCollection.updateOne({ orderId: 1 }, { $set: { status: 'processed' } }, { session });
  inventoryCollection.updateOne({ item: 'Laptop' }, { $inc: { stock: -1 } }, { session });

  session.commitTransaction();  // সফল হলে কমিট
} catch (error) {
  session.abortTransaction();  // সমস্যা হলে রোলব্যাক
} finally {
  session.endSession();
}

4. ট্রানজেকশন কনফিগারেশন এবং ভ্যালিডেশন

MongoDB তে ট্রানজেকশন চালানোর জন্য কিছু কনফিগারেশন এবং সীমাবদ্ধতা রয়েছে:

  • Replica Set: ট্রানজেকশন শুধুমাত্র Replica Set ভিত্তিক MongoDB সার্ভারে কাজ করে।
  • Write Concern: ট্রানজেকশনের জন্য write concern কনফিগার করা গুরুত্বপূর্ণ, যাতে লেখার কার্যক্রম নিশ্চিত হয়।
  • Read Concern: ট্রানজেকশনে ডেটা পড়ার সময় সঠিক অবস্থা নিশ্চিত করতে read concern সেট করা যায়।

5. ট্রানজেকশনে পারফরম্যান্স

যেহেতু ট্রানজেকশনগুলি ডেটাবেসে একাধিক অপারেশন একত্রে প্রসেস করে, তাদের পারফরম্যান্স অন্যান্য একক অপারেশনের তুলনায় কম হতে পারে। তাই, ডেটার পরিমাণ এবং ট্রানজেকশনের জটিলতা বুঝে ট্রানজেকশন ব্যবহার করা উচিত।


সারাংশ

MongoDB তে Transactions API ব্যবহার করে আপনি একাধিক অপারেশন একযোগে কার্যকর করতে পারেন এবং একটি অ্যাটমিক (atomic) ট্রানজেকশনের মাধ্যমে ডেটার অখণ্ডতা নিশ্চিত করতে পারেন। startSession(), startTransaction(), commitTransaction(), এবং abortTransaction() এর মাধ্যমে MongoDB তে ট্রানজেকশন পরিচালনা করা যায়। Replica Set এর মাধ্যমে একাধিক ডেটাবেস ও কালেকশনে ডেটা পরিচালনা করতে MongoDB ট্রানজেকশন খুবই কার্যকরী, যা ডেটাবেসের কর্মক্ষমতা এবং নির্ভরযোগ্যতা নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...