SOQL (Salesforce Object Query Language) এবং SOSL (Salesforce Object Search Language) হলো Salesforce প্ল্যাটফর্মে ডেটা অনুসন্ধান এবং রিট্রাইভ করার জন্য ব্যবহৃত দুটি প্রধান ভাষা। SOQL ব্যবহার করে নির্দিষ্ট অবজেক্ট থেকে রেকর্ডগুলি ফিল্টার করা যায়, যেখানে SOSL ব্যবহার করে একাধিক অবজেক্টে একসাথে অনুসন্ধান চালানো যায়।
SOQL (Salesforce Object Query Language)
SOQL হলো Salesforce প্ল্যাটফর্মের একটি কুয়েরি ভাষা যা Salesforce ডেটাবেজ থেকে রেকর্ড রিট্রাইভ করার জন্য ব্যবহৃত হয়। এটি SQL (Structured Query Language)-এর মতোই কাজ করে, তবে এটি Salesforce-এর অবজেক্ট এবং ফিল্ডের জন্য কাস্টমাইজড।
SOQL-এর বৈশিষ্ট্য:
- নির্দিষ্ট অবজেক্টে ফিল্টার করা ডেটা রিট্রাইভ: SOQL শুধুমাত্র নির্দিষ্ট অবজেক্ট থেকে ডেটা রিট্রাইভ করতে ব্যবহৃত হয়।
- একাধিক কন্ডিশন ব্যবহার:
WHEREএবংORDER BYকন্ডিশন ব্যবহার করে রেকর্ড ফিল্টার এবং সাজানো যায়। - Relationships সমর্থন: Parent-to-Child এবং Child-to-Parent সম্পর্কিত রেকর্ড কুয়েরি করা যায়।
SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field
SOQL উদাহরণ:
বেসিক কুয়েরি: Account অবজেক্ট থেকে Name এবং Industry ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account অবজেক্ট থেকে Industry যদি Technology হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account থেকে Contact সম্পর্কিত রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
SOSL (Salesforce Object Search Language)
SOSL হলো Salesforce-এর একটি সার্চ ভাষা যা একাধিক অবজেক্টে একসাথে অনুসন্ধান করতে ব্যবহৃত হয়। SOSL ব্যবহার করে একটি কুয়েরির মাধ্যমে Salesforce ডেটাবেজে একাধিক অবজেক্টের উপর ভিত্তি করে নির্দিষ্ট টেক্সট সার্চ করা যায়।
SOSL-এর বৈশিষ্ট্য:
- একাধিক অবজেক্টে সার্চ: SOSL একসাথে একাধিক অবজেক্টে সার্চ করতে ব্যবহৃত হয়।
- FULL TEXT সার্চিং: SOSL সাধারণত টেক্সট এবং ফিল্ড ভ্যালুতে সম্পূর্ণ সার্চিংয়ের জন্য ব্যবহৃত হয়।
- LIMIT ব্যবহার: কুয়েরির ফলাফল সীমিত করতে
LIMITব্যবহার করা যায়।
SOSL Syntax:
FIND 'searchText' IN ALL FIELDS RETURNING Object (fields)
SOSL উদাহরণ:
বেসিক সার্চ: Account এবং Contact অবজেক্টে Acme শব্দ সার্চ করা:
FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)
LIMIT ব্যবহার: সর্বাধিক পাঁচটি ফলাফল রিটার্ন করা:
FIND 'Technology' IN ALL FIELDS RETURNING Account(Name) LIMIT 5
সর্বাধিক মিলে যাওয়া সার্চ: একটি টেক্সট সার্চ যা সকল অবজেক্টের সব ফিল্ডে Smith শব্দ খুঁজে বের করবে:
FIND 'Smith' IN ALL FIELDS
SOQL এবং SOSL-এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | SOQL | SOSL |
|---|---|---|
| ব্যবহার | নির্দিষ্ট অবজেক্ট থেকে নির্দিষ্ট রেকর্ড রিট্রাইভ করতে ব্যবহৃত | একাধিক অবজেক্টে টেক্সট সার্চ করতে ব্যবহৃত |
| কুয়েরি ফিল্টারিং | WHERE, ORDER BY ব্যবহার করে ফলাফল ফিল্টার করা যায় | কেবল টেক্সট সার্চ; কোনো WHERE বা ORDER BY নেই |
| Relationships | Parent-to-Child এবং Child-to-Parent সম্পর্ক সমর্থন করে | Relationships সমর্থন করে না |
| রিটার্ন টাইপ | নির্দিষ্ট অবজেক্ট থেকে নির্দিষ্ট ফিল্ডের মান রিটার্ন করে | একসাথে একাধিক অবজেক্টে টেক্সট ফিল্ড রিটার্ন করে |
| LIMIT ব্যবহার | সমর্থন করে | সমর্থন করে |
SOQL এবং SOSL-এর Best Practices
- Minimal Fields নির্বাচন করা: প্রয়োজনের অতিরিক্ত ফিল্ড রিট্রাইভ না করে প্রয়োজনীয় ফিল্ডগুলো নির্বাচন করা।
- LIMIT ব্যবহার করা: অতিরিক্ত রেকর্ড রিট্রাইভ না করে
LIMITব্যবহার করে ফলাফল সীমিত রাখা। - সঠিক WHERE কন্ডিশন ব্যবহার: SOQL কুয়েরিতে সঠিক
WHEREকন্ডিশন ব্যবহার করা, যাতে অপ্রয়োজনীয় রেকর্ড বাদ দেওয়া যায়। - ব্যাচ প্রসেসিং: অধিক পরিমাণে ডেটা রিট্রাইভের জন্য SOQL ব্যাচ প্রসেসিং ব্যবহার করা, যা গভর্নর লিমিট অতিক্রম না করে।
- SOSL টেক্সট সার্চ সংযত ব্যবহার করা: শুধুমাত্র প্রয়োজনীয় ক্ষেত্রে SOSL ব্যবহার করা, কারণ এটি অতিরিক্ত প্রসেসিং করে।
সংক্ষেপে SOQL এবং SOSL
- SOQL: নির্দিষ্ট অবজেক্ট থেকে নির্দিষ্ট রেকর্ড রিট্রাইভ করতে ব্যবহৃত হয়, যেখানে ফিল্টার এবং রিলেশনশিপ সমর্থন করে।
- SOSL: একসাথে একাধিক অবজেক্টে টেক্সট সার্চ করতে ব্যবহৃত হয়, যেখানে সাধারণত টেক্সট সার্চ ফিল্ড ব্যবহার করা হয়।
SOQL এবং SOSL ব্যবহার করে Salesforce ডেটাবেজের বিভিন্ন অবজেক্ট থেকে ডেটা রিট্রাইভ এবং সার্চিং কার্যকরীভাবে সম্পন্ন করা যায়।
SOQL (Salesforce Object Query Language) হলো Salesforce-এর একটি কুয়েরি ভাষা, যা Salesforce ডেটাবেজে থাকা বিভিন্ন অবজেক্ট থেকে রেকর্ড সংগ্রহ করতে ব্যবহৃত হয়। SOQL অনেকটা SQL-এর মতো কাজ করে, তবে এটি Salesforce এর অবজেক্ট এবং ডেটা কাঠামোর জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
SOQL এর মৌলিক ধারণা
SOQL ব্যবহার করে Salesforce ডেটাবেজে থাকা অবজেক্ট যেমন Account, Contact, Opportunity ইত্যাদি থেকে ডেটা সহজেই পুনরুদ্ধার করা যায়। SOQL কুয়েরি মূলত SELECT স্টেটমেন্টের মাধ্যমে একটি নির্দিষ্ট অবজেক্টের ফিল্ড থেকে ডেটা নিয়ে আসে এবং WHERE, ORDER BY, এবং LIMIT এর মতো ক্লজ ব্যবহার করে ডেটা ফিল্টার এবং সাজানো যায়।
SOQL সাধারণত Apex ক্লাস, ট্রিগার, এবং Visualforce পেজের মধ্যে ব্যবহৃত হয়, যেখানে ডেটা অনুসন্ধান এবং পুনরুদ্ধারের প্রয়োজন হয়।
SOQL এর প্রধান বৈশিষ্ট্যসমূহ
SELECT স্টেটমেন্ট: SOQL-এ SELECT স্টেটমেন্ট ব্যবহার করে নির্দিষ্ট অবজেক্টের ফিল্ড থেকে ডেটা আনা হয়।
WHERE ক্লজ: WHERE ক্লজ ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা ফিল্টার করা যায়।
ORDER BY: ORDER BY ক্লজ ব্যবহার করে রেকর্ডগুলোকে বর্ধমান বা হ্রাসমান ক্রমে সাজানো যায়।
LIMIT: LIMIT ক্লজ ব্যবহার করে কুয়েরিতে নির্দিষ্ট সংখ্যক রেকর্ড ফেরত আনা যায়।
Relationship Query: SOQL এর মাধ্যমে Parent-Child এবং Child-Parent সম্পর্কিত অবজেক্টের মধ্যে কুয়েরি চালানো সম্ভব।
Aggregate Functions: SOQL Aggregate ফাংশন (যেমন: COUNT, AVG, MIN, MAX, SUM) সাপোর্ট করে, যা রিপোর্টিং এবং ডেটা অ্যানালাইসিসে সহায়ক।
SOQL এর সাধারণ সিনট্যাক্স
SELECT field1, field2 FROM ObjectName WHERE condition ORDER BY field LIMIT number
- field1, field2: যে ফিল্ডগুলো থেকে ডেটা নিতে হবে।
- ObjectName: যে অবজেক্ট থেকে ডেটা সংগ্রহ করা হবে।
- condition: নির্দিষ্ট শর্ত বা ক্রাইটেরিয়া।
- ORDER BY field: ফিল্ডের উপর ভিত্তি করে সাজানো।
- LIMIT number: কতগুলো রেকর্ড রিটার্ন করবে তা নির্ধারণ করে।
SOQL এর কিছু উদাহরণ
উদাহরণ ১: সহজ SOQL কুয়েরি
নিচের কুয়েরিতে Account অবজেক্টের Id এবং Name ফিল্ড থেকে ডেটা আনা হয়েছে।
List<Account> accounts = [SELECT Id, Name FROM Account];
- এখানে
Accountঅবজেক্টের সব রেকর্ডের Id এবং Name সংগ্রহ করা হয়েছে।
উদাহরণ ২: WHERE ক্লজ ব্যবহার
নিচের কুয়েরিতে Industry ফিল্ডের মান 'Technology' এমন সব Account রেকর্ড পুনরুদ্ধার করা হয়েছে।
List<Account> techAccounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
- এখানে কেবলমাত্র Industry = 'Technology' এমন Account রেকর্ডগুলো সংগ্রহ করা হয়েছে।
উদাহরণ ৩: ORDER BY এবং LIMIT ব্যবহার
নিচের কুয়েরিতে Account অবজেক্টের Name অনুযায়ী সাজানো হয়েছে এবং শুধুমাত্র প্রথম পাঁচটি রেকর্ড রিটার্ন করা হয়েছে।
List<Account> sortedAccounts = [SELECT Id, Name FROM Account ORDER BY Name LIMIT 5];
- এখানে Name ফিল্ড অনুযায়ী রেকর্ডগুলোকে সাজানো হয়েছে এবং প্রথম পাঁচটি রেকর্ড সংগ্রহ করা হয়েছে।
উদাহরণ ৪: Parent-Child Relationship Query
Parent-Child সম্পর্কিত কুয়েরিতে, এক Parent অবজেক্ট থেকে তার Child অবজেক্টের রেকর্ডগুলো সংগ্রহ করা যায়। নিচে Account এবং Contact এর Parent-Child কুয়েরি উদাহরণ দেয়া হলো।
List<Account> accountsWithContacts = [SELECT Id, Name, (SELECT Id, FirstName, LastName FROM Contacts) FROM Account];
- এখানে প্রতিটি Account রেকর্ডের সাথে সংশ্লিষ্ট Contact রেকর্ডগুলো আনা হয়েছে।
উদাহরণ ৫: Aggregate Functions ব্যবহার
Aggregate ফাংশন ব্যবহার করে SOQL কুয়েরি দ্বারা গাণিতিক অপারেশন সম্পন্ন করা যায়, যেমন COUNT।
Integer totalAccounts = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
- এখানে
Industryফিল্ডে 'Technology' থাকা Account রেকর্ডের সংখ্যা গণনা করা হয়েছে।
SOQL এর ব্যবহার ক্ষেত্রে
SOQL বিভিন্ন ক্ষেত্রে ব্যবহার করা হয়, যেমন:
ডেটা অনুসন্ধান এবং প্রদর্শন: Apex ক্লাস বা ট্রিগার থেকে ডেটা সংগ্রহ করে প্রয়োজনীয় ডেটা প্রদর্শনে SOQL কুয়েরি করা যায়।
রিপোর্টিং এবং ডেটা অ্যানালাইসিস: SOQL এর মাধ্যমে Aggregate ফাংশন ব্যবহার করে রিপোর্ট এবং ডেটা অ্যানালাইসিসে সহায়তা করা যায়।
Parent-Child সম্পর্কিত ডেটা পুনরুদ্ধার: SOQL Parent-Child সম্পর্কিত কুয়েরি সাপোর্ট করে, যা সম্পর্কিত ডেটা সংগ্রহে সহায়ক।
SOQL এর সুবিধা:
সহজ এবং দ্রুত অনুসন্ধান: SOQL সহজেই Salesforce ডেটাবেজে কুয়েরি চালাতে পারে, যা প্রয়োজনীয় ডেটা দ্রুত ফিরে পেতে সাহায্য করে।
Relationship Querying: Parent-Child এবং Child-Parent সম্পর্কিত ডেটা সংগ্রহ করা সম্ভব, যা ডেটার সম্বন্ধ বুঝতে সহায়ক।
রিপোর্টিং এবং অ্যানালাইসিসে সহায়ক: SOQL-এ Aggregate ফাংশন ব্যবহার করে বিভিন্ন ধরণের রিপোর্ট তৈরি এবং ডেটা বিশ্লেষণ করা যায়।
SOQL এবং SOSL এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | SOQL | SOSL |
|---|---|---|
| ব্যবহার | নির্দিষ্ট অবজেক্টের রেকর্ড পুনরুদ্ধারে | একাধিক অবজেক্টে কী-ওয়ার্ড সার্চে |
| কুয়েরি ভাষা | SELECT ব্যবহার করে | FIND ব্যবহার করে |
| Aggregate Functions | সমর্থিত | সমর্থিত নয় |
| Relationship Queries | সমর্থিত | সমর্থিত নয় |
সারসংক্ষেপ:
SOQL হলো একটি কুয়েরি ভাষা, যা Salesforce প্ল্যাটফর্মে ডেটা সংগ্রহ, ফিল্টারিং, এবং সম্পর্কিত অবজেক্টের ডেটা সংগ্রহে সহায়ক। এটি সহজেই Parent-Child সম্পর্কিত কুয়েরি এবং Aggregate ফাংশন সাপোর্ট করে, যা ডেটা বিশ্লেষণ এবং রিপোর্টিংয়ের জন্য কার্যকর। Salesforce ডেটাবেজে ডেটা অনুসন্ধান ও প্রক্রিয়াকরণে SOQL একটি অত্যন্ত গুরুত্বপূর্ণ টুল।
SOQL (Salesforce Object Query Language) Salesforce প্ল্যাটফর্মে ডেটা রিট্রাইভ করার জন্য ব্যবহৃত একটি কুয়েরি ভাষা। এটি নির্দিষ্ট অবজেক্টের নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে ডেটা অনুসন্ধান ও রিট্রাইভ করতে সাহায্য করে। SOQL এর সিনট্যাক্স SQL এর মতো, তবে এটি Salesforce-এর অবজেক্ট ও ফিল্ড কাঠামোর সাথে সামঞ্জস্য রেখে তৈরি করা হয়েছে।
SOQL Syntax
SOQL কুয়েরি লেখার জন্য একটি নির্দিষ্ট সিনট্যাক্স অনুসরণ করতে হয়। সাধারণভাবে, একটি SOQL কুয়েরি নির্দিষ্ট অবজেক্টের কিছু নির্দিষ্ট ফিল্ড এবং শর্ত সাপেক্ষে রেকর্ড রিট্রাইভ করে।
SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
SOQL Syntax-এর মূল অংশগুলো
- SELECT: এই অংশে রেকর্ড থেকে যে যে ফিল্ডগুলো রিট্রাইভ করতে চান সেগুলো উল্লেখ করা হয়।
- FROM: যে অবজেক্ট থেকে ডেটা রিট্রাইভ করতে চান তার নাম উল্লেখ করা হয়।
- WHERE (ঐচ্ছিক): শর্ত উল্লেখ করা হয়, যা রেকর্ড ফিল্টার করার জন্য ব্যবহৃত হয়।
- ORDER BY (ঐচ্ছিক): রেকর্ডের মানের ভিত্তিতে সাজানো হয়।
- LIMIT (ঐচ্ছিক): কুয়েরি থেকে রিটার্নকৃত রেকর্ডের সংখ্যা সীমিত করে।
SOQL উদাহরণসমূহ:
বেসিক কুয়েরি: Account অবজেক্ট থেকে Name এবং Industry ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account অবজেক্ট থেকে Industry যদি Technology হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account থেকে সম্পর্কিত Contact রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
Child-to-Parent Relationship: Contact থেকে সম্পর্কিত Account রেকর্ড রিট্রাইভ করা:
SELECT LastName, Account.Name FROM Contact
Query Methods
SOQL কুয়েরি এক্সিকিউট করার জন্য Apex-এ কিছু কুয়েরি মেথড রয়েছে, যা সাধারণত SOQL স্টেটমেন্টের সাথে যুক্ত থাকে। এগুলো Salesforce ডেটাবেজে কুয়েরি চালাতে সাহায্য করে।
১. Database.query(queryString)
Database.query() মেথডটি একটি ডায়নামিক SOQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়, যেখানে কুয়েরি স্ট্রিং আকারে প্রদান করা হয়। ডায়নামিক কুয়েরি ব্যবহার করে কুয়েরি স্ট্রিং পরিবর্তন করা যায় এবং নির্দিষ্ট শর্ত বা ভ্যারিয়েবলের উপর ভিত্তি করে কুয়েরি চালানো সম্ভব।
উদাহরণ:
String query = 'SELECT Name FROM Account WHERE Industry = \'Technology\'';
List<Account> accounts = Database.query(query);
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
২. SOQL For Loop
SOQL For Loop ব্যবহার করে একাধিক রেকর্ড একবারে রিট্রাইভ করা এবং ইটেমগুলো লুপের মাধ্যমে প্রসেস করা যায়। এটি SOQL এর গভর্নর লিমিট মেনে বড় পরিমাণের ডেটা হ্যান্ডল করতে সাহায্য করে।
Syntax:
for (List<SObject> variable : [SOQL query]) {
// Process each batch of records
}
উদাহরণ:
for (List<Account> accountList : [SELECT Name FROM Account]) {
for (Account acc : accountList) {
System.debug('Account Name: ' + acc.Name);
}
}
৩. getQueryLocator(query)
getQueryLocator() মেথডটি ব্যাপক পরিমাণের ডেটা প্রসেস করার জন্য ব্যবহার করা হয়। এটি ব্যাচ প্রসেসিং এবং পেজিনেশনের জন্য কার্যকরী।
উদাহরণ:
Database.QueryLocator queryLocator = Database.getQueryLocator('SELECT Id, Name FROM Account');
৪. COUNT() ফাংশন
COUNT() ফাংশন ব্যবহার করে নির্দিষ্ট শর্তে মোট রেকর্ড সংখ্যা গণনা করা হয়।
উদাহরণ:
Integer accountCount = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
System.debug('Total Technology Accounts: ' + accountCount);
৫. Aggregate Functions
SOQL-এ SUM(), AVG(), MIN(), MAX() ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করে গাণিতিক পরিসংখ্যান রিট্রাইভ করা যায়।
উদাহরণ:
AggregateResult[] results = [SELECT SUM(AnnualRevenue) FROM Account WHERE Industry = 'Technology'];
System.debug('Total Annual Revenue: ' + results[0].get('expr0'));
SOQL এবং Query Methods-এর Best Practices
- Selective SOQL Query লেখা: প্রয়োজনের অতিরিক্ত ফিল্ড রিট্রাইভ না করে নির্দিষ্ট ফিল্ডগুলো নির্বাচন করা।
- LIMIT ব্যবহার করা: গভর্নর লিমিট অতিক্রম না করার জন্য এবং অতিরিক্ত রেকর্ড রিট্রাইভ না করে
LIMITব্যবহার করা। - Bulkification নিশ্চিত করা: SOQL লুপের ভিতরে না রেখে বাইরের লুপে ব্যবহার করা, যাতে গভর্নর লিমিট অতিক্রম না হয়।
- Dynamic SOQL Query ব্যবহার: প্রয়োজনে
Database.query()ব্যবহার করে ডায়নামিক SOQL তৈরি করা। - Indexes ব্যবহার করা: যেসব ফিল্ডে প্রায়শই কুয়েরি চালানো হয়, সেখানে ইন্ডেক্সিং ব্যবহার করা।
সংক্ষেপে
- SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number - Query Methods:
Database.query(),SOQL For Loop,getQueryLocator(),COUNT(), এবং অ্যাগ্রিগেট ফাংশন।
SOQL এবং Query Methods ব্যবহার করে Apex-এ Salesforce ডেটাবেজ থেকে বিভিন্ন ধরনের ডেটা রিট্রাইভ এবং প্রক্রিয়াকরণ করা যায়, যা ব্যবসায়িক প্রক্রিয়ায় অত্যন্ত সহায়ক।
SOSL (Salesforce Object Search Language) Salesforce প্ল্যাটফর্মের একটি সার্চ ভাষা, যা একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ করতে ব্যবহৃত হয়। SOSL অনেকটা সার্চ ইঞ্জিনের মতো কাজ করে এবং এটি মূলত কী-ওয়ার্ড দিয়ে বিভিন্ন অবজেক্টের এক বা একাধিক ফিল্ডে সার্চ করে সংশ্লিষ্ট রেকর্ডগুলো রিটার্ন করে।
SOSL এর মৌলিক ধারণা
SOSL সাধারণত FIND কিওয়ার্ড ব্যবহার করে সার্চ চালায়। SOSL কুয়েরিতে নির্দিষ্ট কী-ওয়ার্ড বা টার্ম দিয়ে একাধিক অবজেক্টের মধ্যে সার্চ করা যায়। এটি একাধিক অবজেক্ট এবং ফিল্ডে দ্রুত সার্চ করার জন্য খুবই কার্যকর, বিশেষ করে যখন নির্দিষ্ট অবজেক্ট বা ফিল্ডে দ্রুত কোনো তথ্য খুঁজে বের করতে হয়।
SOSL এর প্রধান বৈশিষ্ট্যসমূহ
- FIND কিওয়ার্ড: SOSL-এ FIND কিওয়ার্ড ব্যবহার করে সার্চ করা হয়।
- মাল্টি-অবজেক্ট সার্চ: SOSL-এ একাধিক অবজেক্টের বিভিন্ন ফিল্ডে একত্রে সার্চ চালানো যায়।
- IN ALL FIELDS: SOSL-এর মাধ্যমে অবজেক্টের সকল ফিল্ডে সার্চ করা সম্ভব।
- RETURNING ক্লজ: RETURNING ক্লজ ব্যবহার করে নির্দিষ্ট অবজেক্ট এবং ফিল্ড থেকে রেকর্ড রিটার্ন করা যায়।
- Wildcard Support: SOSL আংশিক কী-ওয়ার্ড সার্চ সাপোর্ট করে, যা ফিল্ডের মধ্যে মিল থাকা ডেটা খুঁজে বের করতে সহায়ক।
SOSL এর সাধারণ সিনট্যাক্স
FIND 'search_term' IN ALL FIELDS RETURNING ObjectName1(Field1, Field2), ObjectName2(Field1, Field2)
- search_term: সার্চ টার্ম বা কী-ওয়ার্ড যা অনুসন্ধান করা হবে।
- IN ALL FIELDS: অবজেক্টের সব ফিল্ডে সার্চ করার নির্দেশ।
- RETURNING ObjectName(Field1, Field2): নির্দিষ্ট অবজেক্ট এবং ফিল্ডে সার্চ করে রেকর্ড রিটার্ন করা।
SOSL এর উদাহরণ
উদাহরণ ১: একটি নির্দিষ্ট কী-ওয়ার্ড দিয়ে সার্চ করা
নিচের উদাহরণে, Contact এবং Account অবজেক্টে 'John' নামক কী-ওয়ার্ডের ভিত্তিতে সার্চ করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'John' IN ALL FIELDS RETURNING Contact(FirstName, LastName), Account(Name)];
- এখানে
Contactঅবজেক্টেরFirstName,LastNameএবংAccountঅবজেক্টেরNameফিল্ডে 'John' কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে।
উদাহরণ ২: Wildcard Character ব্যবহার করে SOSL সার্চ
SOSL-এ '*' ব্যবহার করে আংশিক মিলে থাকা ডেটা সার্চ করা যায়। নিচের উদাহরণে, 'Tech' দিয়ে শুরু হওয়া সমস্ত রেকর্ড সার্চ করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'Tech*' IN ALL FIELDS RETURNING Account(Name), Opportunity(Name)];
- এখানে
AccountএবংOpportunityঅবজেক্টের নামের মধ্যে 'Tech' দিয়ে শুরু হওয়া সমস্ত রেকর্ড সার্চ করা হয়েছে।
উদাহরণ ৩: স্পেসিফিক অবজেক্টের নির্দিষ্ট ফিল্ডে সার্চ করা
নিচে FIND কিওয়ার্ড ব্যবহার করে একটি নির্দিষ্ট কী-ওয়ার্ড দিয়ে Account অবজেক্টে সার্চ করা হয়েছে এবং শুধুমাত্র Name ফিল্ডে মিল থাকা রেকর্ডগুলো রিটার্ন করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'Software' IN NAME FIELDS RETURNING Account(Name)];
- এখানে
Accountঅবজেক্টের শুধুমাত্রNameফিল্ডে 'Software' কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে।
SOSL এবং SOQL এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | SOSL | SOQL |
|---|---|---|
| প্রধান উদ্দেশ্য | একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ | নির্দিষ্ট অবজেক্টে ডেটা কুয়েরি |
| কিওয়ার্ড | FIND | SELECT |
| Aggregate Functions | সমর্থিত নয় | সমর্থিত |
| Relationship Querying | সমর্থিত নয় | Parent-Child ও Child-Parent সম্পর্কিত কুয়েরি সমর্থিত |
| Wildcard Search | সমর্থিত | সমর্থিত নয় |
| ফিল্ড নির্দিষ্ট সার্চ | IN ALL FIELDS বা নির্দিষ্ট ফিল্ডে সার্চ করা যায় | নির্দিষ্ট ফিল্ডের ডেটা সংগ্রহ করা যায় |
SOSL এর ব্যবহার ক্ষেত্র
- মাল্টি-অবজেক্ট সার্চ: একাধিক অবজেক্টের বিভিন্ন ফিল্ডে একত্রে সার্চ করার প্রয়োজন হলে।
- কী-ওয়ার্ড ভিত্তিক সার্চ: কোনো নির্দিষ্ট কী-ওয়ার্ড দিয়ে ডেটাবেজে দ্রুত অনুসন্ধান চালাতে।
- রিপোর্ট এবং অ্যানালাইসিসে সহায়ক: ডেটার মধ্যে নির্দিষ্ট কী-ওয়ার্ড বা টার্মের উপস্থিতি যাচাই করতে।
SOSL এর সুবিধা
- দ্রুত সার্চ কার্যক্রম: SOSL দ্রুত সার্চ করার জন্য অত্যন্ত কার্যকর, বিশেষ করে যখন একাধিক অবজেক্টের বিভিন্ন ফিল্ডে সার্চ করতে হয়।
- মাল্টি-অবজেক্ট সার্চ সক্ষমতা: একাধিক অবজেক্টে একত্রে সার্চ করা যায়।
- Wildcard Character Support: আংশিক বা প্রারম্ভিক কী-ওয়ার্ড দিয়ে সার্চ করা যায়, যা ডেটা খুঁজে পেতে সহায়ক।
উদাহরণ কোড: SOSL ব্যবহার করে সার্চ এবং প্রিন্ট করা
নিচের উদাহরণে, SOSL ব্যবহার করে Account এবং Contact অবজেক্টে নির্দিষ্ট কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে এবং ফলাফল প্রিন্ট করা হয়েছে।
public class SOSLExample {
public static void searchRecords(String searchKeyword) {
// SOSL কুয়েরি
List<List<SObject>> searchResults = [FIND :searchKeyword IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)];
// Account রেকর্ড প্রিন্ট করা
List<Account> accounts = (List<Account>) searchResults[0];
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
// Contact রেকর্ড প্রিন্ট করা
List<Contact> contacts = (List<Contact>) searchResults[1];
for (Contact con : contacts) {
System.debug('Contact Name: ' + con.FirstName + ' ' + con.LastName);
}
}
}
- এখানে searchRecords মেথডের মাধ্যমে সার্চ টার্ম ইনপুট হিসেবে নিয়ে
AccountএবংContactঅবজেক্টে সার্চ চালানো হয়েছে এবং প্রাপ্ত রেকর্ডগুলোকে প্রিন্ট করা হয়েছে।
সারসংক্ষেপ:
SOSL হলো Salesforce-এর একটি সার্চ ভাষা, যা একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ চালায়। SOSL বিভিন্ন অবজেক্টের বিভিন্ন ফিল্ডে দ্রুত সার্চ করার জন্য উপযুক্ত এবং এটি Salesforce প্ল্যাটফর্মে মাল্টি-অবজেক্ট সার্চ এবং দ্রুত অনুসন্ধান কার্যক্রম সহজ করে তোলে।
Query এবং Search Performance Optimization Salesforce ডেটাবেজে কার্যকর ও দ্রুত অনুসন্ধানের জন্য প্রয়োজনীয়। একটি ভালোভাবে অপ্টিমাইজ করা কুয়েরি Salesforce গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াজাত করে এবং ব্যবহারকারীর জন্য দ্রুত ফলাফল প্রদান করে। এখানে কিছু গুরুত্বপূর্ণ কৌশল ও Best Practices আলোচনা করা হলো, যা SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়াতে সহায়ক।
১. Selective SOQL Query লেখা
SOQL কুয়েরিতে শুধু প্রয়োজনীয় ফিল্ডগুলো নির্বাচন করা উচিত। অপ্রয়োজনীয় ফিল্ডগুলো রিট্রাইভ না করলে কুয়েরির সময় ও মেমরি কম লাগে এবং গভর্নর লিমিট অতিক্রমের সম্ভাবনা হ্রাস পায়।
অপ্টিমাইজড উদাহরণ:
// শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো সিলেক্ট করা হয়েছে
SELECT Id, Name FROM Account WHERE Industry = 'Technology'
২. WHERE ক্লজে ইন্ডেক্সড ফিল্ড ব্যবহার
WHERE ক্লজে যেসব ফিল্ডে ইন্ডেক্স রয়েছে, সেগুলো ব্যবহার করলে কুয়েরি দ্রুত সম্পন্ন হয়। Salesforce ইন্ডেক্স সাধারণত প্রধান ফিল্ড, যেমন Id, Name, OwnerId ইত্যাদিতে থাকে। প্রয়োজনে কাস্টম ফিল্ডেও ইন্ডেক্সিং যুক্ত করা যায়।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE AccountNumber = '12345' // ইন্ডেক্সড ফিল্ড
৩. LIMIT ব্যবহার করা
বেশি ডেটা রিট্রাইভের জন্য LIMIT ব্যবহার করলে কুয়েরি গভর্নর লিমিটের মধ্যে থেকে ডেটা রিট্রাইভ করতে সক্ষম হয়। তাই প্রয়োজনের অতিরিক্ত ডেটা না নিয়ে নির্দিষ্ট সংখ্যক রেকর্ড সংগ্রহ করা উচিত।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE Industry = 'Technology' LIMIT 10
৪. SOSL কুয়েরি ব্যবহার করে একাধিক অবজেক্টে অনুসন্ধান
একাধিক অবজেক্টে অনুসন্ধান করার জন্য SOSL ব্যবহার করা উত্তম। SOSL ব্যবহার করে একাধিক অবজেক্টে দ্রুত সার্চ চালানো যায় এবং কুয়েরি সময় কম লাগে।
উদাহরণ:
FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)
৫. SOQL For Loop ব্যবহার
বেশি ডেটা প্রসেস করার জন্য SOQL For Loop ব্যবহার করা উচিত। এটি গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াকরণে সহায়ক।
অপ্টিমাইজড উদাহরণ:
for (List<Account> accList : [SELECT Id, Name FROM Account WHERE Industry = 'Technology']) {
for (Account acc : accList) {
System.debug('Account Name: ' + acc.Name);
}
}
৬. Avoiding “NOT” and “!=” Operators in WHERE Clause
NOT এবং != অপারেটর WHERE ক্লজে ব্যবহার করলে কুয়েরির পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। এর পরিবর্তে = বা IN অপারেটর ব্যবহার করা উচিত।
অপ্টিমাইজড উদাহরণ:
// এর পরিবর্তে
// SELECT Id FROM Account WHERE Industry != 'Technology'
// এটি ব্যবহার করুন
SELECT Id FROM Account WHERE Industry IN ('Finance', 'Health')
৭. অ্যাগ্রিগেট ফাংশন ব্যবহার করা
বড় ডেটাসেট থেকে গাণিতিক পরিসংখ্যান রিট্রাইভ করতে অ্যাগ্রিগেট ফাংশন (যেমন COUNT(), SUM(), AVG(), MAX(), MIN()) ব্যবহার করা উত্তম। এটি কুয়েরি পারফরম্যান্স বাড়াতে সহায়ক।
উদাহরণ:
SELECT COUNT() FROM Account WHERE Industry = 'Technology'
৮. Parent-to-Child এবং Child-to-Parent Relationship কুয়েরি ব্যবহার
Parent-to-Child এবং Child-to-Parent Relationship কুয়েরি ব্যবহার করলে ডেটা একত্রে রিট্রাইভ করা যায় এবং পৃথক কুয়েরি চালানোর প্রয়োজন হয় না, যা পারফরম্যান্স বাড়ায়।
উদাহরণ:
// Parent-to-Child
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
// Child-to-Parent
SELECT LastName, Account.Name FROM Contact
৯. Avoiding Hardcoded Ids
হার্ডকোড করা Id ব্যবহার না করে পরিবর্তনশীল প্যারামিটার ব্যবহার করা উচিত। এটি কোডকে পুনঃব্যবহারযোগ্য করে এবং অপ্টিমাইজেশনে সহায়ক হয়।
১০. Query Caching ব্যবহার করা
Frequently Used কুয়েরিগুলো সেভ করে Cache ব্যবহার করলে ডেটা রিট্রাইভ দ্রুত হয়। এটি কুয়েরি পারফরম্যান্স বাড়ায়।
১১. গভর্নর লিমিট বুঝে কুয়েরি লেখা
Salesforce গভর্নর লিমিট (যেমন DML Limit, SOQL Limit) অতিক্রম না করার জন্য সতর্ক হতে হবে। Bulkify করা এবং যেখানে সম্ভব LIMIT ব্যবহার করা গভর্নর লিমিট মেনে চলে কুয়েরি পারফরম্যান্স বাড়ায়।
১২. Apex CPU Time-এ অপ্টিমাইজড কোড
কুয়েরি লেখার সময় Apex CPU Time কম রাখতে কুয়েরি অপ্টিমাইজ করা উচিত। অতিরিক্ত লুপিং এড়িয়ে চলা এবং SOQL For Loop ব্যবহার করা উত্তম।
সংক্ষেপে Query এবং Search Performance Optimization
- Selective Fields নির্বাচন করুন: অতিরিক্ত ফিল্ড বাদ দিয়ে প্রয়োজনীয় ফিল্ড নির্বাচন করুন।
- LIMIT এবং WHERE ক্লজ ব্যবহার করুন: কম ডেটা প্রয়োজন হলে
LIMITএবং সঠিকWHEREক্লজ ব্যবহার করুন। - Bulkify কুয়েরি: SOQL For Loop ব্যবহার করে ডেটা প্রসেস করুন।
- SOSL কুয়েরি ব্যবহার করুন: একাধিক অবজেক্টে সার্চের জন্য SOSL ব্যবহার করুন।
- Aggregate Functions ব্যবহার করুন: বড় ডেটাসেট থেকে গাণিতিক মান রিট্রাইভ করার জন্য অ্যাগ্রিগেট ফাংশন ব্যবহার করুন।
- Query Caching এবং Dynamic Query ব্যবহার করুন: Frequently Used কুয়েরির জন্য Cache ব্যবহার করুন এবং Dynamic Query ব্যবহার করে ডেটা অনুসন্ধান কার্যকর করুন।
এসব কৌশল অনুসরণ করে SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়ানো যায়, যা Salesforce ডেটাবেজ ব্যবহারে দ্রুততা এবং কার্যকারিতা নিশ্চিত করে।
Read more