Let’s talk about Buffer and Streams of Node js

Mohiuddin Mazumder
2 min readJun 25, 2021

Streams এবং Buffer এই শব্দগুলার সাথে আমরা একটু একটু পরিচিত। কারণ, আমরা Youtube, Netflix এর মতো ভিডিও শেয়ারিং প্লাটফর্ম গুলাতে প্রতিদিন ঘুরাঘুরি করি। Youtube, Netflix এর মতো ভিডিও শেয়ারিং প্লাটফর্ম গুলাতে আমরা রিয়েলটাইম ভিডিও দেখতে পারি।
অন্যদিকে যদি বলি টরেন্ট থেকে ডাউনলোড করে একটা মুভি দেখব তখন কিন্তু আমি মভিটা রিয়েলটাইম দেখতে পারছি না। আমাকে মুভি ডাউনলোড শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে। এই buffer আর streams আমাদের রিয়েলটাইম ডাটা কনজিউম করার এক্সপেরিয়েন্স দেয়।
এখন node js এর buffer এবং stream নিয়ে কথা বলা যাক।
ইউটিউবে ভিডিও দেখার জন্য যখন প্লে বাটনে ক্লিক করা হয় তখন থেকে streaming শুরু হয়। এই stream এর মানে হচ্ছে প্রবাহ। মানে একটু একটু করে ডাটা প্রবাহিত হয়ে আমাদের দিকে আসছে। পুরোটা একবারে চলে আসছে না। এই যে একটু একটু করে ডাটা আসছে, এই ডাটা আসার প্রসেসটাকে বলে Stream বা প্রবাহ। আর অনেকগুলো Buffer এর সমষ্টি নিয়ে তৈরী হয় এক একটা stream। আর buffer কে বলতে পারি এক ধরনের data type। মানে buffer এর মাধ্যমে chank এ chank এ আমাদের কাছে ডাটা আসতে থাকে।

এখন ইউটিউবে চলাকালীন একটা ভিডিও যদি হঠাৎ কয়েক মিনিট সামনে টেনে দেখার চেষ্টা করি তখন কিছু মুহুর্তের মধ্যে ভিডিওটা চলে না, একটু সময় নেয়, লোডিং হতে থাকে। লোডিং হওয়াকে আমরা কিন্তু বলে থাকি ভিডিও বাফারিং হচ্ছে অনেকে বুঝে বলি, অনেকে না বুঝে বলি। আসলে কিন্তু বাফারিংই হচ্ছে। মানে এইখানে data streaming এর যে সিকোয়েন্সটা ছিল সেটা নষ্ট করে দেয়ার কারণে সেই নির্দিষ্ট অংশের buffer এর জন্য অপেক্ষা করতে থাকে। যখনই ঐ নির্দিষ্ট অংশের জন্য buffer সম্পূর্ণ হবে তখনই আবার ভিডিও চলতে শুরু করবে।
মানে বলতে পারি ঝর্ণার মতো ডাটা আসছে আর buffer হচ্ছে ঝর্ণার এক একটা ফোঁটা।

এখন প্রশ্ন হচ্ছে Node js এর সার্ভারে buffer আর stream কখন দরকার হয়?
ধরি, একটা ক্লায়েন্ট বড়সড় একটা ফাইল রিকোয়েস্ট করেছে। এখন ক্লায়েন্টকে যদি সব ডাটা একসাথে লোড হওয়ার পর দেখাই তবেতো ক্লায়েন্টকে বসে থাকতে হবে। আর যদি এখানে Streams এবং buffer এর কনসেপ্ট কে কাজে লাগানো যায় তবে কিন্তু ইউজার এক্সপেরিয়েন্সটা ভালো হয়ে যাচ্ছে।

--

--