Document রিভিশন এবং _rev ফিল্ড

Database Tutorials - কাউচডিবি (CouchDB) CouchDB এর রিভিশন কন্ট্রোল এবং কনফ্লিক্ট ম্যানেজমেন্ট |
204
204

CouchDB একটি Document-Oriented NoSQL Database যা MVCC (Multi-Version Concurrency Control) প্রযুক্তি ব্যবহার করে ডেটার রিভিশন বা সংস্করণ নিয়ন্ত্রণ করে। এই রিভিশন ব্যবস্থার মাধ্যমে CouchDB ডকুমেন্টের বিভিন্ন সংস্করণ ট্র্যাক করে এবং একাধিক ব্যবহারকারী একই ডকুমেন্ট আপডেট করার সময় কনফ্লিক্ট এড়াতে সাহায্য করে।

ডকুমেন্টের প্রতিটি সংস্করণকে _rev ফিল্ডে রিভিশন আইডি হিসেবে সংরক্ষণ করা হয়। এটি CouchDB এর কনফ্লিক্ট ম্যানেজমেন্ট সিস্টেমের একটি গুরুত্বপূর্ণ অংশ, যা ডকুমেন্টের সংস্করণ এবং তার আপডেটের হিসাব রাখে।


1. _rev ফিল্ডের ধারণা

_rev (revision) হল CouchDB তে একটি ডকুমেন্টের রিভিশন আইডেন্টিফায়ার। এটি একটি স্ট্রিং যা প্রতিটি ডকুমেন্টের সংস্করণ নির্ধারণ করে এবং ডকুমেন্টের পরিবর্তন বা আপডেটের সময় সেটি পরিবর্তিত হয়।

  • _rev ফিল্ডটি ডকুমেন্টের সংস্করণের ট্র্যাকিংয়ের জন্য ব্যবহার করা হয়, যা নিশ্চিত করে যে কোনও পরিবর্তন সঠিকভাবে এবং সঠিক রিভিশন অনুযায়ী করা হয়েছে।
  • প্রতিটি রিভিশন তার পূর্ববর্তী সংস্করণের সাথে সম্পর্কিত থাকে এবং CouchDB ডকুমেন্টের ইতিহাস রাখে, যাতে কনফ্লিক্টের ক্ষেত্রে সঠিক সংস্করণ নির্বাচন করা যায়।

2. _rev ফিল্ডের গঠন

_rev ফিল্ডের মধ্যে সাধারণত দুটি অংশ থাকে:

  1. Revision Number: একটি সংখ্যা যা ডকুমেন্টের সংস্করণের সংখ্যা নির্দেশ করে। প্রতিটি নতুন আপডেটে এটি বৃদ্ধি পায়।
  2. Digest: একটি হ্যাশ বা ডাইজেস্ট যা রিভিশনের সাথে সম্পর্কিত ডেটার অখণ্ডতা নিশ্চিত করে। এটি ডেটার পরিবর্তন বা আপডেটের পর একটি নতুন মান পায়।

উদাহরণ:

{
  "_id": "user123",
  "_rev": "1-aad4d2bcff6796b3174ac2f2182f5c1d",
  "name": "John Doe",
  "email": "john.doe@example.com"
}

এখানে:

  • _id: "user123" হল ডকুমেন্টের অনন্য চিহ্ন।
  • _rev: "1-aad4d2bcff6796b3174ac2f2182f5c1d" হল রিভিশন আইডি, যা ডকুমেন্টের সংস্করণ এবং তার পরিবর্তনের হ্যাশ নির্দেশ করে।

3. Document রিভিশন এবং কনফ্লিক্ট ম্যানেজমেন্ট

CouchDB ডকুমেন্টের রিভিশন ম্যানেজমেন্ট এবং কনফ্লিক্ট রেজল্যুশন ব্যবস্থা প্রদান করে, যাতে একাধিক ব্যবহারকারী একে অপরের পরিবর্তনগুলি মেনে নিতে পারে। যদি একাধিক ব্যবহারকারী একই ডকুমেন্টে আলাদা আলাদা আপডেট করেন, CouchDB সেই আপডেটগুলোকে ভিন্ন সংস্করণ হিসেবে তৈরি করে এবং একে অপরের সাথে তুলনা করে।

  • একই ডকুমেন্টের একাধিক সংস্করণ: যখন একাধিক ব্যবহারকারী একই ডকুমেন্টে পরিবর্তন করেন, CouchDB প্রতিটি সংস্করণকে আলাদা রাখে এবং _rev ফিল্ডে নতুন রিভিশন যোগ করে।
  • কনফ্লিক্ট সৃষ্টির সময়: যদি দুই ব্যবহারকারী একে অপরের পরিবর্তনের পরিপূরকভাবে কাজ করে থাকেন এবং _rev ফিল্ডে কনফ্লিক্ট দেখা দেয়, CouchDB কনফ্লিক্টের জন্য একাধিক সংস্করণ প্রস্তুত করে এবং ব্যবহারকারীকে এটি ম্যানুয়ালি সমাধান করতে বলে।

