গ্রাফকিউএল (GraphQL) একটি শক্তিশালী API query ভাষা যা ডেটা রিড (Query), ডেটা আপডেট (Mutation), এবং রিয়েল-টাইম ডেটা আপডেট (Subscription) পরিচালনা করতে সহায়ক। এগুলি GraphQL এর মূল কম্পোনেন্ট, যা সার্ভার এবং ক্লায়েন্টের মধ্যে ডেটা আদান-প্রদান প্রক্রিয়া সহজ ও কার্যকর করে তোলে। এখানে এই তিনটি মূল কম্পোনেন্টের পরিচিতি দেওয়া হলো:
Query: ডেটা পড়া (Reading Data)
Query হলো GraphQL-এর মাধ্যমে সার্ভার থেকে ডেটা পড়ার জন্য ব্যবহৃত এক ধরণের কুয়েরি। ক্লায়েন্ট একটি নির্দিষ্ট কুয়েরি পাঠিয়ে সার্ভার থেকে নির্দিষ্ট ডেটা সংগ্রহ করে, যেখানে শুধু প্রয়োজনীয় ডেটা ফেরত আসে, অতিরিক্ত কোনো ডেটা ফেরত আসে না।
বিশেষত্ব:
- সুনির্দিষ্ট ডেটা চাওয়া: ক্লায়েন্ট নির্দিষ্ট ফিল্ড ও সম্পর্কিত ডেটা চাওয়ার মাধ্যমে শুধুমাত্র প্রয়োজনীয় ডেটাই পায়।
- হায়ারার্কিক্যাল ডেটা: Query-এ ডেটার হায়ারার্কি বা সম্পর্ক সহজে বোঝানো যায়, যেমন একাধিক সম্পর্কিত তথ্য একসাথে পাওয়া।
উদাহরণ:
query {
user(id: 1) {
name
email
}
}
এখানে user এর id অনুযায়ী একটি ইউজারের নাম এবং ইমেইল ঠিকানা পাওয়া যাবে।
Mutation: ডেটা পরিবর্তন (Modifying Data)
Mutation GraphQL-এ ডেটা আপডেট বা পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি সার্ভার থেকে ডেটা তৈরি, আপডেট অথবা ডিলিট করতে ব্যবহৃত হয়। একে "Write Operation" বলা হয়। Mutation-এ সাধারণত ডেটা পরিবর্তন করা হয় এবং পরিবর্তন সফল হলে একটি নতুন ডেটা ফেরত আসে।
বিশেষত্ব:
- ডেটা আপডেট বা সৃষ্টি: Mutation-এ ক্লায়েন্ট ডেটা পরিবর্তন করতে পারবে, যেমন নতুন ডেটা তৈরি করা, বিদ্যমান ডেটা আপডেট করা বা ডেটা মুছে ফেলা।
- পার্শ্বপ্রতিক্রিয়া (Side Effects): Mutation এর ফলে সিস্টেমে কোনো পরিবর্তন হয়, যা ডেটার আপডেট বা ডিলিটের মাধ্যমে বাস্তবায়িত হয়।
উদাহরণ:
mutation {
createUser(name: "John Doe", email: "john@example.com") {
id
name
email
}
}
এখানে createUser মিউটেশন দ্বারা একটি নতুন ইউজার তৈরি করা হবে এবং তার id, name, ও email ফেরত আসবে।
Subscription: রিয়েল-টাইম ডেটা (Real-time Data)
Subscription হল একটি ফিচার যা গ্রাফকিউএল ক্লায়েন্টদের রিয়েল-টাইম ডেটা আপডেট পাওয়ার সুবিধা দেয়। এটি সার্ভারের থেকে ডেটার পরিবর্তন বা নতুন ডেটা আসলে ক্লায়েন্টকে অবহিত করার জন্য ব্যবহৃত হয়। সাধারণত এটি ইভেন্ট-ড্রিভেন অ্যাপ্লিকেশন যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ ফিড ইত্যাদিতে ব্যবহৃত হয়।
বিশেষত্ব:
- রিয়েল-টাইম আপডেট: ক্লায়েন্ট সার্ভারের কাছে সাবস্ক্রাইব করে এবং যখন কোনো পরিবর্তন হয়, তখন সার্ভার সেই পরিবর্তন বা নতুন ডেটা ক্লায়েন্টকে পাঠায়।
- অবিরত ডেটা প্রবাহ: সাবস্ক্রিপশন একটি দীর্ঘস্থায়ী কানেকশন ধরে রাখে, যার ফলে সার্ভার থেকে নতুন ডেটা আসতে থাকলে তা ক্লায়েন্ট পেতে থাকে।
উদাহরণ:
subscription {
newUserAdded {
id
name
email
}
}
এখানে newUserAdded সাবস্ক্রিপশনে ক্লায়েন্ট একটি নতুন ইউজার যুক্ত হলে তার তথ্য রিয়েল-টাইমে পাবে।
সারাংশ
GraphQL-এর Query, Mutation, এবং Subscription হলো তিনটি মূল অপারেশন যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদানকে সহজ, নমনীয় এবং দক্ষ করে তোলে। Query ডেটা পড়তে ব্যবহৃত হয়, Mutation ডেটা আপডেট করতে ব্যবহৃত হয়, এবং Subscription রিয়েল-টাইম ডেটা পরিবর্তনের জন্য ব্যবহৃত হয়। এগুলোর মাধ্যমে ক্লায়েন্টরা প্রয়োজনীয় ডেটা নির্দিষ্টভাবে চেয়ে নিতে পারে, সিস্টেমে পরিবর্তন করতে পারে এবং রিয়েল-টাইম তথ্য পেতে পারে।
Read more