AQL (ArangoDB Query Language)-এ Joins ব্যবহার করা হয় ডকুমেন্ট বা কালেকশন থেকে সম্পর্কিত ডেটা একত্রে আনার জন্য। এটি ডাটাবেসের বিভিন্ন কালেকশনের মধ্যে সম্পর্ক তৈরি এবং ডেটা বিশ্লেষণ করার জন্য খুবই কার্যকর।
AQL-এ Joins অন্যান্য ডাটাবেসের মতো ফর্মাল সিস্টেমে কাজ না করলেও, কোয়েরি স্ট্রাকচারে FOR এবং FILTER এর মাধ্যমে কার্যকরভাবে Joins সম্পাদন করা যায়।
AQL-এ Joins এর প্রকারভেদ
- Inner Join: দুই কালেকশনের মধ্যে সম্পর্কিত ডেটা বের করে।
- Left Join (বা Outer Join): একটি কালেকশনের সব ডেটা এবং অপরটির মিলিত ডেটা বের করে।
উদাহরণ: AQL-এ Joins
১. দুটি কালেকশন তৈরি করা
- Customers কালেকশন:
{ "_key": "cust1", "name": "Rahim" }
{ "_key": "cust2", "name": "Karim" }
- Orders কালেকশন:
{ "_key": "order1", "customer_id": "cust1", "product": "Laptop" }
{ "_key": "order2", "customer_id": "cust2", "product": "Mobile" }
{ "_key": "order3", "customer_id": "cust1", "product": "Tablet" }
২. Inner Join উদাহরণ
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 এর ভিত্তিতে সম্পর্ক তৈরি করে।
৩. Left Join উদাহরণ
যদি কোনো গ্রাহকের অর্ডার না থাকে, তাহলে তাকে এখনও ফলাফলে অন্তর্ভুক্ত করা হবে:
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"] }
]
৪. Multiple Joins উদাহরণ
যদি একাধিক কালেকশনের মধ্যে 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-এর সুবিধা
- সহজ এবং কার্যকর কোয়েরি স্ট্রাকচার।
- বিভিন্ন কালেকশনের ডেটা ম্যানিপুলেশন।
- Flexible Filtering: সম্পর্কিত ডেটার নির্দিষ্ট অংশ বের করার জন্য।
Joins-এর সীমাবদ্ধতা
- AQL-এ Joins খুব বড় ডেটাসেটের ক্ষেত্রে কম কার্যকর হতে পারে।
- বড় Join অপারেশন চালানোর সময় পারফরম্যান্স অপ্টিমাইজ করতে Indexing ব্যবহার করা উচিত।
সারাংশ
AQL-এ Joins ডাটাবেসের বিভিন্ন কালেকশনের সম্পর্কিত ডেটা একত্রে বিশ্লেষণ করার জন্য অত্যন্ত কার্যকর। ডেভেলপাররা সহজেই FOR এবং FILTER ব্যবহার করে Inner এবং Left Join সম্পাদন করতে পারেন। তবে বড় ডেটাসেটে পারফরম্যান্স নিশ্চিত করতে সঠিক Indexing অপরিহার্য।