CouchDB এবং PouchDB একটি শক্তিশালী ডেটাবেস সিঙ্ক্রোনাইজেশন সমাধান প্রদান করে। PouchDB, CouchDB এর সাথে সামঞ্জস্যপূর্ণ একটি ক্লায়েন্ট-সাইড ডাটাবেস, যা অফলাইনে ডেটা সঞ্চয় এবং পরবর্তী সময়ে ইন্টারনেট সংযোগ পাওয়ার পর সিঙ্কিং করতে সক্ষম। এই উদাহরণে আমরা দেখব কিভাবে PouchDB এবং CouchDB এর মধ্যে সিঙ্ক্রোনাইজেশন করা যায়।
১. PouchDB এবং CouchDB সম্পর্কে সংক্ষিপ্ত ধারণা
- PouchDB: এটি একটি ওপেন সোর্স JavaScript ডাটাবেস লাইব্রেরি, যা ব্রাউজারে এবং Node.js এ ডেটা সঞ্চয় করতে ব্যবহৃত হয়। এটি CouchDB এর সাথে একযোগভাবে কাজ করতে পারে এবং অফলাইন সিঙ্ক্রোনাইজেশন সাপোর্ট দেয়।
- CouchDB: এটি একটি ওপেন সোর্স NoSQL ডাটাবেস সিস্টেম, যা HTTP REST API ব্যবহার করে ডেটা পরিচালনা করে। CouchDB ক্লাউড বা সার্ভারে ব্যবহৃত হয় এবং PouchDB এর সাথে ডেটা সিঙ্ক্রোনাইজ করতে সক্ষম।
২. PouchDB এবং CouchDB Sync করার জন্য প্রস্তুতি
- CouchDB ইনস্টলেশন: প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে CouchDB ইনস্টল করা আছে এবং এটি কনফিগার করা হয়েছে। CouchDB সাধারণত
localhost:5984এ চলে থাকে। এটি ব্রাউজারে অ্যাক্সেস করতে হবে। PouchDB ইনস্টলেশন: PouchDB ইনস্টল করতে নিচের কোড ব্যবহার করুন:
npm install pouchdbCouchDB তে একটি ডেটাবেস তৈরি করা: CouchDB তে একটি নতুন ডেটাবেস তৈরি করুন, যেমন
tasks.- আপনি
curlবাCouchDB's web interfaceব্যবহার করে নতুন ডেটাবেস তৈরি করতে পারেন:
curl -X PUT http://localhost:5984/tasks- আপনি
৩. PouchDB এবং CouchDB এর মধ্যে সিঙ্ক্রোনাইজেশন
এখন, আমরা দেখব কিভাবে PouchDB ব্যবহার করে ব্রাউজারে একটি লোকাল ডেটাবেস তৈরি করতে এবং তারপর সেটি CouchDB এর সাথে সিঙ্ক করতে হবে।
PouchDB তে ডেটাবেস তৈরি এবং সিঙ্কিং শুরু করা
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PouchDB & CouchDB Sync Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pouchdb/7.0.0/pouchdb.min.js"></script>
</head>
<body>
<h1>PouchDB & CouchDB Sync Example</h1>
<script>
// লোকাল PouchDB ডেটাবেস তৈরি
var localDB = new PouchDB('local_tasks');
// CouchDB এর URL
var remoteDB = new PouchDB('http://localhost:5984/tasks');
// সিঙ্ক্রোনাইজেশন সেটআপ করা
localDB.sync(remoteDB, {
live: true, // লাইভ সিঙ্কিং
retry: true // পুনরায় চেষ্টা
}).on('change', function(info) {
console.log('Sync changed:', info);
}).on('paused', function(info) {
console.log('Sync paused:', info);
}).on('active', function() {
console.log('Sync resumed');
}).on('error', function(err) {
console.log('Sync error:', err);
});
// ডেটা যোগ করা
function addTask() {
var task = {
_id: new Date().toISOString(),
task: 'Sample Task',
completed: false
};
localDB.put(task).then(function(response) {
console.log('Task added:', response);
}).catch(function(err) {
console.log('Error adding task:', err);
});
}
// নতুন টাস্ক যোগ করতে ফাংশন কল করুন
addTask();
</script>
</body>
</html>
৪. কোড ব্যাখ্যা:
লোকাল ডেটাবেস (PouchDB):
var localDB = new PouchDB('local_tasks');এটি PouchDB তে একটি নতুন ডেটাবেস তৈরি করবে যেটি ব্রাউজারে স্টোর হবে। এখানে
local_tasksনামক ডেটাবেসটি তৈরি করা হয়েছে।CouchDB রিমোট ডেটাবেস:
var remoteDB = new PouchDB('http://localhost:5984/tasks');এটি CouchDB তে অবস্থিত
tasksডেটাবেসের সাথে কানেক্ট করবে।সিঙ্ক্রোনাইজেশন:
localDB.sync(remoteDB, { live: true, retry: true });এই লাইনটি লাইভ সিঙ্ক্রোনাইজেশন শুরু করবে, অর্থাৎ ডেটা পরিবর্তন হলে তা স্বয়ংক্রিয়ভাবে আপডেট হবে।
retry: trueঅপশন ব্যবহার করা হলে, সিঙ্ক্রোনাইজেশন ব্যর্থ হলে এটি পুনরায় চেষ্টা করবে।ডেটা যোগ করা:
var task = { _id: new Date().toISOString(), task: 'Sample Task', completed: false }; localDB.put(task).then(function(response) { console.log('Task added:', response); });এখানে একটি নতুন টাস্ক ডকুমেন্ট তৈরি করা হচ্ছে এবং সেটি লোকাল ডেটাবেসে সংরক্ষণ করা হচ্ছে। এই টাস্কটি পরে CouchDB এর সাথে সিঙ্ক হয়ে যাবে।
৫. সার্ভার এবং ব্রাউজার সিঙ্ক:
- যখন আপনি ব্রাউজারে নতুন টাস্ক যোগ করবেন, সেটি PouchDB তে সংরক্ষণ হবে এবং CouchDB তে সিঙ্ক হয়ে যাবে।
- CouchDB তে যদি কোনো পরিবর্তন ঘটে (যেমন নতুন ডেটা যোগ করা বা কোনো ডেটা পরিবর্তিত হওয়া), তবে PouchDB তে সেই পরিবর্তনটি স্বয়ংক্রিয়ভাবে সিঙ্ক হয়ে যাবে।
সারাংশ
এই উদাহরণে, আমরা দেখেছি কিভাবে PouchDB এবং CouchDB এর মধ্যে ডেটা সিঙ্ক্রোনাইজেশন করা যায়। PouchDB ব্রাউজারে একটি লোকাল ডেটাবেস তৈরি করে এবং CouchDB সার্ভারের সাথে সেটি সিঙ্ক হয়ে যায়। PouchDB দিয়ে আপনি অফলাইনে কাজ করতে পারেন এবং পরে ইন্টারনেট কানেকশন পাওয়ার পর ডেটা CouchDB এর সাথে সিঙ্ক হয়ে যাবে।
Read more