গ্রাফকিউএল (GraphQL) এর মধ্যে Subscription একটি অত্যন্ত শক্তিশালী ফিচার যা রিয়েল-টাইম ডেটা আপডেটের জন্য ব্যবহৃত হয়। সাধারণত, গ্রাফকিউএল কুয়েরি (query) এবং মিউটেশন (mutation) ডেটা পড়তে এবং আপডেট করতে ব্যবহৃত হয়, তবে Subscription একটি ক্লায়েন্টকে সার্ভারের সাথে সংযুক্ত রেখে ডেটার পরিবর্তনগুলি রিয়েল-টাইমে পাঠানোর জন্য ব্যবহৃত হয়। এটি খুবই গুরুত্বপূর্ণ যখন আপনি এমন অ্যাপ্লিকেশন তৈরি করছেন যেখানে ডেটার আপডেটের সাথে সাথে ব্যবহারকারীকে দ্রুত তথ্য জানানো প্রয়োজন, যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ স্ট্যাটাস, বা ট্র্যাকিং সিস্টেম।
Subscription কী?
Subscription হল একটি গ্রাফকিউএল অপারেশন যা ক্লায়েন্টকে সার্ভারের কাছে সাবস্ক্রাইব করার সুযোগ দেয়, যাতে সার্ভার কোন ডেটার পরিবর্তন ঘটালে তা ক্লায়েন্টের কাছে রিয়েল-টাইমে পাঠাতে পারে। এটি মূলত WebSocket প্রযুক্তির মাধ্যমে কাজ করে, যেখানে ক্লায়েন্ট সার্ভারের সাথে একটি ওপেন কানেকশন বজায় রাখে এবং সার্ভার যখনই ডেটাতে কোনো পরিবর্তন ঘটায়, তখন তা ক্লায়েন্টকে পাঠায়।
Subscription এর কাঠামো (Structure of Subscription)
GraphQL-এর Subscription এর কাঠামো Query এবং Mutation এর মতোই, তবে এখানে subscription কিওয়ার্ড ব্যবহার করা হয়। যেমন:
subscription {
messageAdded {
id
content
user {
name
}
}
}
এখানে:
subscriptionহলো মূল কিওয়ার্ড যা রিয়েল-টাইম ডেটা রিসিভ করার জন্য ব্যবহৃত হয়।messageAddedহল সাবস্ক্রিপশনটি, যেটি সার্ভার থেকে একটি নতুন মেসেজ আসলে সেই মেসেজের বিস্তারিত পাঠাবে।- এর মধ্যে
id,content, এবংuserফিল্ডগুলো ব্যবহারকারী এবং মেসেজের তথ্য পেতে ব্যবহৃত হয়।
Subscription কেন প্রয়োজন?
- রিয়েল-টাইম ডেটা আপডেট (Real-time Data Updates):
Subscription-এর মাধ্যমে, ক্লায়েন্ট সার্ভারের সাথে সংযুক্ত থাকে এবং যখনই কোনো ডেটা পরিবর্তন হয় (যেমন নতুন মেসেজ আসা, স্ট্যাটাস আপডেট, ইত্যাদি), সার্ভার তা স্বয়ংক্রিয়ভাবে ক্লায়েন্টে পাঠায়। এটি চ্যাট অ্যাপ্লিকেশন, লাইভ সিকিউরিটি মনিটরিং সিস্টেম বা ফাইনান্স অ্যাপ্লিকেশনে খুবই দরকারী। - ব্লকিং বা পোলিংয়ের পরিবর্তে কার্যকরী পদ্ধতি (Efficient Alternative to Polling):
আগে, রিয়েল-টাইম ডেটা পেতে পোলিং প্রযুক্তি ব্যবহৃত হত, যেখানে ক্লায়েন্ট নিয়মিত সার্ভারে রিকোয়েস্ট পাঠাত এবং সার্ভার তার কাছে ডেটা পাঠাত। তবে এটি ব্যান্ডউইথ এবং সার্ভারের উপর অতিরিক্ত চাপ সৃষ্টি করে। Subscription এর মাধ্যমে শুধুমাত্র পরিবর্তন হলে ডেটা পাঠানো হয়, ফলে এটি অনেক বেশি কার্যকরী। - ইভেন্ট-ড্রিভেন অ্যাপ্লিকেশন (Event-driven Applications):
Subscription একটি ইভেন্ট-ড্রিভেন আর্কিটেকচারের জন্য আদর্শ, যেখানে সার্ভারের ডেটার পরিবর্তনের উপর নির্ভরশীল। উদাহরণস্বরূপ, একটি রিয়েল-টাইম গেমে স্কোর পরিবর্তন, বা একটি সোসিয়াল মিডিয়া প্ল্যাটফর্মে নতুন লাইক বা কমেন্ট আসা, এই সমস্ত ক্ষেত্রে Subscription ব্যবহার করা হয়। - ক্লায়েন্ট এবং সার্ভারের মধ্যে দীর্ঘস্থায়ী কানেকশন (Long-lived Client-Server Connection):
Subscription দীর্ঘস্থায়ী কানেকশন তৈরি করে, যার ফলে সার্ভার এবং ক্লায়েন্টের মধ্যে একটি ওপেন এবং ধারাবাহিক যোগাযোগ বজায় থাকে। এটি ফাস্ট, কমপ্লেক্স, এবং ইন্টারঅ্যাকটিভ সিস্টেম তৈরিতে গুরুত্বপূর্ণ।
Subscription কিভাবে কাজ করে?
- ক্লায়েন্ট সাবস্ক্রাইব করে:
প্রথমে, ক্লায়েন্ট সার্ভারে একটি সাবস্ক্রিপশন রিকোয়েস্ট পাঠায়। এই রিকোয়েস্টে ক্লায়েন্ট জানায় যে, তারা কোন ডেটা পরিবর্তন বা ইভেন্টের জন্য সাবস্ক্রাইব করতে চায়। - সার্ভার ইভেন্টগুলো পাঠায়:
সার্ভার ক্লায়েন্টের সাবস্ক্রিপশন রিকোয়েস্ট গ্রহণ করার পর, সার্ভার সমস্ত পরিবর্তনগুলি ট্র্যাক করতে থাকে। যখনই কোনও ইভেন্ট ঘটে (যেমন ডেটা আপডেট), সার্ভার সেই ইভেন্ট বা পরিবর্তন ক্লায়েন্টকে পাঠায়। - ক্লায়েন্ট রিয়েল-টাইমে ডেটা গ্রহণ করে:
ক্লায়েন্ট সার্ভার থেকে ইভেন্ট পেলে তা রিয়েল-টাইমে অ্যাপ্লিকেশনে প্রদর্শন করা হয়, যা ব্যবহারকারীকে অবিলম্বে তথ্য জানাতে সহায়ক।
Subscription এর ব্যবহার উদাহরণ
ধরা যাক, একটি চ্যাট অ্যাপ্লিকেশনে নতুন মেসেজ আসা হলে ক্লায়েন্ট যাতে তা রিয়েল-টাইমে দেখতে পারে, তখন Subscription ব্যবহার করা যেতে পারে। একটি উদাহরণ:
subscription {
newMessage(roomId: "123") {
id
content
sender {
name
}
}
}
এখানে:
newMessage(roomId: "123")সাবস্ক্রিপশন, যা নতুন মেসেজের জন্য সাবস্ক্রাইব করছে নির্দিষ্ট চ্যাট রুমের জন্য।- যখনই ওই রুমে নতুন মেসেজ আসবে, ক্লায়েন্ট তা রিয়েল-টাইমে পাবেন এবং দেখাতে পারবেন।
সারাংশ
GraphQL Subscription একটি অত্যন্ত কার্যকরী ফিচার যা রিয়েল-টাইম ডেটা আপডেটের জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি ওপেন কানেকশন বজায় রাখে এবং যখনই ডেটাতে কোনো পরিবর্তন ঘটে, সার্ভার সেই পরিবর্তনটি ক্লায়েন্টে রিয়েল-টাইমে পাঠায়। Subscription এর মাধ্যমে পোলিংয়ের প্রয়োজনীয়তা কমে যায় এবং ডেটার দ্রুত আপডেট নিশ্চিত হয়, যা বিশেষত চ্যাট অ্যাপ্লিকেশন, লাইভ ট্র্যাকিং, এবং অন্যান্য রিয়েল-টাইম সিস্টেমের জন্য অপরিহার্য।
Read more