ডাটা পার্টিশনিং-এর এপিঠ-ওপিঠ
সুবিধা আর অসুবিধা
বল্টু ভাই চায়ের কাপটা টেবিলে রেখে সিরিয়াস ভঙিতে বললেন, “বুঝলি মন্টু, দুনিয়ায় মাগনা বলে কিছু নেই। তুই যে এত কষ্ট করে ডাটাবেসকে টুকরো টুকরো করবি, এর যেমন কিছু ম্যাজিকের মতো সুবিধা আছে, তেমনি কিছু প্যারাও আছে। আয়, আগে ভালো দিকগুলো দেখি।”
বল্টু ভাই আঙুল গুনে গুনে বলা শুরু করলেন:
- রকেটের মতো স্পিড (Query Performance): "যেহেতু পার্টিশনিংয়ের পর তোর বিশাল টেবিলগুলো ছোট ছোট হয়ে যাবে, তাই যেকোনো ডাটা খোঁজার জন্য আর পুরো ডাটাবেস হাতড়াতে হবে না। একটা ছোট শেলফ থেকে বই খোঁজা কি পুরো লাইব্রেরি থেকে খোঁজার চেয়ে সোজা না? কুয়েরি পারফরম্যান্স তাই রকেটের মতো বাড়বে।"
- লোড ব্যালেন্সিং ও স্কেলিং: "আগে এক সার্ভারের ওপর দিয়ে কালবৈশাখী ঝড় যেত। এখন ডাটা আলাদা সার্ভারে থাকায় লোড ব্যালেন্স হবে। আর ইউজার বাড়লে তুই চাইলে নতুন সার্ভার কিনে সেখানে নতুন শার্ড বসিয়ে দিতে পারবি। স্কেল করা একদম ডালভাত!"
- প্যারালাল প্রসেসিং: "ধর, তুই অ্যানালিটিক্সের জন্য সব ডাটার ওপর একটা ম্যাপ (Map) ফাংশন চালাবি। এখন তুই চাইলে সবগুলো শার্ডে একই সাথে প্যারালালি প্রসেস রান করতে পারিস। কাজ শেষ হবে চোখের পলকে।"
- বিপদ কমানো (Blast Radius & Recovery): "সবচেয়ে বড় সুবিধা হলো, তোর সব ডিম আর এক ঝুড়িতে নেই! কোনো কারণে একটা সার্ভার ক্র্যাশ করলে শুধু ওই সার্ভারের ইউজাররাই সাময়িক সমস্যা পোহাবে, পুরো বিড়ালটিউব ডাউন হবে না। আর যেহেতু ডাটার সাইজ ছোট, ব্যাকআপ বা রিকভার করতেও সময় লাগবে কম।"

মন্টু খুশিতে গদগদ হয়ে বলল, “ভাই, তাহলে তো সোনায় সোহাগা! আমি যাই, এখনই সার্ভার কেনা শুরু করি।”
— “আরে দাঁড়া! এত লাফাস না। এর কিছু ডার্ক সাইডও আছে, সেগুলো আগে শুনে তারপর কাজে হাত দে।”
মন্টু আবার চুপ করে বসে পড়ল। বল্টু ভাই এবার অসুবিধার খাতা খুললেন:
- অপারেশনাল কমপ্লেক্সিটি (Operational Complexity): "একটা ডাটাবেস ম্যানেজ করা আর ১০টা টুকরো ম্যানেজ করা এক কথা নয়। কোন ডাটা কোথায় আছে, ব্যাকআপ ঠিকমতো হচ্ছে কি না, নতুন সার্ভার অ্যাড করলে ডাটা রি-ব্যালেন্স করা, এসব মেলা ঝামেলার কাজ।"
- ক্রস-পার্টিশন কুয়েরি (Cross-partition Queries): "সবচেয়ে বড় বাঁশটা খাবি জয়েন (Join) করতে গিয়ে। ধর, একটা কুয়েরির জন্য তোর 'শার্ড-১' আর 'শার্ড-৩' দুটো থেকেই ডাটা মেলাতে হবে। আলাদা সার্ভার থেকে নেটওয়ার্ক পার হয়ে ডাটা এনে জয়েন করতে গেলে ল্যাটেন্সি (Latency) এত বেড়ে যাবে যে, পারফরম্যান্সের বারোটা বেজে যাবে।"
- ডাটা স্কিউ বা হটস্পট (Data Skew): "ভুল লজিকে পার্টিশন করলে দেখা যাবে একটা শার্ডে বিশাল চাপ, আরেকটা শার্ড মাছি মারছে। ধর, কোনো একটা কিউট বিড়ালের ভিডিও ভাইরাল হয়ে গেল। ওই ভিডিওর ডাটা যে সার্ভারে আছে, সেটার ওপর দুনিয়ার সব মানুষ হামলে পড়বে। একে বলে হটস্পট প্রবলেম।"
- মাইগ্রেশন প্যারা: "পরে কখনো যদি ডাটাবেস টেকনোলজি চেঞ্জ করতে চাস, এই ডিস্ট্রিবিউটেড বা টুকরো করা ডাটাবেস মাইগ্রেট করা রীতিমতো একটা দুঃস্বপ্ন।"
— “মোদ্দা কথা হলো,” বল্টু ভাই শেষ করলেন, “যত ঝামেলাই থাকুক, বড় স্কেলে সার্ভাইভ করতে গেলে এই ঝক্কি তোকে পোহাতেই হবে। তোর সিস্টেমে যা লোড বাড়ছে, দেরি না করে জলদি কাজ শুরু করে দে।”
মন্টু সব বুঝে খুশি মনে বাড়ি চলে গেল। শুরু করে দিল কাজ। টানা কয়েকদিন রাত জেগে, কফি খেয়ে হাড়ভাঙা খাটুনি খেটে সে ডাটাবেসকে সুন্দর করে পার্টিশন করে ফেলল। বিড়ালটিউবের ডাটাবেস এখন আর একটা সিঙ্গেল সার্ভার নয়, অনেকগুলো সার্ভারের একটা শক্তিশালী ডিস্ট্রিবিউটেড ক্লাস্টার!