ওরিয়েন্টডিবি (OrientDB) একটি মাল্টি-মোডাল ডেটাবেস, যা SQL ভাষার মতো একটি কুয়েরি ভাষা ব্যবহার করে ডেটাবেস পরিচালনা করতে সহায়তা করে। এটি SQL কুয়েরি সিস্টেমের উপর ভিত্তি করে এবং গ্রাফ ডেটাবেস ম্যানেজমেন্টের জন্য কিছু অতিরিক্ত কুয়েরি ফিচার সরবরাহ করে। এর মাধ্যমে আপনি ডকুমেন্ট, গ্রাফ এবং রিলেশনাল ডেটা ম্যানিপুলেট করতে পারেন। ওরিয়েন্টডিবি এর SQL সিনট্যাক্সটি অনেকটাই সাধারণ SQL-এর মতো, তবে কিছু বিশেষ কাস্টমাইজড ফিচারও আছে।
OrientDB এর SQL Syntax Overview
ওরিয়েন্টডিবি SQL সিনট্যাক্স সাধারণ SQL সিনট্যাক্সের অনুরূপ হলেও এতে কিছু বাড়তি ফিচার এবং স্টেটমেন্ট থাকে যা গ্রাফ ডেটাবেসের জন্য প্রয়োজনীয়। নিচে ওরিয়েন্টডিবির প্রধান SQL স্টেটমেন্টগুলির ব্যাখ্যা করা হলো:
১. SELECT (ডেটা নির্বাচন)
SELECT স্টেটমেন্ট ব্যবহার করে আপনি ডেটাবেস থেকে ডেটা নির্বাচন করতে পারেন।
উদাহরণ:
SELECT FROM Person WHERE name = 'John'
এখানে, Person ক্লাস থেকে name প্রপার্টি 'John' সমান সমস্ত ডকুমেন্ট নির্বাচন করা হবে।
২. CREATE (নতুন ডেটা তৈরি)
CREATE কমান্ড দিয়ে নতুন ডকুমেন্ট বা ক্লাস তৈরি করা হয়।
উদাহরণ:
- ডকুমেন্ট তৈরি করা:
CREATE DOCUMENT Person SET name = 'John', age = 30
এটি একটি নতুন Person ডকুমেন্ট তৈরি করবে যেখানে name এবং age প্রপার্টি থাকবে।
- ক্লাস তৈরি করা:
CREATE CLASS Person EXTENDS V
এটি একটি নতুন Person ক্লাস তৈরি করবে, যা গ্রাফের ভেরটেক্স (নোড) হিসেবে কাজ করবে।
৩. INSERT (ডেটা সন্নিবেশ)
INSERT স্টেটমেন্ট ব্যবহার করে নতুন ডেটা সন্নিবেশ করা হয়। এটি একটি নতুন রেকর্ড তৈরি করতে সাহায্য করে।
উদাহরণ:
INSERT INTO Person SET name = 'Jane', age = 25
এটি Person ক্লাসে নতুন একটি ডকুমেন্ট সন্নিবেশ করবে, যেখানে name এবং age প্রপার্টি থাকবে।
৪. UPDATE (ডেটা আপডেট)
UPDATE স্টেটমেন্ট ব্যবহার করে বিদ্যমান ডকুমেন্ট বা রেকর্ড আপডেট করা হয়।
উদাহরণ:
UPDATE Person SET age = 31 WHERE name = 'John'
এটি Person ক্লাসে name 'John' এর মানের ডকুমেন্টটি আপডেট করবে এবং তার age প্রপার্টি ৩১ করে দিবে।
৫. DELETE (ডেটা মুছে ফেলা)
DELETE স্টেটমেন্ট ব্যবহার করে আপনি ডকুমেন্ট বা রেকর্ড মুছে ফেলতে পারেন।
উদাহরণ:
DELETE FROM Person WHERE name = 'John'
এটি Person ক্লাস থেকে name 'John' হওয়া সমস্ত ডকুমেন্ট মুছে ফেলবে।
৬. TRAVERSE (গ্রাফ সম্পর্ক অনুসন্ধান)
TRAVERSE কমান্ডটি গ্রাফ ডেটাবেসের জন্য ব্যবহৃত হয়, যেখানে আপনি এক নোড থেকে অন্য নোডের মধ্যে সম্পর্ক অনুসন্ধান করতে পারেন। এটি একটি শক্তিশালী কুয়েরি যা গ্রাফ ডেটাবেসের মধ্যে সম্পর্ক অনুসন্ধান করতে ব্যবহৃত হয়।
উদাহরণ:
TRAVERSE out('friend') FROM (SELECT FROM Person WHERE name = 'John')
এখানে, John নামক ব্যক্তির friend সম্পর্কের মধ্যে সমস্ত নোড অনুসন্ধান করা হবে।
৭. MERGE (ডেটা মার্জ করা)
MERGE কমান্ডটি বিদ্যমান ডকুমেন্ট বা রেকর্ডকে নতুন রেকর্ডের সাথে মার্জ (একত্রিত) করতে ব্যবহৃত হয়। এটি বিশেষভাবে ব্যবহার হয় যখন আপনি নিশ্চিত হতে চান যে একটি ডকুমেন্ট তৈরি না হয়ে থাকে।
উদাহরণ:
MERGE INTO Person SET name = 'John', age = 30 WHERE name = 'John'
এটি Person ক্লাসের মধ্যে name 'John' এর জন্য একটি ডকুমেন্ট মেনটেইন করবে। যদি এরকম কোনো ডকুমেন্ট আগে থেকেই না থাকে, তবে নতুন ডকুমেন্ট তৈরি হবে।
৮. INDEX (ইনডেক্স তৈরি করা)
ওরিয়েন্টডিবি তে ইনডেক্স তৈরি করে ডেটার অনুসন্ধান আরও দ্রুত করা যায়। CREATE INDEX কমান্ডের মাধ্যমে ইনডেক্স তৈরি করা হয়।
উদাহরণ:
CREATE INDEX ON Person(name)
এটি Person ক্লাসের name প্রপার্টির উপর একটি ইনডেক্স তৈরি করবে, যা অনুসন্ধানকে দ্রুততর করবে।
OrientDB SQL Query Examples
১. SELECT Query (ডেটা নির্বাচন)
SELECT FROM Person WHERE age > 25
এটি age ২৫ এর বেশি সমস্ত Person ডকুমেন্ট নির্বাচন করবে।
২. INSERT Query (ডেটা সন্নিবেশ)
INSERT INTO Person SET name = 'Alice', age = 22, address = {street: '456 Park Ave', city: 'Chicago'}
এটি Person ক্লাসে একটি নতুন ডকুমেন্ট সন্নিবেশ করবে যার মধ্যে name, age, এবং address থাকবে।
৩. UPDATE Query (ডেটা আপডেট)
UPDATE Person SET city = 'Los Angeles' WHERE name = 'Alice'
এটি Person ক্লাসের name 'Alice' এর জন্য শহর city আপডেট করবে এবং সেটিকে 'Los Angeles' করবে।
৪. DELETE Query (ডেটা মুছে ফেলা)
DELETE FROM Person WHERE name = 'Alice'
এটি Person ক্লাস থেকে name 'Alice' এর সমস্ত ডকুমেন্ট মুছে ফেলবে।
সারাংশ
OrientDB SQL একটি শক্তিশালী কুয়েরি ভাষা যা গ্রাফ, ডকুমেন্ট এবং রিলেশনাল ডেটাবেসের জন্য ব্যবহৃত হয়। এটি সাধারণ SQL সিনট্যাক্সের সাথে কিছু অতিরিক্ত ফিচার সরবরাহ করে, যেমন গ্রাফ অনুসন্ধান এবং ডিস্ট্রিবিউটেড পারফরম্যান্স অপটিমাইজেশন। SELECT, INSERT, UPDATE, DELETE, এবং TRAVERSE সহ বিভিন্ন SQL স্টেটমেন্ট ব্যবহার করে ডেটা পরিচালনা করা যায়। এর মাধ্যমে ডেটাবেসের স্কেলিং এবং পারফরম্যান্স উন্নত করা সম্ভব।
ওরিয়েন্টডিবি (OrientDB) একটি মাল্টি-মোডাল ডেটাবেস, যা SQL অনুরূপ কুয়েরি ভাষা (OrientDB SQL) ব্যবহার করে ডেটাবেস পরিচালনা করতে সক্ষম। এটি গ্রাফ এবং ডকুমেন্ট ডেটাবেজের বৈশিষ্ট্য সমর্থন করে, এবং ডেটা মডেলিং এবং কুয়েরি চালানোর জন্য একটি SQL-অনুপ্রাণিত কুয়েরি ভাষা প্রদান করে। এই কুয়েরি ভাষাটি রিলেশনাল ডেটাবেজের SQL এর মতো হলেও, গ্রাফ এবং ডকুমেন্ট ডেটাবেজের জন্য কিছু অতিরিক্ত বৈশিষ্ট্য রয়েছে।
এখানে OrientDB SQL এর মৌলিক ব্যবহার এবং কুয়েরি স্ট্রাকচার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
OrientDB SQL এর মৌলিক ব্যবহার
১. ডেটাবেসে ডেটা যোগ করা (INSERT INTO)
ডেটাবেসে নতুন ডেটা যোগ করতে INSERT INTO কুয়েরি ব্যবহার করা হয়। এই কুয়েরির মাধ্যমে আপনি ডকুমেন্ট তৈরি করতে পারেন এবং সেগুলোর প্রপার্টি সেট করতে পারেন।
উদাহরণ:
INSERT INTO Person SET name = 'Alice', age = 30, address = '123 Main St'
এখানে, Person একটি ডকুমেন্ট টাইপ বা ক্লাস, এবং ডকুমেন্টের মধ্যে name, age, এবং address প্রপার্টি সেট করা হচ্ছে।
২. ডেটা পড়া (SELECT)
ডেটাবেস থেকে ডেটা পড়তে SELECT কুয়েরি ব্যবহার করা হয়। এটি আপনাকে নির্দিষ্ট শর্তে ডেটা রিটার্ন করতে সক্ষম করে।
উদাহরণ:
SELECT * FROM Person WHERE name = 'Alice'
এই কুয়েরিতে, Person ক্লাসের সমস্ত ডকুমেন্টের মধ্যে থেকে name প্রপার্টির মান 'Alice' সমান এমন ডকুমেন্টগুলি নির্বাচন করা হচ্ছে।
৩. ডেটা আপডেট করা (UPDATE)
ডেটা আপডেট করতে UPDATE কুয়েরি ব্যবহার করা হয়, যেখানে আপনি নির্দিষ্ট প্রপার্টির মান পরিবর্তন করতে পারেন।
উদাহরণ:
UPDATE Person SET age = 31 WHERE name = 'Alice'
এখানে, Person ডকুমেন্টের মধ্যে name সমান 'Alice' থাকা ডকুমেন্টটির age প্রপার্টি ৩১ এ আপডেট করা হচ্ছে।
৪. ডেটা মুছে ফেলা (DELETE)
ডেটাবেস থেকে ডেটা মুছে ফেলতে DELETE কুয়েরি ব্যবহার করা হয়।
উদাহরণ:
DELETE FROM Person WHERE name = 'Alice'
এই কুয়েরিতে, Person ক্লাসের মধ্যে name 'Alice' এমন সমস্ত ডকুমেন্ট মুছে ফেলা হবে।
৫. টেবিল/ক্লাস তৈরি করা (CREATE CLASS)
ডকুমেন্ট ডেটাবেজে নতুন ক্লাস (বা টেবিল) তৈরি করতে CREATE CLASS কুয়েরি ব্যবহার করা হয়।
উদাহরণ:
CREATE CLASS Person
এখানে, Person নামক একটি নতুন ক্লাস তৈরি করা হচ্ছে।
৬. ক্লাসের প্রপার্টি যোগ করা (CREATE PROPERTY)
একটি ক্লাসে নতুন প্রপার্টি বা ফিল্ড যোগ করতে CREATE PROPERTY কুয়েরি ব্যবহার করা হয়।
উদাহরণ:
CREATE PROPERTY Person.age INTEGER
এই কুয়েরিতে, Person ক্লাসে একটি নতুন প্রপার্টি age যোগ করা হচ্ছে, যার ডেটা টাইপ INTEGER।
৭. ক্লাসের মধ্যে সম্পর্ক তৈরি করা (CREATE EDGE)
গ্রাফ ডেটাবেজে, নোডগুলোর মধ্যে সম্পর্ক বা সংযোগ তৈরি করতে CREATE EDGE কুয়েরি ব্যবহার করা হয়। এটি একটি সম্পর্ক বা এজ তৈরি করে যা দুটি নোডের মধ্যে সম্পর্ক স্থাপন করে।
উদাহরণ:
CREATE EDGE Knows FROM (SELECT FROM Person WHERE name = 'Alice') TO (SELECT FROM Person WHERE name = 'Bob')
এখানে, Knows নামে একটি সম্পর্ক তৈরি করা হচ্ছে, যেখানে Alice এবং Bob দুটি Person নোডের মধ্যে সম্পর্ক স্থাপন করা হচ্ছে।
৮. গ্রাফ কুয়েরি (MATCH)
গ্রাফ ডেটাবেজে, সম্পর্কিত নোড এবং এজের মধ্যে অনুসন্ধান করতে MATCH কুয়েরি ব্যবহার করা হয়। এটি সম্পর্কিত ডেটা খুঁজে বের করতে সহায়ক।
উদাহরণ:
MATCH (a:Person)-[:KNOWS]->(b:Person) WHERE a.name = 'Alice' RETURN b
এখানে, Alice নামক Person নোডের সাথে সম্পর্কিত অন্যান্য Person নোডগুলি রিটার্ন করা হচ্ছে, যারা KNOWS সম্পর্কের মাধ্যমে যুক্ত।
৯. ইনডেক্স তৈরি করা (CREATE INDEX)
ইনডেক্স তৈরি করতে CREATE INDEX কুয়েরি ব্যবহার করা হয়, যাতে ডেটা দ্রুত অনুসন্ধান করা যায়।
উদাহরণ:
CREATE INDEX ON Person(name)
এখানে, Person ক্লাসের name প্রপার্টির উপর একটি ইনডেক্স তৈরি করা হচ্ছে।
১০. ডেটা ফিল্টার এবং অর্ডারিং (ORDER BY, LIMIT)
ফলাফলকে সাজানোর জন্য ORDER BY এবং ফলাফলের সংখ্যা সীমাবদ্ধ করতে LIMIT ব্যবহার করা হয়।
উদাহরণ:
SELECT * FROM Person ORDER BY age DESC LIMIT 10
এই কুয়েরিতে, Person ক্লাসের সকল ডকুমেন্টের মধ্যে থেকে age প্রপার্টির মানের ভিত্তিতে সজ্জিত করা হচ্ছে এবং সর্বোচ্চ ১০টি রেকর্ড রিটার্ন করা হচ্ছে।
সারাংশ
OrientDB SQL একটি SQL-অনুপ্রাণিত কুয়েরি ভাষা, যা OrientDB তে ডেটাবেস পরিচালনার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি ডেটা ইনসার্ট, রিট্রিভ, আপডেট এবং ডিলিট করতে পারেন, এবং গ্রাফ এবং ডকুমেন্ট মডেলে সম্পর্কিত ডেটা ম্যানিপুলেট করতে পারেন। OrientDB SQL-এর কিছু মৌলিক কুয়েরি যেমন INSERT INTO, SELECT, UPDATE, DELETE, MATCH, এবং CREATE CLASS এর মাধ্যমে ডেটাবেসের কার্যক্রম পরিচালনা করা হয়।
ওরিয়েন্টডিবি (OrientDB) SQL-লাইক কুয়েরি ভাষা ব্যবহার করে ডেটাবেসে ডেটা পরিচালনা করা হয়। এর মাধ্যমে আপনি SELECT, INSERT, UPDATE, এবং DELETE কুয়েরি চালিয়ে ডেটা অ্যাক্সেস, সংরক্ষণ, আপডেট এবং মুছতে পারেন। নীচে এই চারটি প্রধান কুয়েরির বিস্তারিত বর্ণনা দেওয়া হলো।
১. SELECT কুয়েরি (Retrieving Data)
SELECT কুয়েরি ডেটাবেস থেকে তথ্য (ডকুমেন্ট) নির্বাচন করতে ব্যবহৃত হয়। ওরিয়েন্টডিবি SQL-লাইক কুয়েরি ভাষা সমর্থন করে, যা ব্যবহারকারীকে সুনির্দিষ্ট ডেটা ফিল্টার করতে সাহায্য করে।
১.১ বেসিক SELECT কুয়েরি:
SELECT * FROM Person;
এটি Person ক্লাসের সমস্ত ডকুমেন্ট নির্বাচন করবে এবং ফলস্বরূপ সমস্ত ফিল্ডের তথ্য প্রদান করবে।
১.২ WHERE কন্ডিশন দিয়ে SELECT:
SELECT * FROM Person WHERE age > 30;
এই কুয়েরি Person ক্লাসের সমস্ত ডকুমেন্ট থেকে সেসব নির্বাচন করবে, যার age ৩০ এর বেশি।
১.৩ সুনির্দিষ্ট ফিল্ড নির্বাচন:
SELECT name, age FROM Person WHERE city = 'Metropolis';
এটি Person ক্লাসের name এবং age ফিল্ড নির্বাচন করবে যেখানে city = 'Metropolis'।
১.৪ LIMIT ব্যবহার:
SELECT * FROM Person LIMIT 10;
এটি প্রথম ১০টি ডকুমেন্ট নির্বাচন করবে।
১.৫ ORDER BY ব্যবহার:
SELECT * FROM Person ORDER BY age DESC;
এই কুয়েরি Person ক্লাসের সমস্ত ডকুমেন্ট নির্বাচন করবে এবং age প্রপার্টির উপর ভিত্তি করে DESC (অবতরণ) অনুযায়ী সাজাবে।
২. INSERT কুয়েরি (Inserting Data)
INSERT কুয়েরি নতুন ডকুমেন্ট তৈরি করতে ব্যবহৃত হয়। আপনি একাধিক ফিল্ডে ডেটা অ্যাসাইন করে নতুন ডকুমেন্ট সন্নিবেশ করতে পারেন।
২.১ বেসিক INSERT কুয়েরি:
INSERT INTO Person SET name = 'John', age = 30, city = 'Metropolis';
এটি Person ক্লাসে একটি নতুন ডকুমেন্ট সন্নিবেশ করবে যার name = 'John', age = 30, এবং city = 'Metropolis'।
২.২ নেস্টেড ডেটা INSERT:
INSERT INTO Person SET name = 'Jane', age = 28, address = { street: '456 Oak St', city: 'Gotham' };
এটি Person ক্লাসে একটি নতুন ডকুমেন্ট সন্নিবেশ করবে এবং address ফিল্ডের মধ্যে একটি নেস্টেড ডকুমেন্ট (যেমন: street এবং city) থাকবে।
২.৩ ডকুমেন্ট অবজেক্ট INSERT:
INSERT INTO Person SET address = { street: '123 Elm St', city: 'Metropolis' };
এটি একটি Person ক্লাসে শুধু address ডকুমেন্ট ফিল্ডে একটি নেস্টেড ডেটা সন্নিবেশ করবে।
৩. UPDATE কুয়েরি (Updating Data)
UPDATE কুয়েরি ডেটাবেসে বিদ্যমান ডকুমেন্ট আপডেট করতে ব্যবহৃত হয়। আপনি সুনির্দিষ্ট প্রপার্টি আপডেট করতে পারেন।
৩.১ বেসিক UPDATE কুয়েরি:
UPDATE Person SET age = 31 WHERE name = 'John';
এটি Person ক্লাসে name = 'John' এর সাথে মেলা ডকুমেন্টের age প্রপার্টি ৩০ থেকে ৩১ এ পরিবর্তন করবে।
৩.২ নেস্টেড ডেটা আপডেট:
UPDATE Person SET address.city = 'Gotham' WHERE name = 'Jane';
এটি Person ক্লাসে name = 'Jane' এর সাথে মেলা ডকুমেন্টের address.city প্রপার্টি আপডেট করবে।
৩.৩ একাধিক প্রপার্টি আপডেট:
UPDATE Person SET age = 32, city = 'Gotham' WHERE name = 'Jane';
এটি Person ক্লাসে name = 'Jane' এর সাথে মেলা ডকুমেন্টের age এবং city দুটি প্রপার্টি আপডেট করবে।
৪. DELETE কুয়েরি (Deleting Data)
DELETE কুয়েরি ডেটাবেস থেকে একটি বা একাধিক ডকুমেন্ট মুছতে ব্যবহৃত হয়।
৪.১ বেসিক DELETE কুয়েরি:
DELETE FROM Person WHERE name = 'John';
এটি Person ক্লাস থেকে name = 'John' এর সাথে মেলা ডকুমেন্ট মুছে ফেলবে।
৪.২ সব ডকুমেন্ট ডিলিট (Delete All Documents):
DELETE FROM Person;
এটি Person ক্লাসের সমস্ত ডকুমেন্ট মুছে ফেলবে।
৪.৩ নেস্টেড ডেটা ডিলিট:
DELETE FROM Person WHERE address.city = 'Gotham';
এটি Person ক্লাস থেকে সেসব ডকুমেন্ট মুছে ফেলবে যেখানে address.city = 'Gotham'।
৪.৪ স্পেসিফিক ডকুমেন্ট ডিলিট:
DELETE FROM Person WHERE name = 'Jane' AND age = 28;
এটি Person ক্লাস থেকে name = 'Jane' এবং age = 28 এর সাথে মেলা সুনির্দিষ্ট ডকুমেন্ট মুছে ফেলবে।
সারাংশ
OrientDB তে SELECT, INSERT, UPDATE, এবং DELETE কুয়েরি ব্যবহার করে ডেটাবেস পরিচালনা করা হয়। SQL-লাইক কুয়েরি ভাষার মাধ্যমে ডকুমেন্ট তৈরি, আপডেট, অনুসন্ধান এবং ডিলিট করা যায়। এর মাধ্যমে ডেটার কার্যকরী ম্যানেজমেন্ট, বিশ্লেষণ এবং কাস্টমাইজেশন করা সম্ভব, এবং একাধিক ডেটা মডেল (গ্রাফ, ডকুমেন্ট, কী-ভ্যালু) সমর্থন করার কারণে এটি অত্যন্ত নমনীয় এবং স্কেলেবল।
ওরিয়েন্টডিবি (OrientDB) একটি মাল্টি-মডেল ডেটাবেস সিস্টেম যা ডকুমেন্ট এবং গ্রাফ ডেটাবেস মডেল সমর্থন করে। ডেটা ম্যানিপুলেশন এবং অনুসন্ধান করার জন্য, ওরিয়েন্টডিবি SQL-ভিত্তিক কুয়েরি ভাষা ব্যবহার করে, যা ডেভেলপারদের পরিচিত কুয়েরি ভাষায় ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে। এর মধ্যে WHERE, ORDER BY, এবং GROUP BY কুয়েরি ক্লজগুলো বিশেষভাবে গুরুত্বপূর্ণ, যেগুলি ডেটার মধ্যে নির্দিষ্ট শর্ত দিয়ে অনুসন্ধান, সাজানো, এবং গ্রুপিং করতে ব্যবহৃত হয়।
WHERE ক্লজ ব্যবহার
WHERE ক্লজ ব্যবহার করে আপনি নির্দিষ্ট শর্ত বা কন্ডিশন মেনে ডেটা ফিল্টার করতে পারেন। এটি একটি শর্ত নির্ধারণ করে, যার মাধ্যমে কেবলমাত্র সেই ডেটা রিটার্ন হয় যা শর্তের সাথে মেলে।
WHERE ক্লজ এর সিনট্যাক্স:
SELECT * FROM ClassName WHERE condition;
এখানে, ClassName হচ্ছে ডেটাবেসের ক্লাস বা টেবিলের নাম এবং condition হচ্ছে আপনার ফিল্টার শর্ত।
উদাহরণ:
SELECT * FROM Person WHERE age > 30;
এখানে, Person ক্লাস থেকে কেবল সেই রেকর্ডগুলো ফিরিয়ে আসবে, যেখানে age ৩০ এর বেশি।
আরও উদাহরণ:
SELECT * FROM Product WHERE price < 100 AND stock > 0;
এখানে, Product ক্লাস থেকে সেগুলি নির্বাচন করা হবে যেগুলোর price 100 এর কম এবং stock 0 এর বেশি।
ORDER BY ক্লজ ব্যবহার
ORDER BY ক্লজ ব্যবহার করে আপনি ডেটাকে নির্দিষ্ট একটি কলামের মানের ওপর ভিত্তি করে সাজাতে পারেন। এটি ডেটা ASC (Ascending) বা DESC (Descending) অর্ডারে সাজানোর জন্য ব্যবহৃত হয়।
ORDER BY ক্লজ এর সিনট্যাক্স:
SELECT * FROM ClassName ORDER BY columnName [ASC | DESC];
এখানে, columnName হচ্ছে সেই কলামের নাম যার ভিত্তিতে ডেটা সাজানো হবে এবং আপনি চাইলে ASC (অ্যসেন্ডিং) বা DESC (ডেসেন্ডিং) অর্ডার নির্বাচন করতে পারেন। ডিফল্টভাবে, এটি ASC অর্ডারে সাজায়।
উদাহরণ:
SELECT * FROM Person ORDER BY age DESC;
এখানে, Person ক্লাসের ডেটা age কলামের মান অনুসারে ডেসেন্ডিং অর্ডারে সাজানো হবে।
আরও উদাহরণ:
SELECT name, price FROM Product ORDER BY price ASC;
এখানে, Product ক্লাসের name এবং price কলাম থেকে ডেটা price অনুসারে অ্যাসেন্ডিং অর্ডারে সাজানো হবে।
GROUP BY ক্লজ ব্যবহার
GROUP BY ক্লজ ব্যবহার করে আপনি একই ধরনের ডেটাকে একত্রিত করতে পারেন। এটি বিশেষভাবে ব্যবহার করা হয় যখন আপনাকে কোনো গ্রুপের ওপর কাজ করতে হয়, যেমন গোষ্ঠীভুক্ত ডেটা থেকে অগ্রীগেট ফাংশন যেমন COUNT, SUM, AVG ইত্যাদি ব্যবহার করা।
GROUP BY ক্লজ এর সিনট্যাক্স:
SELECT columnName, aggregateFunction(columnName) FROM ClassName GROUP BY columnName;
এখানে, columnName হলো সেই কলাম যার ভিত্তিতে গ্রুপিং হবে, এবং aggregateFunction হলো সেই ফাংশন যা গ্রুপ করা ডেটার ওপর প্রযোজ্য হবে (যেমন COUNT, SUM, AVG)।
উদাহরণ:
SELECT age, COUNT(*) FROM Person GROUP BY age;
এখানে, Person ক্লাস থেকে age অনুযায়ী ডেটা গ্রুপ করা হবে এবং প্রতিটি বয়সের জন্য কতজন ব্যক্তি আছেন তা গোনা হবে।
আরও উদাহরণ:
SELECT department, AVG(salary) FROM Employee GROUP BY department;
এখানে, Employee ক্লাসের salary কলামের গড় মান (Average) প্রতি department অনুযায়ী গণনা করা হবে।
WHERE, ORDER BY, এবং GROUP BY একসাথে ব্যবহার
এই তিনটি ক্লজ একসাথে ব্যবহার করে আপনি আরও জটিল কুয়েরি তৈরি করতে পারেন, যেমন প্রথমে ডেটা ফিল্টার করা, তারপর সাজানো এবং শেষে গ্রুপ করা।
উদাহরণ:
SELECT department, AVG(salary) FROM Employee WHERE age > 30 GROUP BY department ORDER BY AVG(salary) DESC;
এখানে:
WHERE age > 30প্রথমে ৩০ বছরের বেশি বয়সের কর্মীদের নির্বাচন করবে।GROUP BY departmentতাদের বিভাগ অনুসারে গ্রুপ করবে।ORDER BY AVG(salary) DESCগড় বেতন (salary) অনুযায়ী ডেসেন্ডিং অর্ডারে সাজাবে।
সারাংশ
ওরিয়েন্টডিবি (OrientDB) SQL ভিত্তিক কুয়েরি ভাষা ব্যবহার করে ডেটাবেসে ডেটা ম্যানিপুলেশন করতে সক্ষম। WHERE, ORDER BY, এবং GROUP BY কুয়েরি ক্লজগুলো ডেটা ফিল্টারিং, সাজানো এবং গ্রুপিং করার জন্য ব্যবহার করা হয়। WHERE কুয়েরি দিয়ে শর্ত অনুসারে ডেটা ফিল্টার করা যায়, ORDER BY কুয়েরি দিয়ে ডেটা সাজানো যায় এবং GROUP BY কুয়েরি দিয়ে ডেটাকে গ্রুপ করে বিভিন্ন অগ্রীগেট ফাংশন প্রয়োগ করা সম্ভব। এই ক্লজগুলো একত্রে ব্যবহার করে আরও শক্তিশালী কুয়েরি তৈরি করা সম্ভব, যা ডেটাবেস ম্যানিপুলেশন এবং বিশ্লেষণে সহায়তা করে।
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-তে আরও জটিল এবং কার্যকরী কুয়েরি তৈরি করতে সক্ষম হবেন।
ওরিয়েন্টডিবি (OrientDB) একটি শক্তিশালী মাল্টি-মডেল ডেটাবেস সিস্টেম, যা SQL-সদৃশ কুয়েরি ভাষা ব্যবহার করে ডেটা ম্যানিপুলেট করতে সক্ষম। Subqueries এবং Functions এর মাধ্যমে আপনি আরো জটিল কুয়েরি তৈরি করতে পারেন এবং ডেটাবেসের কার্যক্ষমতা বৃদ্ধি করতে পারেন। এই দুটি বিষয়ই ডেটাবেস থেকে ডেটা নির্বাচন, প্রক্রিয়া এবং বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
OrientDB তে Subqueries
Subqueries হল একটি কুয়েরি, যা অন্য একটি কুয়েরির ভিতরে ব্যবহার করা হয়। এটি মূল কুয়েরির জন্য একটি সহায়ক কুয়েরি হিসেবে কাজ করে এবং ডেটা নির্বাচন বা প্রক্রিয়া করার জন্য ব্যবহার করা যায়। OrientDB তে Subqueries ব্যবহার করে আপনি একাধিক টেবিল বা ক্লাসের মধ্যে সম্পর্কিত ডেটা সহজে প্রক্রিয়া করতে পারেন।
Subquery এর সাধারণ গঠন:
SELECT * FROM ClassName WHERE column IN (SELECT column FROM AnotherClass WHERE condition)
এখানে:
- ClassName এবং AnotherClass হল ডেটাবেসের ক্লাস।
- প্রথম কুয়েরি দ্বিতীয় কুয়েরির ফলাফল থেকে ডেটা নির্বাচন করবে।
১. Subquery উদাহরণ
ক. একই ক্লাসের মধ্যে Subquery
এখানে, Person ক্লাস থেকে এমন ব্যক্তিদের নাম নির্বাচন করা হচ্ছে, যাদের বয়স ৩০ এর বেশি, তবে বয়সের ভিত্তিতে এই নির্বাচনের জন্য Subquery ব্যবহার করা হচ্ছে।
SELECT name FROM Person WHERE age IN (SELECT age FROM Person WHERE age > 30)
এটি Person ক্লাস থেকে সেই ব্যক্তিদের নাম ফেরত দেবে, যাদের বয়স ৩০ এর বেশি।
খ. যত্নবান কুয়েরি
আপনি Subquery ব্যবহার করে একটি প্রধান কুয়েরি থেকে নির্বাচিত ডেটা নির্দিষ্ট করার জন্য আরও যত্নবান হতে পারেন।
SELECT * FROM Person WHERE name IN (SELECT name FROM Person WHERE age = 30)
এটি age = 30 এর ভিত্তিতে সকল name নির্বাচন করবে এবং সেই নামগুলির জন্য মূল কুয়েরিতে ডেটা আনবে।
২. Subqueries with EXISTS
আপনি Subquery এর সাথে EXISTS ব্যবহার করতে পারেন, যেখানে সাবকুয়েরি শুধুমাত্র সত্য হলে মূল কুয়েরি রান হবে।
SELECT name FROM Person WHERE EXISTS (SELECT * FROM Transaction WHERE amount > 1000)
এটি Transaction ক্লাসে এমন সব লেনদেন সনাক্ত করবে, যেগুলোর পরিমাণ ১০০০ এর বেশি এবং তারপরে Person ক্লাস থেকে সংশ্লিষ্ট নাম নির্বাচন করবে।
OrientDB তে Functions ব্যবহার
Functions হল পূর্বনির্ধারিত প্রোগ্রাম যেগুলি আপনাকে কুয়েরি চালানোর সময় বিশেষ ধরনের প্রক্রিয়া সম্পাদন করতে সাহায্য করে। OrientDB তে অনেক ধরনের ফাংশন রয়েছে যা ডেটা সিলেকশন, রূপান্তর, ফিল্টারিং এবং গ্রুপিং করতে সাহায্য করে। এই ফাংশনগুলি আপনাকে বিভিন্ন ধরনের ডেটা অপারেশন পরিচালনা করার জন্য সাহায্য করে।
১. অ্যাগ্রিগেট ফাংশন (Aggregate Functions)
অ্যাগ্রিগেট ফাংশনগুলি একাধিক রেকর্ডের ওপর গণনা করে একটি একক মান প্রদান করে। সাধারণ অ্যাগ্রিগেট ফাংশনগুলো হলো: COUNT, SUM, AVG, MAX, MIN।
উদাহরণ: COUNT ফাংশন
SELECT COUNT(*) FROM Person WHERE age > 30
এটি Person ক্লাস থেকে সেই সকল রেকর্ডের সংখ্যা ফিরিয়ে দেবে, যাদের বয়স ৩০ এর বেশি।
উদাহরণ: SUM ফাংশন
SELECT SUM(amount) FROM Transaction WHERE type = 'Purchase'
এটি Transaction ক্লাস থেকে সকল Purchase টাইপের লেনদেনের পরিমাণ যোগফল প্রদান করবে।
২. ট্রান্সফরমেশন ফাংশন (Transformation Functions)
ওরিয়েন্টডিবি বিভিন্ন ডেটা ট্রান্সফরমেশন ফাংশনও সরবরাহ করে, যেমন UPPER, LOWER, SUBSTRING, CONCAT ইত্যাদি।
উদাহরণ: UPPER ফাংশন
SELECT UPPER(name) FROM Person
এটি Person ক্লাসের name প্রপার্টির সকল মানকে বড় হাতের অক্ষরে রূপান্তর করবে।
উদাহরণ: CONCAT ফাংশন
SELECT CONCAT(name, ' ', surname) AS full_name FROM Person
এটি Person ক্লাসের name এবং surname প্রপার্টিকে একত্রিত করে একটি নতুন ফিল্ড full_name তৈরি করবে।
৩. কন্ডিশনাল ফাংশন (Conditional Functions)
কন্ডিশনাল ফাংশন ব্যবহার করে আপনি নির্দিষ্ট শর্তে ডেটা প্রক্রিয়া করতে পারেন। যেমন, IF, CASE ইত্যাদি।
উদাহরণ: IF ফাংশন
SELECT name, IF(age > 18, 'Adult', 'Minor') AS age_group FROM Person
এটি Person ক্লাস থেকে name এবং বয়স অনুযায়ী age_group তৈরি করবে, যেখানে ১৮ এর বেশি বয়স হলে Adult এবং কম হলে Minor প্রদর্শিত হবে।
৪. ডেটা টাইপ কনভার্সন ফাংশন
ওরিয়েন্টডিবি ডেটা টাইপ কনভার্সনের জন্য বিভিন্ন ফাংশন প্রদান করে, যেমন TOSTRING, TOINT, TOFLOAT ইত্যাদি।
উদাহরণ: TOINT ফাংশন
SELECT TOINT(age) FROM Person
এটি Person ক্লাসের age প্রপার্টি থেকে ডেটা ইনপুট হিসেবে গ্রহণ করে তা পূর্ণসংখ্যায় রূপান্তর করবে।
৫. বিশেষ ফাংশন (Special Functions)
ক. UUID ফাংশন
SELECT UUID() FROM Person
এটি একটি ইউনিক ইউইউআইডি (UUID) জেনারেট করবে।
খ. NOW ফাংশন
SELECT NOW() FROM Person
এটি বর্তমান সময় এবং তারিখ রিটার্ন করবে।
সারাংশ
Subqueries এবং Functions ওরিয়েন্টডিবি তে জটিল কুয়েরি তৈরি এবং কার্যকর ডেটাবেস ম্যানিপুলেশন প্রক্রিয়া সহজ করে তোলে। Subqueries ব্যবহার করে আপনি একটি কুয়েরির ভিতরে অন্য কুয়েরি যুক্ত করে ডেটা প্রক্রিয়া করতে পারেন, এবং Functions ব্যবহার করে আপনি ডেটা ট্রান্সফরমেশন, অ্যাগ্রিগেশন এবং কন্ডিশনাল অপারেশন করতে পারেন। এই দুটি বৈশিষ্ট্য একত্রে ব্যবহার করে আপনি ডেটাবেস থেকে জটিল ডেটা বিশ্লেষণ, ফিল্টারিং এবং প্রক্রিয়াকরণ করতে সক্ষম হন।
Read more