Change Streams কী এবং এর ব্যবহার

MongoDB Change Streams - মঙ্গোডিবি (MongoDB) - Database Tutorials

298

MongoDB তে Change Streams একটি শক্তিশালী ফিচার, যা MongoDB ডেটাবেসের ডকুমেন্টের পরিবর্তনগুলি ট্র্যাক করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি MongoDB তে সংঘটিত হওয়া insert, update, delete, বা replace অপারেশনগুলির উপর রিয়েল-টাইম এ্যাকশন গ্রহণ করতে পারেন। Change Streams বিশেষ করে অ্যাপ্লিকেশন বা সিস্টেমের মধ্যে ডেটাবেসের পরিবর্তনগুলিকে অবহিত করার জন্য ব্যবহৃত হয়, যেমন লগিং, অডিটিং, বা রিয়েল-টাইম ডেটা সিঙ্ক্রোনাইজেশন।

Change Streams MongoDB 3.6 সংস্করণ থেকে উপলব্ধ, এবং এটি Replica Set বা Sharded Cluster পরিবেশে কাজ করে।


Change Streams এর মূল ধারণা

MongoDB Change Streams একটি stream তৈরি করে, যেখানে ডেটাবেস বা কালেকশনে হওয়া পরিবর্তনগুলি স্ট্রিম আকারে প্রকাশিত হয়। এই স্ট্রিমে আপনি বিভিন্ন ধরণের পরিবর্তন ট্র্যাক করতে পারেন এবং সেই অনুযায়ী প্রক্রিয়া গ্রহণ করতে পারেন।

Change Streams ব্যবহার করলে, আপনি MongoDB তে কী পরিবর্তন ঘটছে, কোন ডকুমেন্টে পরিবর্তন হয়েছে, কখন পরিবর্তন হয়েছে, এবং কোন অপারেশন (insert, update, delete) সম্পন্ন হয়েছে তা জানতে পারবেন।


Change Streams এর ব্যবহার

MongoDB তে Change Streams ব্যবহার করার জন্য, আপনাকে প্রথমে watch() ফাংশনটি ব্যবহার করে একটি stream শুরু করতে হবে। এটি ডেটাবেস বা কালেকশনে ট্র্যাকিং চালু করে এবং MongoDB এর পরিবর্তনগুলির উপর রিয়েল-টাইম নোটিফিকেশন প্রদান করে।

1. Change Stream শুরু করা

Change Streams শুরু করতে watch() ফাংশন ব্যবহার করা হয়, যা একটি ChangeStream অবজেক্ট প্রদান করে। উদাহরণস্বরূপ, নিচে দেখানো হলো কিভাবে watch() ব্যবহার করতে হয়:

const { MongoClient } = require('mongodb');

const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri);

async function run() {
  try {
    await client.connect();
    const database = client.db('test');
    const collection = database.collection('users');

    // Create a change stream on the 'users' collection
    const changeStream = collection.watch();

    // Listen for changes in the collection
    changeStream.on('change', (change) => {
      console.log(change);
    });
  } finally {
    await client.close();
  }
}

run().catch(console.error);

এই কোডে, watch() ফাংশন users কালেকশনে ঘটিত পরিবর্তনগুলির জন্য একটি change stream তৈরি করে। প্রতিটি পরিবর্তন ঘটলে, সেটি change ইভেন্টে আউটপুট হবে।


2. Change Stream ফিল্টার ব্যবহার করা

MongoDB তে আপনি Change Stream এর মাধ্যমে শুধুমাত্র নির্দিষ্ট পরিবর্তনগুলো ট্র্যাক করতে পারেন। উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র insert অপারেশন ট্র্যাক করতে চান, তাহলে operationType ফিল্টার ব্যবহার করতে পারেন।

const changeStream = collection.watch([{ $match: { 'operationType': 'insert' } }]);

changeStream.on('change', (change) => {
  console.log('New document inserted:', change);
});

এখানে, $match স্টেজ ব্যবহার করে শুধুমাত্র insert অপারেশনের পরিবর্তনগুলো ট্র্যাক করা হয়েছে। আপনি অন্যান্য অপারেশন যেমন update, delete, ইত্যাদি এর জন্যও ফিল্টার করতে পারেন।


3. Change Stream কাস্টমাইজেশন

