ডাটা শার্ডিং-এর নাড়িভুঁড়ি
কীভাবে কাটবেন আপনার ডাটাবেস?
বল্টু ভাই তার চায়ের কাপে একটা চুমুক দিয়ে গলাটা পরিষ্কার করে নিলেন। "এবার আয় আসল খেলায়। হরাইজন্টাল পার্টিশনিং বা শার্ডিং করার অনেকগুলো তরিকা আছে। তুই তোর ডাটাবেসটাকে কীভাবে কাটবি, সেটা নির্ভর করে তোর সিস্টেমের ডিমান্ডের ওপর। চল, তোকে একটা একটা করে উদাহরণ দিয়ে বোঝাই।"
১. রেঞ্জ-বেজড শার্ডিং (Range-based Sharding): ফাইল কেবিনেট
"ধর, তোর একটা বিশাল লাইব্রেরি আছে। তুই বইগুলো কীভাবে রাখবি? খুব সোজা হিসাব, 'অ' থেকে 'ন' অক্ষরের বই এক আলমারিতে, আর 'প' থেকে 'হ' পর্যন্ত আরেক আলমারিতে। ডাটাবেসের ক্ষেত্রে একেই বলে রেঞ্জ-বেজড শার্ডিং। তুই ঠিক করলি, ১ থেকে ১ লাখ আইডির ইউজার থাকবে 'শার্ড-১' এ, ১ লাখ ১ থেকে ২ লাখ আইডির ইউজার থাকবে 'শার্ড-২' এ। অথবা ধর, ভিডিও আপলোডের সাল অনুযায়ী ভাগ করলি, ২০২৫ সালের সব ভিডিও এক সার্ভারে, ২০২৬ সালেরগুলো আরেক সার্ভারে।"
মন্টু মাথা নেড়ে বলল, "এটা তো খুব সোজা আর লজিক্যাল!" বল্টু ভাই হাসলেন, "সোজা ঠিকই, কিন্তু এর একটা বড় বাঁশ আছে। ধর তুই সাল অনুযায়ী ভাগ করলি। এখন সবাই তো নতুন বা ২০২৬ সালের ভিডিওই বেশি দেখবে বা আপলোড করবে, তাই না? তখন দেখা যাবে তোর ২০২৬ সালের সার্ভারটা লোড সামলাতে না পেরে ধোঁয়া ছাড়ছে, আর ২০২৫ সালের সার্ভারটা মাছি মারছে। একে বলে 'হটস্পট (Hotspot)' প্রবলেম।"
২. হ্যাশ-বেজড শার্ডিং (Hash-based Sharding): ম্যাজিক ফর্মুলা বা লটারি
"এই হটস্পট প্রবলেম থেকে বাঁচার উপায় হলো হ্যাশ-বেজড শার্ডিং। এখানে ডাটাবেসের একটা নির্দিষ্ট কলামকে (যেমন ইউজার আইডি) একটা ম্যাজিক ম্যাথ ফর্মুলার (যাকে হ্যাশিং অ্যালগরিদম বলে) ভেতর দিয়ে পাঠানো হয়। ওই ফর্মুলা একটা র্যান্ডম কিন্তু ফিক্সড রেজাল্ট দেয়, যা ঠিক করে দেয় ডাটাটা কোন শার্ডে যাবে। মানে একই ইউজার আইডি দিলে সবসময় একই রেজাল্ট আসবে, তাই ডাটা হারানোর ভয় নেই। এতে করে ডাটাগুলো লটারির মতো সব সার্ভারে একদম সমানভাবে ছড়িয়ে পড়ে। কোনো এক সার্ভারের ওপর হঠাৎ করে পাহাড়সমান চাপ পড়ে না।"

