OrientDB একটি মাল্টিমোডাল ডেটাবেস যা SQL এর মতো কুয়েরি ভাষা ব্যবহার করে ডেটা অনুসন্ধান করতে সহায়তা করে। OrientDB-তে JOIN, LET এবং NESTED Queries খুবই গুরুত্বপূর্ণ ফিচার, যা ডেটা সম্পর্কিত বিভিন্ন জটিল অপারেশন সম্পাদন করতে ব্যবহৃত হয়। এই কুয়েরি গুলি আপনাকে বিভিন্ন টেবিল বা ডকুমেন্টের মধ্যে সম্পর্ক স্থাপন, বিভিন্ন অস্থায়ী ভেরিয়েবল তৈরি এবং একাধিক সাবকুয়েরি চালানোর সুযোগ দেয়।
এখানে, JOIN, LET, এবং NESTED Queries নিয়ে বিস্তারিত আলোচনা করা হলো:
1. JOIN Query
OrientDB-তে JOIN একটি সাধারণ SQL কুয়েরি অপারেশন, যা একাধিক টেবিল বা ডকুমেন্টের মধ্যে সম্পর্কযুক্ত তথ্য একত্রিত করতে ব্যবহৃত হয়। আপনি বিভিন্ন ক্লাস বা ডকুমেন্টের মধ্যে সম্পর্ক যুক্ত করে একসাথে ডেটা ফিরিয়ে আনতে JOIN ব্যবহার করতে পারেন।
উদাহরণ: JOIN Query ব্যবহার করে সম্পর্কিত ডেটা পাওয়া
ধরা যাক, Person এবং Car নামক দুটি ক্লাস আছে এবং আপনি প্রতিটি ব্যক্তির সঙ্গে সম্পর্কিত গাড়ির তথ্য পেতে চান। যদি Person ক্লাসে গাড়ির রেফারেন্স থাকে, তাহলে নিম্নলিখিত কুয়েরি ব্যবহার করা হবে:
SELECT person.name, car.model
FROM Person person
JOIN car IN person.cars
WHERE person.city = 'New York'
এখানে, JOIN car IN person.cars অংশটি Person এবং Car ক্লাসের মধ্যে সম্পর্ক স্থাপন করে, যেখানে cars একটি প্রোপার্টি যা ব্যক্তির গাড়ির তথ্য ধারণ করে। ফলে, এই কুয়েরি ব্যবহার করে New York শহরের প্রত্যেক ব্যক্তি এবং তাদের গাড়ির মডেল সম্পর্কে তথ্য পাওয়া যাবে।
Java API দিয়ে JOIN ব্যবহার:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/mydatabase");
db.open("admin", "admin");
OResultSet result = db.query("SELECT person.name, car.model FROM Person person JOIN car IN person.cars WHERE person.city = 'New York'");
while (result.hasNext()) {
OResult item = result.next();
System.out.println("Name: " + item.getProperty("name"));
System.out.println("Car Model: " + item.getProperty("model"));
}
2. LET Query
LET ক্লজটি আপনাকে একটি কুয়েরিতে অস্থায়ী ভেরিয়েবল তৈরি করতে সাহায্য করে, যা পরে কুয়েরির অন্যান্য অংশে ব্যবহার করা যেতে পারে। এটি একাধিক কলাম বা ফিল্ডের গণনা, ফিল্টারিং বা ট্রান্সফর্মেশন করার সময় কার্যকরী হতে পারে।
উদাহরণ: LET ব্যবহার করে অস্থায়ী ভেরিয়েবল তৈরি
ধরা যাক, আপনি Person ক্লাসের মধ্যে গড় বয়স হিসাব করতে চান এবং তারপর সেই গড় বয়সের উপর ভিত্তি করে ফিল্টার করতে চান। আপনি LET ক্লজ ব্যবহার করতে পারেন:
LET avgAge = (SELECT AVG(age) FROM Person)
SELECT name FROM Person WHERE age > avgAge
এখানে, avgAge একটি অস্থায়ী ভেরিয়েবল যা Person ক্লাসের মধ্যে গড় বয়সের মান ধারণ করে। তারপর, সেই গড় বয়সের চেয়ে বেশি বয়সের ব্যক্তির নাম ফেরত দেওয়া হয়।
Java API দিয়ে LET ব্যবহার:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/mydatabase");
db.open("admin", "admin");
OResultSet result = db.query("LET avgAge = (SELECT AVG(age) FROM Person) SELECT name FROM Person WHERE age > avgAge");
while (result.hasNext()) {
OResult item = result.next();
System.out.println("Name: " + item.getProperty("name"));
}
3. NESTED Queries
NESTED Queries (বা সাবকুয়েরি) হল এমন কুয়েরি যা অন্য কুয়েরির ভিতরে ব্যবহৃত হয়। এর মাধ্যমে আপনি একটি কুয়েরির ফলাফলকে অন্য কুয়েরি হিসেবে ব্যবহার করতে পারেন, যা ডেটাবেসে আরও উন্নত বিশ্লেষণ এবং ডেটা ফিল্টারিং সহজ করে তোলে।
উদাহরণ: NESTED Query ব্যবহার করে ডেটা ফিল্টার করা
ধরা যাক, আপনি Person ক্লাস থেকে এমন ব্যক্তিদের নাম চাচ্ছেন, যাদের বয়স Car ক্লাসের গড় বয়সের চেয়ে বেশি। এখানে একটি Nested Query ব্যবহার করা হচ্ছে:
SELECT name FROM Person
WHERE age > (SELECT AVG(age) FROM Person)
এখানে, (SELECT AVG(age) FROM Person) একটি সাবকুয়েরি যা Person ক্লাসের গড় বয়স বের করে এবং প্রধান কুয়েরির মধ্যে সেটি ব্যবহার করা হচ্ছে।
Java API দিয়ে NESTED Query ব্যবহার:
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/mydatabase");
db.open("admin", "admin");
OResultSet result = db.query("SELECT name FROM Person WHERE age > (SELECT AVG(age) FROM Person)");
while (result.hasNext()) {
OResult item = result.next();
System.out.println("Name: " + item.getProperty("name"));
}
এখানে, Person ক্লাসের গড় বয়সের চেয়ে বেশি বয়সের ব্যক্তি ফিরিয়ে আনা হচ্ছে।
সারাংশ
JOIN, LET, এবং NESTED Queries OrientDB-তে ডেটা অনুসন্ধান এবং বিশ্লেষণের জন্য গুরুত্বপূর্ণ ফিচার। JOIN ব্যবহার করে একাধিক টেবিল বা ডকুমেন্টের মধ্যে সম্পর্ক স্থাপন করা যায়, LET অস্থায়ী ভেরিয়েবল তৈরি করে কুয়েরির কার্যক্ষমতা বাড়ায় এবং NESTED Queries ডেটার মধ্যে গভীর সম্পর্ক বিশ্লেষণ করতে সহায়তা করে। এই ফিচারগুলির মাধ্যমে আপনি OrientDB-তে আরও জটিল এবং কার্যকরী কুয়েরি তৈরি করতে সক্ষম হবেন।
Read more