روزی شیخ در زیر درختی نشسته بود ودرحال نشانه گیری بود که با پلخمون خود بزنه زیر چینگ چغوک!(با تیر کمان دستی خود بزنه زیر نوک گنجشک) که مریدی چغوک را پرانده و گفت:
- یا شیخ خوش رکاب را بین المللی کردیم، و به عنوان لژیونر استارتاپ های دهمان فرستادیم بلاد فرنگ!
-باریکلا!نوش جونتون!برو که شکار را پراندی.
-آری اما به مشکلی بر خوردیم عجیب!
-چه شده ای مرید؟رنگت مانند پارس سفید پلاک کرج شد!
-ای شیخ سیستم عجیب کند شده!چه کنیم؟؟پارتیشن هم کردیم اما رم و cpu را چگونه هندل کنیم؟؟؟
تازه به طرز عجیبی میزان کانکشن ها به دیتابیس هم زیاد شده که این خود نیز مصداق ترافیک همت می باشد!به جان ما!
شیخ به نماد همیشگی دستی به ریش خود کشید و گفت : بشین که بریم روی منبر!
ببین مرید بابا!الان اوضاع شما فرق میکند دیگر روی یک سرور کار نمیشود کرد!از این رو برو و به DBAdmin خود بگو که برنامه Sharding را هماهنگ کند تا اوضاع به مانند خودروی ملی نشده!
ای شیخ این که گفتی یعنی چه؟؟؟
شیخ گفت :Sharding به مانند Partition میباشد اما در اندازه سرور!یعنی شما به جای اینکه جدول را به مانند تکه های ته قوطی رانی کنی!سرور را این کار میکنی!(پیاده سازیش پوستت را میکند به مولا!)
العجب!برگام شیخ!بیشتر بگو؟؟چگونه اینکار کنیم؟؟
چگونهاش که دیتابیس به دیتابیس متفاوت است، اما الگورتیم پیاده سازی را به تو میگویم!حلش باشد برای بعد.
بگذار از سر کلاینت توضیح را شروع کنیم!
مشتری تو در بلاد فرنگ درخواست چهارپای VIP میدهد، حال شما ID مخصوص مشتری را میگیری(فقط IDنیست بسته به نوع ساختار پروژه میتونه هرچیزی باشه)و سپس با الگورتیم Consistent Hashing(مقاله بعد در همین مورد هستش) آن را هش میکنی!سپس متوجه میشوی که به کدام سرور وصل شود و اطلاعاتش در کدام سرور قرار دارند! به این صورت بار مشتریان خود را در بین سرور ها پخش مینمایی!
از نعمات دینوی این کار بگویم که :
1-هم برای داده ها و هم برای منابع امکان Scalability داری
2-امنیت بیشتر میشود چون میتوانی بنا به داده های مشتری ها آنان را درسرور های جداگانه بگذاری
3-سایز جدولهایت کوچک تر میشود که این خود یعنی Index کوچک یعنی ایول!
4- هزاران جوایز غیر نقدی دیگر
اما بدان و اگاه باش که این روش بسیار هزینه های فنی و مالی و مغز و اعصابی به بار میآورد.اگر دیگر راهی نداشتی این کار را بکن!زیرا پیچیدگی های راه اندازی، یک بدبختی!نگهداری سرور ها، یک بدبختی!