৩. জিওগ্রাফিক শার্ডিং (Geographical Sharding): লোকাল ব্রাঞ্চ অফিস
"তোর বিড়ালটিউবের ইউজার তো এখন শুধু দেশে নেই, আমেরিকাতেও আছে, তাই না?" বল্টু ভাই জিজ্ঞেস করলেন। "হ্যাঁ ভাই, কালকেই দেখলাম উগান্ডা থেকেও কয়েকজন বিড়ালের ভিডিও দেখেছে!" মন্টু দাঁত কেলিয়ে বলল।
"তাহলে শোন, আমেরিকার কোনো ইউজার যদি ঢাকা সার্ভার থেকে ভিডিও লোড করতে চায়, তার তো একটু ল্যাগ করবেই। এর সমাধান হলো জিওগ্রাফিক শার্ডিং। তুই ইউজারদের লোকেশন বা রিজিওন অনুযায়ী ডাটাবেস ভাগ করে ফেললি। বাংলাদেশের ইউজারদের ডাটা রাখলি সিঙ্গাপুর বা মুম্বাই সার্ভারে, আর আমেরিকানদের ডাটা রাখলি ভার্জিনিয়া সার্ভারে। যার কাছাকাছি যে ডাটাবেস, সে সেখান থেকে ডাটা পাবে। একদম লোকাল ব্রাঞ্চ অফিসের মতো ফাস্ট সার্ভিস!"
৪. ডিরেক্টরি-বেজড শার্ডিং (Directory-based Sharding): রিসেপশনিস্ট
"এবার ধর, তুই একটা বিশাল হাসপাতালে গেলি কোনো রোগীকে খুঁজতে। তুই তো আর সব রুমে রুমে গিয়ে খুঁজবি না, তাই না? তুই যাবি নিচতলার রিসেপশনিস্টের কাছে। সে কম্পিউটারে দেখে বলে দেবে, 'রোগী ৩য় তলার ৩০৫ নম্বর কেবিনে আছে'। ডিরেক্টরি-বেজড শার্ডিং ঠিক এভাবেই কাজ করে। এখানে মেইন ডাটাবেসের আগে একটা ছোট 'লুকআপ টেবিল (Lookup Table)' বা ডিরেক্টরি থাকে। অ্যাপ আগে ওই ডিরেক্টরিকে জিজ্ঞেস করে, 'ভাই, অমুক ইউজারের ডাটা কোথায়?' ডিরেক্টরি বলে দেয় নির্দিষ্ট শার্ডের ঠিকানা। এর সবচেয়ে বড় সুবিধা হলো, তুই চাইলে খুব সহজেই পেছনের ডাটা এক সার্ভার থেকে অন্য সার্ভারে সরাতে পারবি, শুধু ডিরেক্টরির এন্ট্রিটা আপডেট করে দিলেই হলো!"
৫. ডাইনামিক শার্ডিং (Dynamic Sharding): অটোমেটিক রাবার ব্যান্ড
"এটা হলো একবারে লেটেস্ট টেকনোলজি! অনেকটা রাবার ব্যান্ডের মতো। ডাটা যদি বাড়তে থাকে আর একটা শার্ড ফুল হয়ে যায়, সিস্টেম অটোমেটিক্যালি সেটাকে ভেঙে দুই টুকরো করে ফেলে (Split)। আবার যখন ডাটা কমে যায়, তখন দুটো শার্ড মিলে একটা হয়ে যায় (Merge)। এখানে তোর ম্যানুয়ালি কোনো টেনশন নিতে হয় না, সিস্টেম নিজেই নিজের সাইজ বুঝে বড়-ছোট হয়।"
৬. হাইব্রিড শার্ডিং (Hybrid Sharding): মিক্সড ফ্রাইড রাইস
"এতক্ষণ ধরে তোকে যতগুলো টেকনিক বললাম, বড় বড় সিস্টেমে আসলে শুধু একটা টেকনিক দিয়ে কাজ হয় না। তারা কয়েকটা মেথড মিলিয়ে 'হাইব্রিড' ওয়েতে শার্ডিং করে। যেমন ধর, তুই প্রথমে জিওগ্রাফিক শার্ডিং করলি (এশিয়া এবং আমেরিকা), তারপর এশিয়ার সার্ভারের ভেতরে ডাটা ব্যালেন্স করার জন্য হ্যাশ-বেজড শার্ডিং করলি। এতে সিস্টেম যেমন ফাস্ট হয়, তেমন ফ্লেক্সিবলও হয়। তবে হ্যাঁ, সিস্টেমের আর্কিটেকচারটা তখন একটু জটিল হয়ে যায়।"
সব শুনে মন্টুর চোখ ছানাবড়া, মাথা একটু চক্কর দিয়ে উঠল। "ভাইরে ভাই! এত এত উপায়? আমি কোনটা ছেড়ে কোনটা ব্যবহার করব, সেটাই তো বুঝতে পারছি না!"
বল্টু ভাই মন্টুর পিঠ চাপড়ে দিয়ে বললেন, "আরে ঘাবড়ানোর কিছু নেই! সফটওয়্যার ইঞ্জিনিয়ারিংয়ে 'সিলভার বুলেট' বা সব রোগের এক ওষুধ বলে কিছু নেই। প্রত্যেকটা উপায়েরই কিছু সুবিধা আর অসুবিধা আছে (Trade-offs)। তোর বিড়ালটিউবের কারেন্ট অবস্থা, বাজেট আর ফিউচার প্ল্যান বুঝে যেটা সবচেয়ে ভালো ফিট করবে, তোকে সেটাই বেছে নিতে হবে।"