Conflict কিভাবে তৈরি হয়?

PouchDB এর Conflict Management - পাউচডিবি (PouchDB) - Database Tutorials

286

PouchDB, যা একটি ক্লায়েন্ট-সাইড ডাটাবেস, conflict সৃষ্টি করতে পারে যখন ডাটা একই রেকর্ডে একাধিক জায়গায় পরিবর্তিত হয়। এর মানে হল যে, যদি আপনি এবং অন্য কেউ একই ডাটাবেসে একই রেকর্ডে পৃথক পৃথক সময়ে পরিবর্তন করেন, তাহলে conflict তৈরি হবে। PouchDB যখন ডাটা আপডেট করতে যায়, তখন এটি নতুন ডকুমেন্টের সংস্করণ সঠিকভাবে যাচাই করতে চেষ্টা করে। যদি পেয়ে যায় যে দুইটি পরিবর্তন একে অপরের সাথে সম্পর্কিত, তবে সেটি একটি conflict তৈরি করবে।

Conflict তৈরির কারণ

Conflict সাধারণত ঘটে যখন নিম্নলিখিত পরিস্থিতির মধ্যে কোনো একটি বা একাধিক ঘটে:

  • প্যারালাল আপডেট: দুটি ভিন্ন ব্যবহারকারী বা একই ব্যবহারকারী একাধিক জায়গায় একই ডকুমেন্টে আপডেট করার চেষ্টা করেন।
  • সিঙ্ক্রোনাইজেশন সমস্যা: একে অপরের সাথে সিঙ্ক না হওয়া দুটি ডাটাবেসের মধ্যে তথ্য একে অপরকে অসঙ্গতিপূর্ণ হতে পারে।
  • ডকুমেন্ট সংস্করণের পার্থক্য: PouchDB ডকুমেন্টে একটি rev (revision) ফিল্ড ব্যবহার করে। যখন দুটি ডকুমেন্টের সংস্করণ একে অপরের থেকে আলাদা থাকে, তখন একটি conflict সৃষ্টি হয়।

Conflict উদাহরণ

ধরা যাক আপনার কাছে একটি task ডকুমেন্ট আছে:

{
  "_id": "task_1",
  "_rev": "1-a23456b789cde",
  "name": "Complete tutorial"
}

এখন, আপনি এবং আরেকজন ব্যবহারকারী একই ডকুমেন্টে বিভিন্ন সময় পরিবর্তন করেছেন। আপনি name ফিল্ডে পরিবর্তন করেছেন, এবং একই সময়ে অন্য ব্যবহারকারীও একই name ফিল্ডে পরিবর্তন করেছেন। যখন দুইজনের ডাটাবেস একে অপরের সাথে সিঙ্ক হয়, তখন PouchDB এটি শনাক্ত করে যে দুটি পৃথক সংস্করণ আছে এবং একটি conflict তৈরি হয়।

Conflict সমাধান

PouchDB conflict সমাধান করার জন্য কিছু পদ্ধতি এবং কৌশল সরবরাহ করে:

  • ফোর্স রিপ্লেস: আপনি একটি সংস্করণকে অন্যটির সাথে মিলে যেতে বললে সেটি একটি ফোর্স রিপ্লেস করবে, কিন্তু এতে পূর্ববর্তী ডাটার সব পরিবর্তন হারিয়ে যাবে।
  • মানুয়ালি মের্জিং: PouchDB আপনাকে conflict গুলি ম্যানুয়ালি ম্যানেজ করার সুযোগ দেয়। আপনি দুইটি সংস্করণ যাচাই করে, কোনটি ঠিক সেইটিই গ্রহণ করবেন তা নির্ধারণ করতে পারেন।

Conflict সমাধানে PouchDB এর ফাংশন

PouchDB এ conflict গুলি ম্যানেজ করার জন্য get() এবং put() ফাংশন ব্যবহার করা হয়। যখন আপনি একটি conflict দেখতে পান, তখন আপনি get() ফাংশনের মাধ্যমে ডকুমেন্টের বর্তমান সংস্করণটি পরীক্ষা করে দেখতে পারেন এবং পরে put() ব্যবহার করে ম্যানুয়ালি সমাধান করতে পারেন।

db.get('task_1')
  .then(function(doc) {
    // পরিবর্তন করা হয়েছে, এখন নতুন পরিবর্তন করবেন
    doc.name = 'Complete advanced tutorial';
    return db.put(doc);
  })
  .catch(function(err) {
    console.log(err);
  });

এইভাবে, PouchDB একটি কনফ্লিক্ট মোকাবেলা করার জন্য আপনাকে বিভিন্ন অপশন দেয়, যাতে আপনি আপনার ডাটা সঠিকভাবে সমাধান করতে পারেন।

সারাংশ

PouchDB তে conflict তৈরি হয় যখন একই ডকুমেন্টে একাধিক স্থান থেকে ভিন্ন ভিন্ন আপডেট করা হয়। এ ধরনের সমস্যার সমাধান করার জন্য PouchDB আপনাকে ম্যানুয়াল কনফ্লিক্ট রেজোলিউশনের সুযোগ দেয়, যা আপনি ডকুমেন্টের সংস্করণ যাচাই করে এবং পরিবর্তন করে সমাধান করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...