Cross-collection Queries ArangoDB-তে একাধিক Collection থেকে ডেটা একত্রে অনুসন্ধান, বিশ্লেষণ, এবং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়। এটি ডকুমেন্ট বা গ্রাফ ডেটার মধ্যকার সম্পর্ক বিশ্লেষণ করার জন্য একটি শক্তিশালী পদ্ধতি।
Cross-collection Queries এর মূল ধারণা
ArangoDB-তে একাধিক Collection এর ডেটা যুক্ত করার জন্য AQL (ArangoDB Query Language) ব্যবহার করা হয়। এটি JOIN, FILTER, এবং অন্যান্য শর্তাবলী প্রয়োগের মাধ্যমে ডেটা পরিচালনা করে।
মূল উপাদান:
- FOR: একাধিক Collection এর উপর লুপ চালাতে ব্যবহৃত হয়।
- FILTER: Collection এর মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়।
- RETURN: চূড়ান্ত রেজাল্ট প্রদান করে।
Cross-collection Query এর উদাহরণ
1. দুটি Collection এর ডেটা যুক্ত করা
FOR user IN users
FOR order IN orders
FILTER user._key == order.user_id
RETURN { user: user.name, order: order.product }
উপরের কোয়েরি users এবং orders Collection এর ডেটা একত্রিত করে।
2. Nested Queries ব্যবহার
FOR user IN users
LET orders = (
FOR order IN orders
FILTER order.user_id == user._key
RETURN order
)
RETURN { user: user.name, orders: orders }
এখানে LET ব্যবহার করে Nested Query করা হয়েছে, যেখানে প্রতিটি ব্যবহারকারীর জন্য তাদের অর্ডার লিস্ট যুক্ত করা হয়েছে।
3. Filter সহ Cross-collection Query
FOR user IN users
FOR order IN orders
FILTER user._key == order.user_id AND order.status == "completed"
RETURN { user: user.name, order: order.product }
এটি users এবং orders Collection এর মধ্যে ডেটা যুক্ত করে যেখানে order এর স্ট্যাটাস completed।
4. Aggregation সহ Cross-collection Query
FOR user IN users
FOR order IN orders
FILTER user._key == order.user_id
COLLECT username = user.name WITH COUNT INTO total_orders
RETURN { username, total_orders }
এটি প্রতিটি ব্যবহারকারীর জন্য মোট অর্ডারের সংখ্যা রিটার্ন করে।
Graph Context এ Cross-collection Queries
গ্রাফ ডেটার ক্ষেত্রে Cross-collection Queries Vertex এবং Edge Collection এর মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়।
1. Vertex এবং Edge থেকে ডেটা রিট্রিভ করা
FOR vertex, edge IN 1..1
OUTBOUND "users/user1" friendships
RETURN { friend: vertex.name, relation: edge.type }
এটি friendships Edge Collection এবং users Vertex Collection থেকে ডেটা রিটার্ন করবে।
2. গ্রাফ Traversal এর সাথে Cross-collection Query
FOR vertex IN 1..2
OUTBOUND "users/user1" friendships
FOR post IN posts
FILTER post.user_id == vertex._key
RETURN { friend: vertex.name, post: post.title }
এটি user1 এর বন্ধু এবং তাদের তৈরি করা পোস্ট রিটার্ন করবে।
Performance Optimization
Cross-collection Queries পরিচালনার সময় Index ব্যবহার করা গুরুত্বপূর্ণ। এটি পারফরম্যান্স বৃদ্ধি করে।
Index ব্যবহার নিশ্চিত করুন:
- Primary Index: প্রতিটি ডকুমেন্ট
_keyদ্বারা দ্রুত অ্যাক্সেসের জন্য। - Secondary Index: যেসব ক্ষেত্রে ফিল্টার ব্যবহার করা হয়।
- Edge Index: গ্রাফ ডেটার মধ্যে সম্পর্ক দ্রুত অনুসন্ধানের জন্য।
Limit এবং Pagination প্রয়োগ
Pagination এর মাধ্যমে Cross-collection Queries এর ফলাফল সীমিত করা যায়।
FOR user IN users
FOR order IN orders
FILTER user._key == order.user_id
LIMIT 0, 10
RETURN { user: user.name, order: order.product }
এটি প্রথম ১০টি ফলাফল রিটার্ন করবে।
সারাংশ
Cross-collection Queries ArangoDB তে বিভিন্ন Collection এর ডেটা সংযুক্ত এবং বিশ্লেষণ করার একটি কার্যকর পদ্ধতি। এটি Nested Queries, Aggregation, এবং Graph Context এর মতো জটিল অপারেশন সহজ করে। ডেটা সম্পর্ক বিশ্লেষণ এবং পারফরম্যান্স অপ্টিমাইজেশনের জন্য Index ব্যবহারের উপর গুরুত্ব দিতে হবে।