ArangoDB এবং PouchDB, দুটি NoSQL ডেটাবেসের মধ্যে Mango Query এবং Indexed Query এর মাধ্যমে আপনি ডেটার উপর অনুসন্ধান (queries) চালাতে পারেন। Mango Query PouchDB এবং CouchDB এর একটি শক্তিশালী কুয়েরি ইঞ্জিন যা SQL-এর মতো কাজ করে, তবে NoSQL ডেটাবেসের জন্য উপযুক্ত। আর Indexed Query এর মাধ্যমে ডেটা দ্রুত অনুসন্ধান এবং ফিল্টার করা সম্ভব হয়।
এখানে PouchDB ব্যবহার করে Indexed Query এবং Mango Query এর বাস্তব উদাহরণ দেখানো হয়েছে।
১. Indexed Query
Indexed Query হল একটি অনুসন্ধান পদ্ধতি যেখানে একটি ইনডেক্স তৈরি করে নির্দিষ্ট ফিল্ডে ডেটা অনুসন্ধান করা হয়। এটি পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, বিশেষত যখন ডাটাবেসে বড় পরিমাণে ডেটা থাকে।
Indexed Query উদাহরণ:
ধরা যাক, আপনি age এবং city ফিল্ডের ভিত্তিতে ডেটা অনুসন্ধান করতে চান। এর জন্য প্রথমে আপনাকে ইনডেক্স তৈরি করতে হবে।
Step 1: ইনডেক্স তৈরি
const db = new PouchDB('my_database');
// age এবং city ফিল্ডে ইনডেক্স তৈরি করা
db.createIndex({
index: {
fields: ['age', 'city']
}
}).then(() => {
console.log('Index created successfully');
}).catch(err => {
console.error('Error creating index:', err);
});
এখানে, createIndex() ফাংশন ব্যবহার করে আমরা age এবং city ফিল্ডের উপর ইনডেক্স তৈরি করেছি।
Step 2: Indexed Query ব্যবহার করা
db.find({
selector: {
age: { $gte: 20 },
city: { $eq: 'Dhaka' }
},
fields: ['_id', 'name', 'age', 'city'],
sort: [{ age: 'desc' }]
}).then(result => {
console.log('Query result:', result.docs);
}).catch(err => {
console.error('Error executing query:', err);
});
এখানে:
selectorব্যবহার করে আমরাageএবংcityফিল্ডের উপর শর্ত দিয়েছি।sortঅপশন ব্যবহার করেageফিল্ডের ভিত্তিতে ফলাফল সাজানো হয়েছে।
এইভাবে Indexed Query ব্যবহার করে দ্রুত এবং কার্যকরীভাবে ডেটা অনুসন্ধান করা সম্ভব।
২. Mango Query
Mango Query হল PouchDB এবং CouchDB এর একটি ডেটাবেস কুয়েরি ইঞ্জিন, যা JSON ফরম্যাটে কুয়েরি স্ট্রিং তৈরি করে এবং SQL-এর মতো স্টাইলের কুয়েরি অপারেশন সম্পাদন করতে সক্ষম।
Mango Query উদাহরণ:
ধরা যাক, আমাদের একটি ডেটাবেস আছে যেখানে বিভিন্ন ব্যবহারকারীর ডেটা আছে এবং আমরা age এবং name ফিল্ডের ভিত্তিতে অনুসন্ধান করতে চাই।
Step 1: Mango Query ব্যবহার করা
db.find({
selector: {
age: { $gte: 18 },
name: { $eq: 'John Doe' }
},
fields: ['_id', 'name', 'age'],
sort: [{ age: 'asc' }]
}).then(result => {
console.log('Mango query result:', result.docs);
}).catch(err => {
console.error('Error executing Mango query:', err);
});
এখানে:
selectorএর মাধ্যমে আমরাageএবংnameফিল্ডের শর্ত দিয়ে ডেটা খুঁজে বের করেছি।fieldsব্যবহার করে আমরা কেবলমাত্র_id,name, এবংageফিল্ড দেখতে চেয়েছি।sortঅপশন দিয়ে ফলাফলগুলোageফিল্ড অনুযায়ী সজ্জিত করা হয়েছে।
Step 2: MongoDB এর মতো ব্যবহার
Mango Query ব্যবহার করে MongoDB এর মতো ডেটা অনুসন্ধান করা সম্ভব। এখানে $gte (Greater Than or Equal) এবং $eq (Equal) অপারেটর ব্যবহার করা হয়েছে। Mango Query এর মাধ্যমে JSON অবজেক্টের শর্ত অনুসারে ডেটা খোঁজা হয়, যা MongoDB এর স্টাইলের মতো।
৩. Mango Query এর আরো জটিল উদাহরণ
ধরা যাক, আপনি age এবং name ফিল্ডের উপর আরো জটিল শর্ত ব্যবহার করতে চান:
db.find({
selector: {
age: { $gte: 20, $lte: 40 }, // বয়স ২০ থেকে ৪০ এর মধ্যে
name: { $regex: 'John' } // নামের মধ্যে "John" থাকা
},
fields: ['_id', 'name', 'age'],
sort: [{ name: 'asc' }]
}).then(result => {
console.log('Complex Mango query result:', result.docs);
}).catch(err => {
console.error('Error executing Mango query:', err);
});
এখানে:
$gteএবং$lteব্যবহার করেageফিল্ডের জন্য রেঞ্জ নির্ধারণ করা হয়েছে।$regexব্যবহার করেnameফিল্ডের মধ্যেJohnশব্দটি থাকা ডেটা অনুসন্ধান করা হয়েছে।
সারাংশ
- Indexed Query: এটি ইনডেক্স তৈরি করে নির্দিষ্ট ফিল্ডে ডেটা দ্রুত অনুসন্ধান করতে সাহায্য করে। এটি পারফরম্যান্স বৃদ্ধির জন্য আদর্শ।
- Mango Query: এটি JSON অবজেক্টের মতো শর্ত দিয়ে কুয়েরি পরিচালনা করতে সক্ষম। Mango Query PouchDB-তে SQL-স্টাইল অনুসন্ধান এবং জটিল শর্ত দিয়ে ডেটা খুঁজে বের করতে সাহায্য করে।
PouchDB তে Indexed Query এবং Mango Query ব্যবহার করে আপনি ডেটা অনুসন্ধানকে আরও দ্রুত এবং কার্যকরী করতে পারবেন।
Read more