PouchDB একটি JavaScript ডাটাবেস লাইব্রেরি যা ব্রাউজার এবং Node.js এ অফলাইন ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি CouchDB এর মতো একটি ডকুমেন্ট-ভিত্তিক ডাটাবেস এবং CRUD (Create, Read, Update, Delete) অপারেশন সমর্থন করে। এই অংশে PouchDB এর মাধ্যমে CRUD অপারেশন কিভাবে করতে হয় তা দেখানো হবে।
Create (ডেটা তৈরি করা)
PouchDB তে ডেটা তৈরি করার জন্য db.put() মেথড ব্যবহার করা হয়। এটি একটি নতুন ডকুমেন্ট তৈরি করতে বা পুরোনো ডকুমেন্ট আপডেট করতে ব্যবহৃত হয়।
// একটি নতুন ডাটাবেস তৈরি করা
const db = new PouchDB('my_database');
// একটি নতুন ডকুমেন্ট তৈরি করা
const doc = {
_id: 'unique_doc_id',
name: 'John Doe',
age: 30
};
db.put(doc)
.then(function(response) {
console.log('Document created successfully:', response);
})
.catch(function(err) {
console.error('Error creating document:', err);
});
Read (ডেটা পড়া)
PouchDB তে ডেটা পড়ার জন্য db.get() মেথড ব্যবহার করা হয়। এটি একটি নির্দিষ্ট ডকুমেন্ট _id ব্যবহার করে ডেটা আনতে সাহায্য করে।
// একটি নির্দিষ্ট ডকুমেন্ট পড়া
db.get('unique_doc_id')
.then(function(doc) {
console.log('Document retrieved:', doc);
})
.catch(function(err) {
console.error('Error retrieving document:', err);
});
এছাড়া, ডেটাবেস থেকে সব ডকুমেন্ট পড়তে db.allDocs() মেথড ব্যবহার করা যায়।
// সব ডকুমেন্ট পড়া
db.allDocs({include_docs: true})
.then(function(result) {
console.log('All documents:', result.rows);
})
.catch(function(err) {
console.error('Error reading documents:', err);
});
Update (ডেটা আপডেট করা)
PouchDB তে ডেটা আপডেট করতে db.put() মেথড ব্যবহার করতে হয়, কিন্তু আপডেট করতে হলে পূর্বে পড়া ডকুমেন্টে _rev ফিল্ড যোগ করতে হয়।
// ডকুমেন্ট আপডেট করা
db.get('unique_doc_id')
.then(function(doc) {
doc.age = 31; // age আপডেট করা
return db.put(doc); // নতুন ডকুমেন্ট সহ আপডেট করা
})
.then(function(response) {
console.log('Document updated successfully:', response);
})
.catch(function(err) {
console.error('Error updating document:', err);
});
Delete (ডেটা মুছে ফেলা)
PouchDB তে ডেটা মুছে ফেলতে db.remove() মেথড ব্যবহার করা হয়। মুছে ফেলার জন্য ডকুমেন্টের _rev ফিল্ড প্রয়োজন।
// একটি ডকুমেন্ট মুছে ফেলা
db.get('unique_doc_id')
.then(function(doc) {
return db.remove(doc); // ডকুমেন্ট মুছে ফেলা
})
.then(function(response) {
console.log('Document deleted successfully:', response);
})
.catch(function(err) {
console.error('Error deleting document:', err);
});
সারাংশ
PouchDB একটি শক্তিশালী এবং ব্যবহারযোগ্য ডাটাবেস যা ব্রাউজার এবং Node.js উভয় প্ল্যাটফর্মেই CRUD অপারেশন সমর্থন করে। এই অপারেশনগুলির মাধ্যমে আপনি ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলতে পারবেন। PouchDB তে CRUD অপারেশনগুলো সহজেই ইনস্টলেশনের পর সম্পাদন করা যায় এবং এটি অফলাইন অ্যাপ্লিকেশনগুলির জন্য বেশ উপকারী।
PouchDB ব্যবহার করে ডকুমেন্ট তৈরি করা খুব সহজ। PouchDB একটি NoSQL ডেটাবেস, যা ডকুমেন্ট স্টোরেজ পদ্ধতি ব্যবহার করে এবং JSON ফরম্যাটে ডেটা সংরক্ষণ করে।
PouchDB তে নতুন ডকুমেন্ট তৈরি করতে হলে আপনাকে put() মেথড ব্যবহার করতে হবে। এই মেথডটি নতুন ডকুমেন্ট তৈরি করবে বা বিদ্যমান ডকুমেন্টকে আপডেট করবে।
উদাহরণ:
ধরা যাক, আপনি একটি সিম্পল ডকুমেন্ট তৈরি করতে চান যা কিছু মৌলিক তথ্য সংরক্ষণ করবে, যেমন নাম, বয়স, এবং শহর।
// PouchDB ইনস্টল এবং ডাটাবেস তৈরি
var db = new PouchDB('users');
// নতুন ডকুমেন্ট তৈরি
var doc = {
_id: 'user1', // ডকুমেন্টের আইডি
name: 'John Doe',
age: 30,
city: 'New York'
};
// ডকুমেন্টটি ডাটাবেসে রাখা
db.put(doc).then(function(response) {
console.log("ডকুমেন্ট সফলভাবে তৈরি হয়েছে:", response);
}).catch(function(err) {
console.log("ত্রুটি ঘটেছে:", err);
});
ব্যাখ্যা:
_id: প্রতিটি ডকুমেন্টের জন্য একটি অনন্য আইডি প্রদান করতে হবে।_idফিল্ডটি ডকুমেন্টের মূল চিহ্ন হিসেবে কাজ করবে।put(): এই মেথডটি ডকুমেন্টটি ডাটাবেসে রাখে। যদি ডকুমেন্টটির_idআগে থেকে ডাটাবেসে থাকে, তবে এটি সেই ডকুমেন্টকে আপডেট করবে। কিন্তু যদি_idনতুন হয়, তবে এটি একটি নতুন ডকুমেন্ট তৈরি করবে।
ডকুমেন্টে অটো-জেনারেটেড _id:
যদি আপনি _id নির্ধারণ না করেন, তবে PouchDB একটি স্বতঃসিদ্ধ _id তৈরি করবে:
var doc = {
name: 'Jane Doe',
age: 25,
city: 'Los Angeles'
};
db.put(doc).then(function(response) {
console.log("অটো-জেনারেটেড আইডি সহ ডকুমেন্ট তৈরি হয়েছে:", response);
}).catch(function(err) {
console.log("ত্রুটি ঘটেছে:", err);
});
এই ক্ষেত্রে, PouchDB স্বতঃসিদ্ধভাবে একটি _id জেনারেট করবে এবং ডকুমেন্টটি ডাটাবেসে সেভ করবে।
সারাংশ:
PouchDB তে নতুন ডকুমেন্ট তৈরি করার জন্য আপনি put() মেথড ব্যবহার করতে পারেন, যেখানে আপনি একটি JSON অবজেক্ট সরবরাহ করবেন এবং _id সেট করতে পারেন বা না-ও করতে পারেন।
PouchDB দিয়ে ডকুমেন্ট পড়ার জন্য প্রথমে আপনাকে একটি ডাটাবেসে ডকুমেন্ট সংরক্ষণ করতে হবে। এরপর সেই ডকুমেন্টটি পড়ার জন্য কিছু পদ্ধতি রয়েছে। এখানে ডকুমেন্ট পড়ার জন্য get() পদ্ধতির ব্যবহার দেখানো হয়েছে।
ডকুমেন্ট পড়া (Read)
1. ডাটাবেস তৈরি ও কনফিগারেশন
প্রথমে, PouchDB ইনস্টল এবং কনফিগার করার পর ডাটাবেস তৈরি করতে হবে।
// PouchDB ইনস্টলেশন
const db = new PouchDB('my_database'); // 'my_database' হলো ডাটাবেসের নাম
2. ডকুমেন্ট পড়া
ডকুমেন্ট পড়ার জন্য get() মেথড ব্যবহার করা হয়। এই মেথডের মাধ্যমে আপনি নির্দিষ্ট _id দিয়ে ডকুমেন্টটি পেতে পারেন।
// ডকুমেন্ট পড়া
db.get('document_id').then(function(doc) {
console.log('Document found:', doc);
}).catch(function(err) {
console.error('Error reading document:', err);
});
এখানে, 'document_id' হলো সেই ডকুমেন্টের _id, যা আপনি পড়তে চান। যদি ডকুমেন্টটি পাওয়া যায়, তাহলে then() ব্লকটি কল হবে এবং আপনি ডকুমেন্টের বিস্তারিত দেখতে পারবেন। যদি কোনো সমস্যা ঘটে, তবে catch() ব্লকটি কল হবে এবং ত্রুটির তথ্য দেখতে পারবেন।
3. একটি উদাহরণ
ধরা যাক, আপনার ডাটাবেসে একটি ডকুমেন্ট আছে যার _id "user_123"। আপনি যদি এটি পড়তে চান, তাহলে কোড হবে:
// ডকুমেন্ট পড়া
db.get('user_123').then(function(doc) {
console.log('User Data:', doc);
}).catch(function(err) {
console.error('Error reading user document:', err);
});
এখানে, doc অ্যাক্সেস করে আপনি ডকুমেন্টের সব তথ্য দেখতে পারবেন। যদি "user_123" নামক ডকুমেন্টটি না থাকে, তবে catch() ব্লকটি ত্রুটি হিসেবে কাজ করবে।
4. মুল বিষয়সমূহ
db.get()মেথড একটিPromiseরিটার্ন করে, যা সফল হলে ডকুমেন্টের তথ্য দেয়।- যদি ডকুমেন্টটি পাওয়া না যায়, তাহলে
catch()ব্লকটি ত্রুটি হিসেবে সাড়া দেয়।
সারাংশ
PouchDB দিয়ে ডকুমেন্ট পড়া সহজ, যেখানে get() মেথড ব্যবহার করে আপনি ডাটাবেসের ডকুমেন্টের তথ্য পেতে পারেন।
PouchDB-এ ডকুমেন্ট আপডেট (Update) করতে হলে, সাধারণত আপনি একটি ডকুমেন্টের _id এবং _rev এর সাথে সেই ডকুমেন্টের নতুন ডেটা পাঠাবেন। _rev হল ডকুমেন্টের সংস্করণ, যা পাউচডিবি ব্যবহার করে ডকুমেন্টের কনফ্লিক্ট প্রতিরোধে সাহায্য করে। ডকুমেন্ট আপডেট করতে হলে নিচের ধাপগুলো অনুসরণ করুন:
ডকুমেন্ট আপডেট করার ধাপ
- ডকুমেন্ট পড়ুন
প্রথমে আপনি সেই ডকুমেন্টটি সংগ্রহ করবেন যা আপডেট করতে চান। - ডকুমেন্টে পরিবর্তন করুন
তারপর, ডকুমেন্টের যে অংশগুলোর পরিবর্তন করতে চান, তা আপডেট করবেন। - ডকুমেন্ট আপডেট করুন
অবশেষে, আপনি পাউচডিবিতে সেই আপডেটেড ডকুমেন্টটি পাঠাবেন।
নিচে একটি উদাহরণ দেওয়া হল:
কোড উদাহরণ:
const PouchDB = require('pouchdb');
const db = new PouchDB('my_database');
// প্রথমে ডকুমেন্টটি পড়ুন
db.get('my_document_id').then(function(doc) {
// ডকুমেন্টের উপর পরিবর্তন করুন
doc.name = 'Updated Name'; // ডকুমেন্টের নাম পরিবর্তন করা হল
doc.age = 25; // বয়স পরিবর্তন করা হল
// ডকুমেন্টের আপডেটেড সংস্করণ পাউচডিবিতে সেভ করুন
return db.put(doc);
}).then(function(response) {
console.log('ডকুমেন্ট সফলভাবে আপডেট হয়েছে:', response);
}).catch(function(err) {
console.log('ত্রুটি ঘটেছে:', err);
});
ব্যাখ্যা:
db.get('my_document_id'): এখানে'my_document_id'হল সেই ডকুমেন্টটির_idযা আপডেট করতে হবে। এটি ডকুমেন্টটি সংগ্রহ করবে।doc.name = 'Updated Name': এটি ডকুমেন্টেরnameপ্রপার্টি পরিবর্তন করবে।db.put(doc): এই ফাংশনটি ডকুমেন্টটি আবার আপডেট করবে পাউচডিবিতে।put()ফাংশনটি ডকুমেন্টের_revভার্সন সহ আপডেট করতে সাহায্য করে, যাতে ডকুমেন্টের কনফ্লিক্ট এড়ানো যায়।
গুরুত্বপূর্ণ:
_idএবং_rev: যদি_idএকই থাকে এবং_revপরিবর্তন না হয়, তবে পাউচডিবি ডকুমেন্টটি আপডেট করবে।_rev-এর সাথে কনফ্লিক্ট এড়াতে এবং ডেটার সঠিক সংস্করণ নিশ্চিত করার জন্য এই পদ্ধতি ব্যবহার করা হয়।
এইভাবে আপনি PouchDB ব্যবহার করে Node.js-এ ডকুমেন্ট আপডেট করতে পারেন।
PouchDB-তে ডকুমেন্ট মুছে ফেলা একটি সাধারণ অপারেশন, যা একটি নির্দিষ্ট ডকুমেন্টের _id এবং _rev ব্যবহার করে সম্পন্ন করা হয়। _rev এর মাধ্যমে এটি নিশ্চিত করা হয় যে আপনি যে ডকুমেন্টটি মুছে ফেলছেন তা সর্বশেষ সংস্করণ।
ডকুমেন্ট মুছে ফেলার ধাপ:
- ডকুমেন্ট খোঁজা: প্রথমে আপনি যেই ডকুমেন্টটি মুছে ফেলবেন, সেটি খুঁজে বের করতে হবে।
- ডকুমেন্ট মুছে ফেলা:
_revসহ ডকুমেন্টটি ডিলিট করতে হবে।
কোড উদাহরণ:
// PouchDB ডাটাবেজ তৈরি বা খোলা
const db = new PouchDB('my_database');
// মুছতে চাওয়া ডকুমেন্টের ID
const docId = 'my_document_id';
// ডকুমেন্ট খোঁজা
db.get(docId).then(function(doc) {
// ডকুমেন্টটি মুছে ফেলা
return db.remove(doc);
}).then(function(response) {
// সফলভাবে মুছে ফেলা
console.log('ডকুমেন্ট সফলভাবে মুছে ফেলা হয়েছে:', response);
}).catch(function(err) {
// কোনো ত্রুটি ঘটলে তা হ্যান্ডেল করা
console.log('ত্রুটি ঘটেছে:', err);
});
ব্যাখ্যা:
- প্রথমে
db.get(docId)ব্যবহার করে ডকুমেন্টটি পাওয়া হয়। - তারপর
db.remove(doc)ব্যবহার করে ডকুমেন্টটি_revসহ মুছে ফেলা হয়। - যদি সবকিছু সঠিকভাবে ঘটে, তবে মুছে ফেলার সফলতার জন্য একটি রেসপন্স পাবেন।
গুরুত্বপূর্ণ বিষয়:
- ডকুমেন্ট মুছতে হলে অবশ্যই
_revফিল্ডের প্রয়োজন হয়।_revহল ডকুমেন্টের সংস্করণের তথ্য। - PouchDB-তে ডকুমেন্ট মুছে ফেলার পরে তা ডাটাবেজ থেকে সম্পূর্ণরূপে সরানো হয়, কিন্তু তা সিঙ্ক্রোনাইজড হলে তা আরও বেশি লোকাল কপি থেকে মুছে যাবে।
PouchDB এ একাধিক ডকুমেন্টের উপর অপারেশন করা বেশ সহজ এবং কার্যকর। Bulk Operations ব্যবহার করে আপনি একবারে অনেক ডকুমেন্ট যোগ, আপডেট বা ডিলিট করতে পারেন, যা সাধারণত এক এক করে অপারেশন করার চেয়ে অনেক বেশি কার্যকরী।
Bulk Insert (Multiple Documents Insert)
PouchDB এ একাধিক ডকুমেন্ট ইনসার্ট করার জন্য bulkDocs() মেথড ব্যবহার করা হয়। এই মেথডটি একটি অ্যারে হিসেবে একাধিক ডকুমেন্ট গ্রহণ করে এবং তাদের একযোগে ইনসার্ট করে।
উদাহরণ:
const db = new PouchDB('my_database');
const docs = [
{ _id: 'doc1', title: 'Document 1', content: 'This is document 1.' },
{ _id: 'doc2', title: 'Document 2', content: 'This is document 2.' },
{ _id: 'doc3', title: 'Document 3', content: 'This is document 3.' }
];
db.bulkDocs(docs).then(result => {
console.log('Documents inserted:', result);
}).catch(err => {
console.error('Error inserting documents:', err);
});
এখানে, bulkDocs() মেথডটি একাধিক ডকুমেন্ট গ্রহণ করে এবং তাদের একযোগে ইনসার্ট করে। প্রতিটি ডকুমেন্ট একটি _id থাকতে হবে, যেটি তাৎক্ষণিকভাবে ডকুমেন্টটির ইউনিক আইডেন্টিফায়ার হিসেবে কাজ করবে।
Bulk Update (Multiple Documents Update)
আপনি যদি একাধিক ডকুমেন্ট আপডেট করতে চান, তবে আপনি bulkDocs() মেথডের মাধ্যমে তাদের নতুন ডেটা সহ আপডেট করতে পারেন। তবে, আপনাকে অবশ্যই ডকুমেন্টগুলোর _rev ফিল্ডটি সঠিকভাবে প্রদান করতে হবে, যা ডকুমেন্টটির সংস্করণ নির্ধারণ করে।
উদাহরণ:
const updatedDocs = [
{ _id: 'doc1', _rev: '1-234', title: 'Updated Document 1', content: 'This is updated document 1.' },
{ _id: 'doc2', _rev: '2-456', title: 'Updated Document 2', content: 'This is updated document 2.' }
];
db.bulkDocs(updatedDocs).then(result => {
console.log('Documents updated:', result);
}).catch(err => {
console.error('Error updating documents:', err);
});
এখানে, _rev ফিল্ডটি গুরুত্বপূর্ণ কারণ এটি নির্ধারণ করে যে আপনি কোন সংস্করণের ডকুমেন্ট আপডেট করছেন। _rev ছাড়া আপডেট করা হলে কনফ্লিক্ট বা ভুল আপডেট হতে পারে।
Bulk Delete (Multiple Documents Delete)
একাধিক ডকুমেন্ট ডিলিট করার জন্য, bulkDocs() মেথড ব্যবহার করতে হবে যেখানে ডকুমেন্টের _rev এবং _id নির্দিষ্ট করে তাদের ডিলিট করা হয়।
উদাহরণ:
const docsToDelete = [
{ _id: 'doc1', _rev: '1-234', _deleted: true },
{ _id: 'doc2', _rev: '2-456', _deleted: true }
];
db.bulkDocs(docsToDelete).then(result => {
console.log('Documents deleted:', result);
}).catch(err => {
console.error('Error deleting documents:', err);
});
এখানে, ডকুমেন্টগুলোর _deleted ফিল্ডকে true সেট করে ডকুমেন্টগুলো মুছে ফেলা হয়। এর ফলে ডকুমেন্টগুলো ডাটাবেস থেকে চিরতরে মুছে যাবে।
Bulk Operations এর সুবিধা
- পারফরম্যান্স উন্নতি: একাধিক ডকুমেন্ট অপারেশন একযোগে করা যায়, ফলে এক এক করে অপারেশন করা থেকে অনেক দ্রুত এবং কার্যকর হয়।
- নেটওয়ার্ক ট্রাফিক কমানো: একাধিক অপারেশন একবারে প্রেরণ করা হয়, ফলে সার্ভারের সাথে কম নেটওয়ার্ক যোগাযোগ হয়।
- ট্রানজেকশনাল প্রক্রিয়া: একাধিক ডকুমেন্টের আপডেট একসাথে করা গেলে, ডকুমেন্টগুলোর মধ্যে কোনো একটি সমস্যা হলে পুরো অপারেশনটি ফেরত দেওয়া যায়।
এই ছিল PouchDB এর Bulk Operations এর ব্যাসিক ধারণা। এটি আপনার ডাটাবেস পরিচালনা আরো সহজ এবং কার্যকর করতে সাহায্য করবে।
Read more