DocumentDB বা MongoDB-তে ডেটা অনুসন্ধান এবং প্রসেসিংয়ের সময় পারফরম্যান্স অপ্টিমাইজ করা অত্যন্ত গুরুত্বপূর্ণ। ডেটাবেসের স্কেল এবং জটিলতার কারণে সঠিক কৌশল ব্যবহার করলে আপনি দ্রুত এবং কার্যকরীভাবে ডেটা অনুসন্ধান করতে পারবেন। নিচে কিছু মূল কৌশল দেওয়া হলো, যা Query Performance Optimization এ সাহায্য করবে।
ডেটাবেসে ইনডেক্স তৈরি করা একটি অত্যন্ত গুরুত্বপূর্ণ পারফরম্যান্স অপ্টিমাইজেশন কৌশল। ইনডেক্স Query এর সময় গতি বাড়াতে সাহায্য করে, বিশেষ করে যখন আপনি বড় ডেটাবেসে অনুসন্ধান করছেন।
age
ফিল্ডের ওপর অনুসন্ধান করছেন, তাহলে age
ফিল্ডে ইনডেক্স তৈরি করা উচিত।name
এবং age
ফিল্ডের উপর একটি compound index তৈরি করলে দুটি ফিল্ডের ভিত্তিতে অনুসন্ধান আরও দ্রুত হবে।MongoDB এবং DocumentDB উভয়েই explain()
ফাংশন সমর্থন করে, যা কুয়েরি অপটিমাইজারের পরিকল্পনা দেখায়। এটি আপনাকে আপনার কুয়েরি অপটিমাইজ করতে সাহায্য করতে পারে।
explain(): explain()
ফাংশন ব্যবহার করে আপনি জানবেন যে ডেটাবেস কিভাবে কুয়েরি এক্সিকিউট করছে, এটি কোন ইনডেক্স ব্যবহার করছে, এবং কতটুকু সময় নিচ্ছে। এর মাধ্যমে আপনি খুঁজে পেতে পারেন, কোথায় অপ্টিমাইজেশন প্রয়োজন।
উদাহরণ:
db.collection.find({ age: 25 }).explain("executionStats");
কুয়েরি করার সময় পুরো ডকুমেন্টটি ফিরিয়ে আনার পরিবর্তে, শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো ফেরত আনার জন্য projection ব্যবহার করুন। এতে ডেটার আকার ছোট হয়ে যাবে এবং পারফরম্যান্স উন্নত হবে।
Projection: প্রয়োজনীয় ফিল্ডগুলিই কুয়েরি রেজাল্ট হিসেবে পাবেন, যেমন name
এবং age
যদি আপনার প্রয়োজন হয়, তবে শুধুমাত্র সেই দুটি ফিল্ড নির্বাচন করুন।
উদাহরণ:
db.collection.find({ age: 25 }, { name: 1, age: 1 });
কখনও কখনও আপনার কুয়েরির রেজাল্টের সাইজ সীমিত করতে limit এবং skip ব্যবহার করা যেতে পারে। এটি অ্যাপ্লিকেশনে ডেটা লোডের সময়কে কমাতে সাহায্য করে।
limit()
ব্যবহার করতে পারেন।Skip: যদি আপনি পেজিনেশন ব্যবহার করেন, তবে আপনি skip()
ফাংশন ব্যবহার করতে পারেন।
উদাহরণ:
db.collection.find({ age: { $gte: 20 } }).limit(10).skip(20);
MongoDB এবং DocumentDB-তে aggregation pipelines ব্যবহার করা হয়, যখন আপনাকে আরও জটিল ডেটা প্রসেসিং বা ফিল্টারিং করতে হয়। কিন্তু যদি সঠিকভাবে অপটিমাইজ না করা হয়, তাহলে এটি পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
$match
ব্যবহার করুন যাতে প্রথমেই ডেটা ফিল্টার করা হয়, তারপরে অন্য অপারেশনগুলি করা হয়।$limit: যখন সম্ভব, limit()
ব্যবহার করুন।
উদাহরণ:
db.collection.aggregate([
{ $match: { age: { $gte: 20 } } },
{ $project: { name: 1, age: 1 } },
{ $limit: 10 }
]);
যখন আপনার ডেটাবেসটি অত্যন্ত বড় হয়ে যায় এবং একক ইনস্ট্যান্সে প্রসেস করা সম্ভব না হয়, তখন sharding ব্যবহৃত হতে পারে। Sharding ডেটাবেসকে বিভিন্ন অংশে ভাগ করে দেয়, যা horizontal scaling-এর মাধ্যমে পারফরম্যান্স উন্নত করে।
আপনি যদি ডেটাবেসে বড় ডকুমেন্ট আপডেট বা মুছতে চান, তাহলে শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো আপডেট বা মুছুন। একাধিক ফিল্ডের পরিবর্তে একটি ফিল্ড আপডেট করা পারফরম্যান্সে সাহায্য করতে পারে।
DocumentDB বা MongoDB-তে slow query logging সক্ষম করলে আপনি বুঝতে পারবেন কোন কুয়েরি বেশী সময় নিচ্ছে। এই কুয়েরিগুলিকে অপ্টিমাইজ করার মাধ্যমে পারফরম্যান্স বৃদ্ধি করা সম্ভব।
Query performance optimization মূলত ডেটাবেসে সঠিক ইনডেক্স, কুয়েরি কাঠামো, ডেটা প্রসেসিং কৌশল এবং শার্ডিং ব্যবহার করার ওপর নির্ভর করে। সঠিকভাবে ইনডেক্সিং, projection, limit, এবং aggregation অপ্টিমাইজেশন ব্যবহার করলে আপনি ডেটাবেসের পারফরম্যান্স উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারবেন।
common.read_more