شارد (پایگاه داده) کیست؟ توضیح بده.
شارد یا خرده پایگاه داده ، یک پارتیشن افقی از داده‌ها در یک پایگاه داده یا موتور جستجو است. هر شارد در یک وهله (instance) از سرور پایگاه داده جداگانه نگهداری می‌شود تا بار را پخش کند.برخی از داده‌ها در یک پایگاه داده در همه شاردها وجود دارند، اما برخی فقط در یک شارد ظاهر می‌شوند. هر شارد (یا سرور) به عنوان یک منبع "واحد" برای این زیر مجموعه داده عمل می‌کند.معماری پایگاه داده.پارتیشن‌بندی افقی یک اصل طراحی پایگاه داده‌است که به موجب آن ردیف‌های جدول پایگاه داده به جای اینکه به ستون‌ها تقسیم شوند (کاری که نرمال سازی و پارتیشن‌بندی عمودی به میزان‌های مختلف انجام می‌دهند)، به‌طور جداگانه نگهداری می‌شوند. هر پارتیشن بخشی از یک قطعه را تشکیل می‌دهد که ممکن است به نوبه خود در یک سرور پایگاه داده یا مکان فیزیکی جداگانه قرار گیرد.روش پارتیشن‌بندی افقی مزایای زیادی دارد. از آنجایی که جداول به چندین سرور تقسیم و توزیع می‌شوند، تعداد کل ردیف‌های هر جدول در هر پایگاه داده کاهش می‌یابد. این باعث کاهش اندازه فهرست می‌شود که به‌طور کلی عملکرد جستجو را بهبود می‌بخشد. یک قطعه پایگاه داده را می‌توان بر روی سخت‌افزار جداگانه قرار داد، و نیز چند شارد را می‌توان بر روی چندین ماشین قرار داد. این ویژگی، امکان توزیع پایگاه داده را روی تعداد زیادی ماشین فراهم می‌کند و عملکرد را تا حد زیادی بهبود می‌بخشد. علاوه بر این، اگر شارد پایگاه داده بر اساس بخش‌بندی‌های دنیای واقعی داده‌ها باشد (به عنوان مثال مشتریان اروپایی، مشتریان آمریکایی، ...) در این صورت ممکن است بتوان به راحتی و از روی ماهیت داده به‌طور خودکار شارد مناسب را استنباط کرد و فقط از شارد مربوطه پرس و جو کرد.معایب عبارتند از:"بخش اصلی:" معایبدر عمل، به اشتراک گذاری پیچیده‌است. اگرچه این کار برای مدت طولانی با کدگذاری دستی انجام شده‌است (مخصوصاً در مواردی که ردیف‌ها دارای یک گروه‌بندی واضح هستند، طبق مثال بالا)، اما هنوز در اغلب موارد انعطاف‌ناپذیر است. همواره تمایل به پشتیبانی خودکار از اشتراک گذاری وجود دارد، هم از نظر افزودن پشتیبانی کد برای آن و هم برای شناسایی نامزدهایی که باید به‌طور جداگانه تقسیم شوند. هش کردن مداوم تکنیکی است که در اشتراک گذاری برای پخش بارهای بزرگ در چندین سرویس و سرور کوچکتر استفاده می‌شود.در جایی که محاسبات توزیع شده برای جداسازی بار بین چندین سرور (به دلایل عملکرد یا قابلیت اطمینان) استفاده می‌شود، یک رویکرد مبتنی بر شارد نیز ممکن است مفید باشد.در مقایسه با پارتیشن‌بندی افقی.پارتیشن‌بندی افقی یک یا چند جدول را به ردیف، معمولاً در "یک" نمونه (instance) واحد شامل یک طرحواره (اسکیما) و یک سرور پایگاه داده تقسیم می‌کند. ممکن است با کاهش اندازه فهرست (و در نتیجه کاهش حجم عمل جستجو) مزیتی را ارائه دهد، مشروط بر اینکه روشی واضح، قوی و ضمنی برای تشخیص اینکه در کدام پارتیشن یک ردیف خاص پیدا می‌شود، بدون نیاز به جستجوی فهرست، وجود داشته باشد، به عنوان مثال، مثال کلاسیک جداول codice_1 و codice_2 که کد پستی آنها قبلاً محل یافتن آنها را نشان می‌دهد.شارد بندی عملی فراتر از این است: جدول (های) مشکل ساز را به همان روش پارتیشن‌بندی می‌کند، اما برای این کار از طرحواره (اسکیما) "چندین" وهله (instance) بالقوه می‌سازد. مزیت آشکار این عمل این است که بار جستجو برای جدول پارتیشن‌بندی شده بزرگ اکنون می‌تواند در چندین سرور (منطقی یا فیزیکی) تقسیم شود، نه فقط چند فهرست روی یک سرور منطقی.تقسیم کردن شاردها در چندین نمونه جدا شده به چیزی بیش از پارتیشن‌بندی افقی ساده نیاز دارد. در پارتیشن‌بندی چون همه چیز بخش‌بندی می‌شود برای داده‌های ساده مثلاً یک جدول ابعاد ساده نیز بخش‌بندی می‌شوند و برای بازیابی داده از آنه هم نیاز به پرس و جوی "چند" نمونه ای ("multiple" instances) به وجود می‌آید که در عمل همه دستاوردهای مورد انتظار در خصوص بهبود کارایی را از بین می‌برد. اما شارد بندی جداول بزرگ قابل پارتیشن‌بندی را در سرورها تقسیم می‌کند، در حالی که جداول کوچکتر را به سادگی و به‌طور کامل روی این سرورها تکرار می‌کند و این باعث می‌شود که در جستجوهای ساده از جداول کوچک نیازی به پرس و جوهای بین چند نمونه ای نباشد و باعث افت عملکرد نگردد، این مزیت شارد بندی نسبت به پارتیشن‌بندی است .همچنین به همین دلیل است که شاردینگ به معماری هیچ چیز مشترک مربوط می‌شود - پس از خرد شدن، هر شارد می‌تواند در یک نمونه طرحواره (اسکیما) منطقی کاملاً مجزا / سرور پایگاه داده فیزیکی / مرکز داده / قاره جداگانه قرار بگیرد. هیچ نیاز مداومی به حفظ دسترسی مشترک (از بین شاردها) به سایر جداول پارتیشن نشده در دیگر شاردها وجود ندارد.این کار تکثیر در چندین سرور را آسان می‌کند (پارتیشن‌بندی افقی ساده این کار را نمی‌کند). همچنین برای توزیع جهانی برنامه‌ها مفید است، جایی که پیوندهای ارتباطی بین مراکز داده اگر به روشی غیر از این انجام شود، تبدیل به یک گلوگاه خواهد شد.همچنین نیاز به برخی مکانیسم‌های اعلان و تکرار بین نمونه‌های طرحواره (schema instances) وجود دارد، به طوری که جداول پارتیشن نشده به همان میزانی که برنامه درخواست می‌کند، هماهنگ باقی بمانند. این یک انتخاب پیچیده در معماری سیستم‌های خرد شده (سیستمهای مبتنی بر شارد) است: رویکردها معمولاً محدوده ای مابین ساخت این موارد فقط خواندنی (به‌روزرسانی‌ها نادر و بصورت دسته‌ای هستند)، تا ایجاد جداول تکرارشونده پویا (به بهای کاهش برخی از مزایای توزیع در شارد بندی) و بسیاری از گزینه‌های بینابین این دو را شامل می‌شود.معایب.شارد بندی جدول پایگاه داده قبل از بهینه‌سازی محلی باعث پیچیدگی زودرس می‌شود. شاردینگ باید تنها زمانی مورد استفاده قرار گیرد که همه گزینه‌های دیگر برای بهینه‌سازی ناکافی باشند. پیچیدگی مزبور در اشتراک گذاری پایگاه داده باعث مشکلات احتمالی زیر می‌شود:این پیچیدگی‌های تاریخی مربوط به فرایند خودتان-انجام-بدهید شاردینگ، ایده ای برای فروشندگان نرم‌افزار مستقل شد تا روش‌های شاردینگ خودکار را ارائه بدهند.ریشه یابی واژه.در علم پایگاه داده، اصطلاح «شارد» به احتمال زیاد از یکی از دو منبع مشتق شده‌است: عبارت اختصاری به کار برده شده توسط شرکت کامپیوتری آمریکا که مخفف عبارت «سیستمی برای داده‌های تکراری بسیار در دسترس» می‌باشد و از سخت‌افزار اضافی برای تسهیل "تکثیر" داده‌ها استفاده می‌کند. (بر خلاف پارتیشن‌بندی افقی)؛ یا بازی ویدئویی سبک ام ام او آر پی جی به نام آلتیما آنلاین که در سال ۱۹۹۷ مورد تحسین منتقدان قرار گرفت، ۸ رکورد جهانی گینس را ثبت کرد و توسط "تایم" به عنوان یکی از ۱۰۰ بازی ویدیویی برتر تولید شده در تمام دوران معرفی شد.ریچارد گاریوت، خالق "آلتیما آنلاین"، این واژه را از مرحله تولید بازی به یاد می‌آورد، زمانی که آنها تلاش کردند یک سیستم بوم‌شناسی مجازی خودتنظیمی ایجاد کنند، که به موجب آن بازیکنان می‌توانند از دسترسی جدید به اینترنت (یک فناوری انقلابی در آن زمان) برای تعامل و برداشت منابع بازی استفاده کنند. اگرچه بوم‌شناسی مجازی در طول آزمایش‌های داخلی طبق برنامه عمل می‌کرد، اما تعادل طبیعی آن تقریباً فوراً از بین رفت زیرا بازیکنان سریع‌تر از آنچه سیستم تخم‌ریزی می‌توانست کار کند، تمام حیات‌وحش‌های زنده در سراسر منطقه قابل بازی را از بین می‌بردند. تیم سازنده گاریوت سعی کرد این مشکل را با جدا کردن پایه بازیکنان جهانی به جلسات جداگانه کاهش دهد و بخشی از ارتباط داستانی آلتیما آنلاین را به صورت پایان "" بازنویسی کند، جایی که شکست شخصیت آن مونداین منجر به ایجاد «شارد» چندجهانی شد. این اصلاح بهانه و توجیه تخیلی مورد نیاز برای ایجاد چندین کپی از محیط مجازی را در اختیار تیم گاریوت قرار داد. با این حال، افزایش شدید تحسین منتقدان از بازی همچنین به این معنی نیز بود که سیستم زیست‌محیطی مجازی چندجهانی جدید نیز به سرعت (دربرابر حجم استقبال بازیگران جدید) ناکافی گردید. پس از چندین ماه آزمایش، تیم گاریوت تصمیم گرفت که این ویژگی را به کلی کنار بگذارد و عملکرد بازی را از بین ببرد.امروزه اصطلاح «شارد» به استقرار و استفاده از سخت‌افزار اضافی در سیستم‌های پایگاه داده اشاره دارد.