4. CouchDB তে রিভিশন ব্যবস্থার কাজ করার পদ্ধতি

a. নতুন ডকুমেন্ট তৈরি

যখন একটি নতুন ডকুমেন্ট তৈরি করা হয়, CouchDB _rev ফিল্ডের মধ্যে একটি প্রথম রিভিশন সংরক্ষণ করে। উদাহরণস্বরূপ, একটি নতুন ডকুমেন্টের _rev হতে পারে "1-2345", যেখানে "1" রিভিশন সংখ্যা এবং "2345" ডকুমেন্টের ডেটার হ্যাশ।

b. ডকুমেন্ট আপডেট

যখন একটি ডকুমেন্ট আপডেট করা হয়, CouchDB _rev ফিল্ডে একটি নতুন সংস্করণ প্রদান করে। _rev ফিল্ডটি রিভিশন সংখ্যা বাড়িয়ে এবং হ্যাশ পরিবর্তন করে আপডেট হওয়া ডেটা ট্র্যাক করে।

উদাহরণ: প্রথম সংস্করণ:

{
  "_id": "user123",
  "_rev": "1-2345",
  "name": "John Doe",
  "email": "john.doe@example.com"
}

আপডেট হওয়া সংস্করণ:

{
  "_id": "user123",
  "_rev": "2-abc123",
  "name": "John Doe",
  "email": "john.doe@newdomain.com"
}

এখানে:

  • _rev ফিল্ডের মান পরিবর্তিত হয়েছে "1-2345" থেকে "2-abc123"-এ, যা ডকুমেন্টের দ্বিতীয় সংস্করণ নির্দেশ করে।

c. কনফ্লিক্ট এবং সমাধান

যদি একই ডকুমেন্টে একাধিক ব্যবহারকারী ভিন্ন সময়ে পরিবর্তন করেন, CouchDB বিভিন্ন সংস্করণ তৈরি করে এবং _rev ফিল্ডের মাধ্যমে তাদের মধ্যে পার্থক্য দেখায়। এই ক্ষেত্রে কনফ্লিক্ট সৃষ্টির সম্ভাবনা থাকে, এবং ব্যবহারকারীকে ম্যানুয়ালি _rev ফিল্ড ব্যবহার করে সর্বোত্তম সংস্করণ নির্বাচন করতে হবে।


5. কনফ্লিক্ট সমাধান

CouchDB ডকুমেন্টের রিভিশন এবং _rev ফিল্ড ব্যবহার করে কনফ্লিক্ট সমাধান করার জন্য Conflict Resolution পদ্ধতি প্রদান করে। যখন CouchDB ডেটার মধ্যে কনফ্লিক্ট সনাক্ত করে, তখন এটি একাধিক সংস্করণ তৈরি করে এবং ব্যবহারকারীকে তাদের মধ্যে সিদ্ধান্ত নিতে দেয়।

CouchDB সাধারণত কনফ্লিক্ট সমাধান করতে automatic conflict resolution (যদি সম্ভব হয়) অথবা ব্যবহারকারীর দিক থেকে ম্যানুয়াল সমাধান প্রস্তাব করে।


উপসংহার

CouchDB এর _rev ফিল্ড এবং Document revision ব্যবস্থাপনা ডেটার নিরাপত্তা এবং সঠিকতা বজায় রাখতে সহায়ক। এটি Multi-Version Concurrency Control (MVCC) প্রযুক্তি ব্যবহার করে একাধিক সংস্করণের মাধ্যমে ডেটার আপডেট এবং কনফ্লিক্ট ম্যানেজমেন্টকে কার্যকরভাবে পরিচালনা করে। _rev ফিল্ড ডকুমেন্টের পরিবর্তনগুলিকে সঠিকভাবে ট্র্যাক এবং সিঙ্ক্রোনাইজ করতে সহায়ক, যা CouchDB-কে একটি শক্তিশালী ডিস্ট্রিবিউটেড ডাটাবেস সিস্টেমে পরিণত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion