ArangoDB-তে সার্চ অপটিমাইজেশন হল ডেটা দ্রুত খুঁজে বের করার একটি প্রক্রিয়া, বিশেষত যখন আপনি বড় ডেটাসেট এবং জটিল কোয়েরি নিয়ে কাজ করছেন। ডেটা খুঁজে পাওয়ার গতি বাড়ানোর জন্য আপনি বিভিন্ন টেকনিক ব্যবহার করতে পারেন, যেমন ইনডেক্সিং, ফুল-টেক্সট সার্চ, জিও-স্প্যাটিয়াল সার্চ, এবং কোয়েরি অপটিমাইজেশন।
নিচে ArangoDB-তে সার্চ অপটিমাইজেশনের কিছু প্রধান টেকনিকের বিস্তারিত আলোচনা করা হলো:
ইনডেক্স হল ডেটাবেসে দ্রুত সার্চ করার একটি গুরুত্বপূর্ণ উপাদান। ArangoDB বিভিন্ন ধরনের ইনডেক্স সমর্থন করে, যা সার্চের গতি দ্রুত করতে সাহায্য করে।
_key
এবং _id
ফিল্ডে তৈরি হয়। এটি ডেটা দ্রুত খুঁজে বের করতে ব্যবহৃত হয়।কোনো ফিল্ডে Persistent Index তৈরি করতে:
CREATE INDEX ON myCollection(name, age) TYPE persistent
এই ইনডেক্সটি name
এবং age
ফিল্ডের উপর কাজ করবে এবং ঐ ফিল্ডগুলোর উপর করা কোয়েরি দ্রুত করবে।
ArangoDB-তে Fulltext Index ব্যবহার করে টেক্সট ডেটার মধ্যে শব্দ খোঁজা খুবই কার্যকরী। এই ইনডেক্সটি বিশেষত বড় টেক্সট ডেটাবেসে সার্চের ক্ষেত্রে দ্রুত ফলাফল দেয়।
ফুল-টেক্সট ইনডেক্স একটি টেক্সট ফিল্ডে তৈরি করতে:
CREATE INDEX ON myCollection(textField) TYPE fulltext
ফুল-টেক্সট ইনডেক্সের মাধ্যমে কোয়েরি করা:
FOR doc IN myCollection
SEARCH ANALYZER(doc.textField == 'keyword', 'text_en')
RETURN doc
এই কোয়েরিটি textField
ফিল্ডে "keyword" খুঁজবে, যেখানে 'text_en'
অ্যানালাইজার ব্যবহৃত হচ্ছে।
জিওগ্রাফিক্যাল ডেটার জন্য Geo Index ব্যবহার করা হয়, যা জিও-স্প্যাটিয়াল কোয়েরি দ্রুত করতে সাহায্য করে। আপনি এটি ব্যবহার করে জায়গার নির্দিষ্ট অঞ্চলে বা একটি পয়েন্টের কাছাকাছি ডেটা খুঁজে বের করতে পারেন।
Latitude এবং Longitude ডেটার জন্য Geo Index তৈরি:
CREATE INDEX ON myCollection(geoField) TYPE geo
এখানে geoField
একটি অ্যারে হতে হবে, যেখানে প্রথম উপাদান Latitude এবং দ্বিতীয় উপাদান Longitude।
নির্দিষ্ট একটি পয়েন্টের কাছাকাছি ডেটা খুঁজে বের করার জন্য:
FOR doc IN myCollection
FILTER GEO_DISTANCE(doc.geoField, { "lat": 40.7128, "lon": -74.0060 }) < 5000
RETURN doc
এই কোয়েরি ৫ কিলোমিটারের মধ্যে সমস্ত ডকুমেন্ট খুঁজে বের করবে, যেগুলোর জিওফিল্ডের সাথে 40.7128, -74.0060 কোঅর্ডিনেট রয়েছে।
সার্চ কোয়েরির ডিজাইন করা আরও কার্যকরী হতে পারে, যদি কিছু অপটিমাইজেশন পদ্ধতি ব্যবহার করা হয়।
কোয়েরির ফলাফল সীমিত করার জন্য LIMIT
ব্যবহার করুন, যা পারফরম্যান্স উন্নত করতে সাহায্য করবে:
FOR doc IN myCollection
LIMIT 10
RETURN doc
এটি প্রথম ১০টি ফলাফল রিটার্ন করবে।
যতটা সম্ভব সম্পূর্ণ কোলেকশন স্ক্যান এড়িয়ে চলুন। ইনডেক্স ব্যবহার নিশ্চিত করুন যাতে কোয়েরি ডেটার একটি ছোট অংশ স্ক্যান করে।
COLLECT
ব্যবহার করে অ্যাগ্রিগেশনএকাধিক কোয়েরি করার বদলে COLLECT
ব্যবহার করে ডেটা গ্রুপ এবং অ্যাগ্রিগেট করা যায়:
FOR doc IN myCollection
COLLECT category = doc.category WITH COUNT INTO count
RETURN { "category": category, "count": count }
এটি category
অনুসারে গ্রুপ করে, এবং প্রতি গ্রুপের মধ্যে কতোটি ডকুমেন্ট রয়েছে তা গণনা করবে।
একাধিক কোলেকশন জোইন করার জন্য INTO
ব্যবহার করুন, যা মধ্যবর্তী ফলাফলগুলো সঞ্চয় করে এবং জোইন অপারেশনকে আরও দ্রুত করতে সাহায্য করবে।
FOR order IN orders
LET customer = DOCUMENT(customers, order.customer_id)
COLLECT region = customer.region INTO group
RETURN { "region": region, "total_sales": SUM(group[*].order_amount) }
এটি region
অনুযায়ী গ্রুপ করে এবং প্রতিটি গ্রুপের মোট বিক্রয় গণনা করে।
ArangoDB কোয়েরি অপটিমাইজেশনের জন্য EXPLAIN
কমান্ড প্রদান করে, যা আপনাকে কোয়েরি কীভাবে কার্যকর হবে তা বিশ্লেষণ করতে সাহায্য করে। এটি আপনাকে ইনডেক্স ব্যবহার হচ্ছে কিনা এবং কোয়েরি অপটিমাইজড কিনা তা চেক করতে দেয়।
EXPLAIN FOR doc IN myCollection
FILTER doc.status == 'active'
RETURN doc
এটি কোয়েরির কার্যকারিতা এবং অপটিমাইজেশন সম্পর্কে তথ্য প্রদান করবে।
ArangoDB-তে query result caching সুবিধা রয়েছে, যা একাধিক বার চলা একই কোয়েরির ফলাফল ক্যাশ করে রাখে। যদি কোনো কোয়েরি পুনরায় একই প্যারামিটারসহ চলে, তবে ArangoDB ক্যাশ থেকে ফলাফল ফিরিয়ে দেয়।
ArangoDB-তে ক্যাশিং সক্ষম করতে:
arangod --query.cache true
এটি পুনরায় একই কোয়েরির ফলাফল দ্রুত রিটার্ন করতে সহায়তা করবে।
ArangoDB-তে সার্চ অপটিমাইজেশনের জন্য অনেক শক্তিশালী টেকনিক রয়েছে, যেমন ইনডেক্সিং, ফুল-টেক্সট সার্চ, জিও-স্প্যাটিয়াল সার্চ, এবং কোয়েরি অপটিমাইজেশন। সঠিক ইনডেক্স এবং কোয়েরি ডিজাইন ব্যবহার করে আপনি ডেটার সার্চ গতি অনেকটাই বাড়াতে পারবেন। নিয়মিত পারফরম্যান্স মনিটরিং এবং কনফিগারেশন অপটিমাইজেশন আপনাকে উচ্চ পারফরম্যান্স এবং স্কেলেবল সার্চ সিস্টেম তৈরি করতে সহায়তা করবে।
common.read_more