شاردینگ پایگاه داده چیست؟
شاردینگ پایگاه داده فرآیند ذخیرهسازی یک پایگاه داده بزرگ در چندین ماشین است. یک ماشین واحد یا سرور پایگاه داده، فقط میتواند مقدار محدودی از داده را ذخیره و پردازش کند. شاردینگ پایگاه داده با تقسیم دادهها به قطعات کوچکتر به نام شارد و ذخیرهسازی آنها در چندین سرور پایگاه داده، بر این محدودیت غلبه میکند. معمولاً همه سرورهای پایگاه داده از فناوریهای زیربنایی یکسانی برخوردارند و با هم برای ذخیره و پردازش حجم زیادی از دادهها کار میکنند.
چرا شاردینگ پایگاه داده مهم است؟
با رشد یک برنامه، تعداد کاربران برنامه و میزان دادهای که ذخیره میکند به مرور زمان افزایش مییابد. اگر حجم دادهها خیلی زیاد شود و کاربران زیادی به طور همزمان سعی در استفاده از برنامه برای خواندن یا ذخیره اطلاعات داشته باشند، پایگاه داده به یک گلوگاه تبدیل میشود. برنامه کند میشود و تجربه مشتری را تحت تأثیر قرار میدهد. شاردینگ پایگاه داده یکی از روشهای حل این مشکل است زیرا پردازش موازی مجموعههای داده کوچکتر را در بین شاردها امکانپذیر میکند.
مزایای شاردینگ پایگاه داده چیست؟
سازمانها از شاردینگ پایگاه داده برای دستیابی به مزایای زیر استفاده میکنند:
- بهبود زمان پاسخ: بازیابی دادهها در یک پایگاه داده بزرگ واحد بیشتر طول میکشد. سیستم مدیریت پایگاه داده باید ردیفهای زیادی را جستجو کند تا داده صحیح را بازیابی کند. در مقابل، شاردهای داده نسبت به کل پایگاه داده ردیفهای کمتری دارند. بنابراین، بازیابی اطلاعات خاص یا اجرای یک پرسش از یک پایگاه داده شارد شده زمان کمتری میبرد.
- جلوگیری از قطع کامل سرویس: اگر کامپیوتری که میزبان پایگاه داده است از کار بیفتد، برنامهای که به پایگاه داده وابسته است نیز از کار میافتد. شاردینگ پایگاه داده با توزیع بخشهایی از پایگاه داده در کامپیوترهای مختلف از این امر جلوگیری میکند. از کار افتادن یکی از کامپیوترها باعث خاموش شدن برنامه نمیشود زیرا میتواند با سایر شاردهای کاربردی به کار خود ادامه دهد. شاردینگ اغلب در ترکیب با تکثیر داده در بین شاردها انجام میشود. بنابراین، اگر یک شارد غیرقابل دسترس شود، میتوان به دادهها از یک شارد جایگزین دسترسی پیدا کرد و آنها را بازیابی کرد.
- مقیاسپذیری کارآمد: یک پایگاه داده در حال رشد منابع محاسباتی بیشتری مصرف میکند و در نهایت به ظرفیت ذخیرهسازی میرسد. سازمانها میتوانند از شاردینگ پایگاه داده برای افزودن منابع محاسباتی بیشتر برای پشتیبانی از مقیاسپذیری پایگاه داده استفاده کنند. آنها میتوانند شاردهای جدید را در زمان اجرا بدون خاموش کردن برنامه برای تعمیر و نگهداری اضافه کنند.
شاردینگ پایگاه داده چگونه کار میکند؟
یک پایگاه داده اطلاعات را در مجموعههای داده متعددی متشکل از ستونها و ردیفها ذخیره میکند. شاردینگ پایگاه داده یک مجموعه داده واحد را به پارتیشنها یا شاردها تقسیم میکند. هر شارد شامل ردیفهای منحصر به فردی از اطلاعات است که میتوانید آنها را به طور جداگانه در چندین کامپیوتر به نام گره ذخیره کنید. همه شاردها روی گرههای جداگانه اجرا میشوند اما طرح یا طراحی اصلی پایگاه داده را به اشتراک میگذارند.
به عنوان مثال، یک پایگاه داده شارد نشده که شامل یک مجموعه داده برای سوابق مشتری است ممکن است به این شکل باشد:
شاردینگ شامل جدا کردن ردیفهای مختلف اطلاعات از جدول و ذخیره آنها در ماشینهای مختلف است، همانطور که در زیر نشان داده شده است:
کامپیوتر A:
کامپیوتر B:
شاردها:
قطعات پارتیشنبندی شده داده، شاردهای منطقی نامیده میشوند. ماشینی که شارد منطقی را ذخیره میکند، شارد فیزیکی یا گره پایگاه داده نامیده میشود. یک شارد فیزیکی میتواند شامل چندین شارد منطقی باشد.
کلید شارد:
توسعهدهندگان نرمافزار از یک کلید شارد برای تعیین نحوه پارتیشنبندی مجموعه داده استفاده میکنند. یک ستون در مجموعه داده تعیین میکند که کدام ردیفهای داده با هم گروهبندی شوند تا یک شارد را تشکیل دهند. طراحان پایگاه داده یک کلید شارد را از یک ستون موجود انتخاب میکنند یا یک ستون جدید ایجاد میکنند.
معماری بدون اشتراک:
شاردینگ پایگاه داده بر روی یک معماری بدون اشتراک عمل میکند. هر شارد فیزیکی به طور مستقل عمل میکند و از سایر شاردها بیاطلاع است. فقط شاردهای فیزیکی که حاوی دادههای مورد درخواست شما هستند، دادهها را به صورت موازی برای شما پردازش میکنند.
یک لایه نرمافزاری ذخیرهسازی و دسترسی به دادهها را از این شاردهای متعدد هماهنگ میکند. به عنوان مثال، برخی از انواع فناوری پایگاه داده دارای ویژگیهای خودکار شاردینگ داخلی هستند. توسعهدهندگان نرمافزار همچنین میتوانند کد شاردینگ را در برنامه خود برای ذخیره یا بازیابی اطلاعات از شارد یا شاردهای صحیح بنویسند.
روشهای شاردینگ پایگاه داده چیست؟
روشهای شاردینگ پایگاه داده قوانین مختلفی را برای کلید شارد اعمال میکنند تا گره صحیح را برای یک ردیف داده خاص تعیین کنند. در زیر معماریهای رایج شاردینگ آورده شده است:
- شاردینگ مبتنی بر محدوده: شاردینگ مبتنی بر محدوده یا شاردینگ پویا، ردیفهای پایگاه داده را بر اساس محدودهای از مقادیر تقسیم میکند. سپس طراح پایگاه داده یک کلید شارد را به محدوده مربوطه اختصاص میدهد. به عنوان مثال، طراح پایگاه داده دادهها را مطابق با اولین حرف الفبا در نام مشتری به شرح زیر پارتیشنبندی میکند:
هنگامی که یک رکورد مشتری در پایگاه داده نوشته میشود، برنامه با بررسی نام مشتری، کلید شارد صحیح را تعیین میکند. سپس برنامه کلید را با گره فیزیکی آن مطابقت میدهد و ردیف را روی آن ماشین ذخیره میکند. به طور مشابه، برنامه هنگام جستجوی یک رکورد خاص، یک تطابق معکوس انجام میدهد.
- مزایا و معایب: بسته به مقادیر داده، شاردینگ مبتنی بر محدوده میتواند منجر به بارگذاری بیش از حد دادهها در یک گره فیزیکی واحد شود. در مثال ما، شارد A (شامل نامهایی که با A تا I شروع میشوند) ممکن است تعداد بسیار بیشتری از ردیفهای داده نسبت به شارد C (شامل نامهایی که با T تا Z شروع میشوند) داشته باشد. با این حال، پیادهسازی آن آسانتر است.
- شاردینگ هش شده: شاردینگ هش شده با استفاده از یک فرمول ریاضی به نام تابع هش، کلید شارد را به هر ردیف از پایگاه داده اختصاص میدهد. تابع هش اطلاعات را از ردیف میگیرد و یک مقدار هش تولید میکند. برنامه از مقدار هش به عنوان کلید شارد استفاده میکند و اطلاعات را در شارد فیزیکی مربوطه ذخیره میکند.
توسعهدهندگان نرمافزار از شاردینگ هش شده برای توزیع یکنواخت اطلاعات در یک پایگاه داده بین چندین شارد استفاده میکنند. به عنوان مثال، نرمافزار سوابق مشتری را به دو شارد با مقادیر هش متناوب 1 و 2 جدا میکند.
- مزایا و معایب: اگرچه شاردینگ هش شده منجر به توزیع یکنواخت دادهها بین شاردهای فیزیکی میشود، پایگاه داده را بر اساس معنای اطلاعات جدا نمیکند. بنابراین، توسعهدهندگان نرمافزار ممکن است هنگام افزودن شاردهای فیزیکی بیشتر به محیط محاسباتی، با مشکلاتی در تخصیص مجدد مقدار هش روبرو شوند.