CouchDB এ _changes API একটি গুরুত্বপূর্ণ ফিচার যা ডেটাবেসে কোনো পরিবর্তন হলে তৎক্ষণাৎ ক্লায়েন্ট বা অ্যাপ্লিকেশনকে অবহিত (notified) করার সুবিধা প্রদান করে। এটি ডেটাবেসের পরিবর্তনগুলোর জন্য একটি রিয়েল-টাইম ফিড হিসেবে কাজ করে এবং পরিবর্তন ট্র্যাক করার জন্য খুবই কার্যকর। _changes API মূলত CouchDB ডেটাবেসের মধ্যে নতুন ডকুমেন্ট যোগ, ডকুমেন্ট আপডেট বা মুছে ফেলার মতো সব ধরনের পরিবর্তন সম্পর্কে তথ্য সরবরাহ করে।
_changes API ব্যবহার করে CouchDB-তে যে কোনও পরিবর্তন ঘটলে তা ট্র্যাক করা এবং সেই পরিবর্তনগুলির বিস্তারিত তথ্য সংগ্রহ করা সম্ভব। এটি Change Notifications প্রদান করে, যা বিভিন্ন অ্যাপ্লিকেশনে (যেমন ওয়েব বা মোবাইল অ্যাপ্লিকেশন) রিয়েল-টাইম আপডেট পরিচালনায় সহায়তা করে।
এই পরিবর্তনগুলির বিস্তারিত তথ্য যেমন ডকুমেন্টের _id, _rev, _deleted (যদি ডকুমেন্ট মুছে ফেলা হয়), এবং সংশ্লিষ্ট changes প্রদর্শিত হয়।
_changes API একটি GET রিকুয়েস্ট দ্বারা ব্যবহার করা হয় এবং এটি ডেটাবেসে পরিবর্তনের ইতিহাস ফেচ (fetch) করে। এর মাধ্যমে আপনি ডেটাবেসের সব পরিবর্তন বা একটি নির্দিষ্ট টাইমস্ট্যাম্পের পরের পরিবর্তনগুলো পেতে পারেন।
http://<server_ip>:<port>/<db_name>/_changes
এটি ডেটাবেসের সব পরিবর্তনের একটি লিস্ট প্রদান করবে। আপনি বিভিন্ন প্যারামিটার যোগ করতে পারেন যেমন since
, filter
, এবং limit
।
since
: এই প্যারামিটারটি ব্যবহার করে আপনি পরিবর্তনের স্ট্রিমের শুরুতে কোন পয়েন্ট থেকে পরিবর্তনগুলি দেখতে চান। উদাহরণস্বরূপ, পূর্ববর্তী রিভিশন বা টাইমস্ট্যাম্প থেকে পরিবর্তন শুরু করতে পারবেন।filter
: আপনি একটি নির্দিষ্ট ফিল্টার ফাংশন ব্যবহার করতে পারেন যেটি নির্দিষ্ট ডকুমেন্ট বা কন্ডিশনের ভিত্তিতে পরিবর্তন দেখাবে।limit
: আপনি কতটি পরিবর্তন দেখতে চান তা নির্ধারণ করতে পারেন।include_docs
: এই প্যারামিটারটি ডকুমেন্টের বিস্তারিত তথ্যও অন্তর্ভুক্ত করবে, যা সাধারণত ডিফল্টরূপে অন্তর্ভুক্ত থাকে না।এখানে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে _changes API ব্যবহার করা হয়েছে CouchDB ডেটাবেসের সব পরিবর্তন ট্র্যাক করতে।
curl -X GET http://127.0.0.1:5984/mydatabase/_changes
এই রিকুয়েস্টটি mydatabase ডেটাবেসে ঘটে যাওয়া সব ধরনের পরিবর্তন ফিরিয়ে দেবে। এর ফলস্বরূপ, একটি JSON আউটপুট আসবে যা পরিবর্তনের _id, _rev, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য প্রদান করবে।
উদাহরণ আউটপুট:
{
"results": [
{
"seq": "1-g1AAAAF0O4gBBy88FTYB9lZajk_jAglNN4qYJrx1gA2HkA",
"id": "document_1",
"changes": [
{
"rev": "1-xxxxxx"
}
]
},
{
"seq": "2-g1AAAAF0O4gBBy88FTYB9lZajk_jAglNN4qYJrx1gA2HkB",
"id": "document_2",
"changes": [
{
"rev": "2-xxxxxx"
}
]
}
],
"last_seq": "2-g1AAAAF0O4gBBy88FTYB9lZajk_jAglNN4qYJrx1gA2HkB"
}
এখানে results
একটি অ্যারে হিসাবে পরিবর্তনের ইতিহাস রাখে, যেখানে প্রতিটি id এবং rev সংশ্লিষ্ট ডকুমেন্টের রিভিশন পরিবর্তন তথ্য সহ থাকে। last_seq হল সর্বশেষ পরিবর্তনের সিকোয়েন্স নম্বর যা পরবর্তী পরিবর্তনের শুরু পয়েন্ট হিসেবে ব্যবহৃত হতে পারে।
CouchDB-তে Change Notifications তৈরি করার জন্য _changes API কে long-polling মোডে ব্যবহার করা যেতে পারে। Long-polling হল এমন একটি পদ্ধতি যেখানে ক্লায়েন্ট HTTP রিকুয়েস্ট পাঠায় এবং সার্ভার সেই রিকুয়েস্টে পরিবর্তন না আসা পর্যন্ত অপেক্ষা করে থাকে, তারপরে এক বা একাধিক পরিবর্তন ক্লায়েন্টকে পাঠানো হয়।
curl -X GET http://127.0.0.1:5984/mydatabase/_changes?feed=longpoll
এটি একটি long-polling রিকুয়েস্ট তৈরি করবে এবং সার্ভার পরিবর্তনগুলির জন্য অপেক্ষা করবে। যখনই নতুন পরিবর্তন ঘটবে, তা ক্লায়েন্টকে পাঠানো হবে। এটি real-time change notifications প্রদান করে।
CouchDB-তে _changes API একটি শক্তিশালী টুল যা ডেটাবেসের পরিবর্তনগুলি ট্র্যাক করতে এবং রিয়েল-টাইম পরিবর্তন নোটিফিকেশন প্রদান করতে সহায়ক। আপনি long-polling ব্যবহারের মাধ্যমে ডেটাবেসের পরিবর্তনগুলি তৎক্ষণাৎ ক্লায়েন্টে পাঠাতে পারেন, যা রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত উপযোগী। _changes API CouchDB-এর অন্যতম কার্যকর ফিচার যা ডেটাবেসের সকল পরিবর্তন ফেচ এবং ট্র্যাকিং সহজ করে।
common.read_more