MongoDB Change Streams আরও কাস্টমাইজ করতে পারে বিভিন্ন স্টেজ ব্যবহার করে। উদাহরণস্বরূপ:

  • $match: একটি নির্দিষ্ট কন্ডিশন সেট করে শুধুমাত্র সংশ্লিষ্ট পরিবর্তনগুলো ট্র্যাক করা।
  • $project: কেবলমাত্র নির্দিষ্ট ক্ষেত্র বা তথ্যের সাথে পরিবর্তনগুলো প্রদর্শন করা।
  • $sort: স্ট্রিমে আসা ডেটা সাজানো।

উদাহরণ:

const changeStream = collection.watch([
  { $match: { 'operationType': { $in: ['insert', 'update'] } } },
  { $project: { fullDocument: 1, operationType: 1 } }
]);

changeStream.on('change', (change) => {
  console.log('Change detected:', change);
});

এখানে, insert এবং update অপারেশনগুলোর জন্য পরিবর্তন ট্র্যাক করা হয়েছে এবং শুধু fullDocument এবং operationType ফিরিয়ে দেওয়া হয়েছে।


4. Change Stream Scaling and Performance

Change Streams রিয়েল-টাইম পরিবর্তনগুলির জন্য কার্যকর হলেও, এটি কিছু পরিমাণ রিসোর্স ব্যবহার করে। Scaling এবং Performance এর জন্য কিছু গুরুত্বপূর্ণ বিষয়:

  • Cursor Timeout: MongoDB Change Streams জন্য cursor timeout তৈরি হতে পারে। যদি একটি স্ট্রিম দীর্ঘ সময় ধরে চলতে থাকে এবং কোনো পরিবর্তন না ঘটে, তাহলে এই টাইমআউট হতে পারে। এই সমস্যা এড়ানোর জন্য maxAwaitTimeMS ব্যবহার করতে পারেন।

    const changeStream = collection.watch([], { maxAwaitTimeMS: 5000 });
    
  • Buffer Size: MongoDB অটোমেটিক্যালি পরিবর্তনগুলির একটি বাফার তৈরি করে, এবং বড় ডেটাবেসে অনেক পরিবর্তন হতে থাকলে বাফার পূর্ণ হতে পারে। এই কারণে আপনাকে বাফার সাইজ এবং স্ট্রিম ব্যবস্থাপনা ভালোভাবে কনফিগার করতে হবে।

5. Use Cases for Change Streams

MongoDB Change Streams ব্যবহার করার জন্য অনেক ধরনের প্রাসঙ্গিক ব্যবহার রয়েছে। এর মধ্যে কিছু উল্লেখযোগ্য ক্ষেত্র:

  • Real-time Data Sync: MongoDB Change Streams ডেটাবেসের পরিবর্তনগুলিকে রিয়েল-টাইমে অ্যাপ্লিকেশন বা অন্য ডেটাবেসে সিঙ্ক্রোনাইজ করতে ব্যবহৃত হয়।
  • Event Sourcing: MongoDB তে ডেটাবেসের পরিবর্তন ট্র্যাক করার মাধ্যমে আপনি ইভেন্ট সোর্সিং প্যাটার্ন ব্যবহার করে সিস্টেমের পরিবর্তন হিসাব রাখতে পারেন।
  • Audit Logging: MongoDB Change Streams দিয়ে ডেটাবেসের পরিবর্তনগুলির একটি অডিট লগ রাখা যায়, যা নিরাপত্তা এবং কমপ্লায়েন্স ট্র্যাকিংয়ের জন্য ব্যবহৃত হয়।
  • Notification Systems: MongoDB Change Streams ব্যবহার করে একটি রিয়েল-টাইম নোটিফিকেশন সিস্টেম তৈরি করা যায়, যেখানে ব্যবহারকারীরা ডেটাবেসের পরিবর্তনগুলির জন্য নোটিফিকেশন পায়।

সারাংশ

MongoDB এর Change Streams ডেটাবেসের রিয়েল-টাইম পরিবর্তনগুলিকে ট্র্যাক করার জন্য একটি শক্তিশালী টুল। এটি MongoDB অ্যাপ্লিকেশনগুলিতে রিয়েল-টাইম সিঙ্ক্রোনাইজেশন, অডিটিং, ইভেন্ট সোর্সিং এবং নোটিফিকেশন সিস্টেম তৈরি করতে সাহায্য করে। MongoDB তে Change Streams ব্যবহার করে আপনি insert, update, delete, এবং replace অপারেশনগুলি ট্র্যাক করতে পারেন এবং সেই অনুযায়ী কার্যকর পদক্ষেপ নিতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...