ArangoDB-তে কোয়েরি অপ্টিমাইজেশন একটি গুরুত্বপূর্ণ বিষয় যা ডেটাবেসের কার্যক্ষমতা এবং দক্ষতা বাড়ায়। Query Optimization Techniques ব্যবহার করে দ্রুত এবং কার্যকরভাবে ডেটা প্রসেস করা যায়, যা বড় ডেটাসেটের ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ।
ArangoDB-তে Explain Command ব্যবহার করে কোয়েরির Execution Plan বিশ্লেষণ করা যায়।
EXPLAIN FOR doc IN collection FILTER doc.value == "example" RETURN doc
Execution Plan দেখার সুবিধা:
ইনডেক্স কোয়েরির কার্যক্ষমতা বাড়ায়। Primary, Secondary, এবং Geo Index ব্যবহার করুন।
উদাহরণ:
FOR doc IN collection
FILTER doc.age == 25
RETURN doc
উপরের কোয়েরিতে age
ফিল্ডে Secondary Index ব্যবহার করলে এটি দ্রুত চলবে।
ফিল্টারগুলি যতটা সম্ভব সরল রাখুন এবং ইনডেক্স ফিল্ডে ফিল্টার প্রয়োগ করুন।
উদাহরণ (অপ্টিমাইজড):
FOR doc IN collection
FILTER doc.status == "active" && doc.age > 20
RETURN doc
বিরত থাকুন:
OR
অপারেটর বেশি ব্যবহার করা।কোয়েরি এমনভাবে ডিজাইন করুন যাতে প্রয়োজনীয় ফিল্ডগুলিই ফেরত আসে।
উদাহরণ (অপ্টিমাইজড):
FOR doc IN collection
FILTER doc.status == "active"
RETURN { name: doc.name, age: doc.age }
ভুল পদ্ধতি:
FOR doc IN collection
FILTER doc.status == "active"
RETURN doc
প্রয়োজনের অতিরিক্ত ডেটা ফেরত আনা সময় ও মেমোরি নষ্ট করে।
ArangoDB-তে Nested Loop Join ব্যবহার করা হয়। এ কারণে ছোট ফিল্টার এবং ইনডেক্স ব্যবহার করে JOIN অপ্টিমাইজ করা প্রয়োজন।
উদাহরণ:
FOR order IN orders
FOR customer IN customers
FILTER order.customer_id == customer._key
RETURN { order, customer }
এতে orders এবং customers-এর ইনডেক্স ব্যবহার নিশ্চিত করুন।
ডেটা সীমিত করতে LIMIT ব্যবহার করুন, বিশেষত বড় ডেটাসেটে।
উদাহরণ:
FOR doc IN collection
SORT doc.date DESC
LIMIT 10
RETURN doc
ArangoDB কোয়েরি ফলাফল ক্যাশ করে রাখতে পারে। বড় ডেটাসেটের ক্ষেত্রে এটি কার্যক্ষমতা বাড়ায়।
ক্যাশিং চালু করতে:
db._queryCacheProperties({ mode: "on" });
Aggregate ফাংশন যেমন SUM, COUNT, AVERAGE ইত্যাদি বড় ডেটাসেটে ধীর হতে পারে। উপযুক্ত ফিল্টার ব্যবহার করে এগুলো অপ্টিমাইজ করুন।
উদাহরণ:
FOR order IN orders
FILTER order.status == "completed"
COLLECT AGGREGATE totalSales = SUM(order.amount)
RETURN totalSales
Nested Subqueries বড় ডেটাসেটে ধীর হতে পারে। Subqueries-কে Flatten করার চেষ্টা করুন।
অপ্টিমাইজড উদাহরণ:
FOR doc IN collection
LET relatedData = (FOR subDoc IN otherCollection FILTER subDoc.ref == doc._key RETURN subDoc)
RETURN { doc, relatedData }
Query Performance বোঝার জন্য PROFILE কমান্ড ব্যবহার করুন:
PROFILE FOR doc IN collection FILTER doc.value == "example" RETURN doc
PROFILE-এর সাহায্যে:
ArangoDB-তে কোয়েরি অপ্টিমাইজ করার মাধ্যমে কার্যক্ষমতা বাড়ানো সম্ভব। Execution Plan, সঠিক ইনডেক্স ব্যবহার, এবং Subquery অপ্টিমাইজেশন গুরুত্বপূর্ণ। এগুলোর সাহায্যে বড় ডেটাবেসেও দ্রুত এবং কার্যকর কোয়েরি সম্পাদন করা যায়।
common.read_more