AQL (ArangoDB Query Language)-এ Joins ব্যবহার করা হয় ডকুমেন্ট বা কালেকশন থেকে সম্পর্কিত ডেটা একত্রে আনার জন্য। এটি ডাটাবেসের বিভিন্ন কালেকশনের মধ্যে সম্পর্ক তৈরি এবং ডেটা বিশ্লেষণ করার জন্য খুবই কার্যকর।
AQL-এ Joins অন্যান্য ডাটাবেসের মতো ফর্মাল সিস্টেমে কাজ না করলেও, কোয়েরি স্ট্রাকচারে FOR এবং FILTER এর মাধ্যমে কার্যকরভাবে Joins সম্পাদন করা যায়।
{ "_key": "cust1", "name": "Rahim" }
{ "_key": "cust2", "name": "Karim" }
{ "_key": "order1", "customer_id": "cust1", "product": "Laptop" }
{ "_key": "order2", "customer_id": "cust2", "product": "Mobile" }
{ "_key": "order3", "customer_id": "cust1", "product": "Tablet" }
FOR c IN Customers
FOR o IN Orders
FILTER c._key == o.customer_id
RETURN {
customer_name: c.name,
product: o.product
}
[
{ "customer_name": "Rahim", "product": "Laptop" },
{ "customer_name": "Rahim", "product": "Tablet" },
{ "customer_name": "Karim", "product": "Mobile" }
]
এই কোয়েরি Customers
এবং Orders
এর মধ্যে customer_id
এর ভিত্তিতে সম্পর্ক তৈরি করে।
যদি কোনো গ্রাহকের অর্ডার না থাকে, তাহলে তাকে এখনও ফলাফলে অন্তর্ভুক্ত করা হবে:
FOR c IN Customers
LET orders = (
FOR o IN Orders
FILTER c._key == o.customer_id
RETURN o.product
)
RETURN {
customer_name: c.name,
products: orders
}
[
{ "customer_name": "Rahim", "products": ["Laptop", "Tablet"] },
{ "customer_name": "Karim", "products": ["Mobile"] }
]
যদি একাধিক কালেকশনের মধ্যে Joins করতে চান:
FOR c IN Customers
FOR o IN Orders
FOR p IN Products
FILTER c._key == o.customer_id AND o.product == p.product_name
RETURN {
customer: c.name,
product: p.product_name,
price: p.price
}
AQL-এ Joins ডাটাবেসের বিভিন্ন কালেকশনের সম্পর্কিত ডেটা একত্রে বিশ্লেষণ করার জন্য অত্যন্ত কার্যকর। ডেভেলপাররা সহজেই FOR এবং FILTER ব্যবহার করে Inner এবং Left Join সম্পাদন করতে পারেন। তবে বড় ডেটাসেটে পারফরম্যান্স নিশ্চিত করতে সঠিক Indexing অপরিহার্য।