کلمه Shard به معنی جزء کوچکی از یک مجموعه بزرگتر و کلمه Sharding به معنی تقسیم کردن یک مجموعه بزرگ به اجزای کوچکتر است.
این روش برای بهبود عملکرد مراکز ذخیره داده ها یا DataBase از طریق تقسیم بندی دیتابیس است که به آن پارتیشن بندی افقی نیز میگویند.
به عبارتی شاردینگ یک الگوی معماری مراکز داده است که به صورت افقی و در عرض، دیتابیس را به تکه های کوچکتر تقسیم بندی میکندکه به هر بخش در این ساختار معماری، شارد گفته میشود.
اطلاعات ذخیره شده در هر شارد، منحصر به همان شارد بوده و همینطور مستقل از داده هایی است که در سایر شارد ها ذخیره میشود.
برای مثال یک دانشگاه را در نظر بگیرید که از ابتدای تاسیس تا به امروز ۱ میلیون دانشجو در آن تحصیل کردهاند و کارنامهی تمام این دانشجویان در یک دیتابیس بزرگ نگهداری میشود.
فرض کنید بخواهیم کارنامه ی یک دانشجوی خاص را بیابیم و برای این کار باید تمام ۱ میلیون کارنامه را بررسی کنیم تا به کارنامه فرد مورد نظر خود برسیم.
اکنون بیاید دیتابیس این دانشگاه را با تکنیک شاردینگ منظمتر کنیم، برای اینکار بر اساس سال فارغ التحصیل شدن کارنامه های آنها را مرتب کنیم، در واقع ما با این کار دیتابیس دانشگاه را بر اساس سال فارغ التحصیلی دانشجویان به شارد های کوچکتر تقسیم کردهایم.
این کار را میتوان بازهم ادامه داد و اینبار براساس رشته تحصیلی دانشجویان و حرف اول فامیلی دانشجویان، شارد ها را باز هم دقیقتر خواهیم کرد که در چنین ساختاری یافتن کارنامه یک دانشجوی خاص بسیار راحت تر از قبل است.

مزایای شاردینگ
با استفاده از شاردینگ، دیتابیس به اجزای کوچکتری تقسیم میشود در نتیجه مدیریت داده ها آسانتر خواهد شد.
زمانی که یک دیتابیس به شارد های کوچکتر تقسیم میشود سرعت پردازش و تراکنش سریعتر خواهد بود که این مورد به بهبود عملکرد کلی سیستم کمک زیادی میکند.
مزیت دیگر شاردینگ کاهش هزینه ها است، سیستمی که از ساختار شاردینگ استفاده میکند در مقایسه با سیستم های دارای پایگاه داده یکتا به مراتب ارزانتر است.
استفاده از شاردینگ در بلاک چین موجب برطرف شدن مشکلات ناشی از مقیاس پذیری می شود.
این روزها مقیاس پذیری یکی از بزرگترین مشکلات بلاک چین ها محسوب می شود، هر چقدر کاربران یک شبکه بلاک چین افزایش یابد تعداد تراکنش ها و برنامه های غیرمتمرکز و دیگر عملیات در شبکه بلاک چین افزایش می یابد.
افزایش تراکنش ها منجر به افزایش سطح تقاضای نود ها برای تایید تراکنش است که با افزایش سطح تقاضای تراکنش ها، تایید تراکنش ها به کندی انجام می شود و در این حالت بلاک چین با مشکل روبرو می شود که استفاده از شاردینگ در شبکه بلاک چین موجب برطرف کردن چنین مشکلاتی خواهد شد.
شاردینگ با تقسیم کردن بلاک چین به داده های کوچکتر و تبدیل تایید تراکنش ها از نوع خطی به صورت موازی موجب افزایش سرعت تراکنش ها می شود.
برای کسب اطلاعات بیشتر در مورد بلاک چین و نود می توانید به مقاله های مربوط به آنها در همیار گلدبازار مراجعه کنید.
معایب شاردینگ
هرچند شاردینگ بسیاری از مشکلات ما را حل کرده اما هیچ سیستمی بدون ایراد نیست.
یکی از مشکلات شاردینگ نحوه پیادهسازی آن از منظر فنی است اما اجرای چنین سیستمی پیچیدگیهای فراوانی دارد و در صورتی که این تکنیک به درستی اجرا نشود ممکن است کل داده ها را از دست بدهیم.
یکی دیگر از مشکلات ایجاد تعادل میان اندازهی داده های ذخیره شده در هر شارد است مثلا فرض کنید که ما قصد داریم اسامی ۱ میلیون دانشجوی مثال قبل را صرفا بر اساس حروف الفبا تقسیم بندی کنیم.
از حرف الف تا ط در شارد اول و از حرف ظ تا ی را در شارد دوم قرار دهیم، ممکن است تعداد افراد ذخیره شده در شارد اول بسیار بیشتر از شارد دوم باشد لذا بار تحمیلی به شارد یک بسیار بالاتر از شارد دو است.
مسئله اصلی اینجاست که باید نحوه ی توزیع داده ها میان شارد های مختلف را به گونه ای انجام دهیم که متعادل ترین حالت برای کل سیستم رعایت شود و این مدیریت داده ها زمانی که تعداد تراکنش ها بسیار بالاست واقعا کار دشواری است.
مشکل بعدی مشکلات سخت افزاری است، ماشین های پردازش دیتا که با ساختار شاردینگ منطبق باشند متفاوت از سایر پردازشگر ها هستند و اینطور نیست که ما بتوانیم با استفاده از سخت افزار های فعلی، دیتابیس شارد شده را مدیریت کنیم که این مورد نیز مسئله ساز خواهد بود.

شاردینگ و سهگانه ی مقیاس پذیری
Sharding به دنبال حل مسئله ی مقیاس پذیری در حوزه بلاک چین است.
مقیاس پذیری به زبان ساده به این معناست که کارایی و عملکرد یک سیستم با افزایش تعداد کاربرانی که از آن استفاده میکنند چقدر تغییر خواهد کرد.
فرض کنید در یک روز ۱۰۰ تراکنش به یک شبکه بلاک چین ارسال شود و هر تراکنش به طور میانگین در ۲ دقیقه پردازش، تایید و انجام شود، حال اگر فردای آن روز ۱۰۰ هزار تراکنش به همین شبکه ارسال شود باز هم هر تراکنش به طور میانگین در ۲ دقیقه تایید خواهد شد؟
اگر بله پس این شبکه مقیاس پذیر است و افزایش تعداد تراکنش در عملکرد این شبکه تاثیری ندارد اما اگر جواب منفی است و زمان میانگین برای تایید تراکنش ها افزایش یابد پس این شبکه مقیاس پذیر نیست و این یکی از مسائل مهم برای تمام شبکه های بلاک چین است.
بهترین راه برای درک شاردینگ آشنایی با سه گانه ی مقیاس پذیری است.

تصویر بالا سه ویژگی مهم یک شبکه ی بلاک چین را نشان میدهد که تمام شبکه ها تلاش میکنند تا این سه ویژگی را همزمان تامین کنند.
اما مسئله اینجاست که یک شبکه همزمان نمیتواند هر سه ضلع این مثلث را در بلاک چین خود داشته باشد و حتما یکی از اضلاع را از دست خواهند داد.
۱-مقیاسپذیری Scalability
این ویژگی به شبکه ها این امکان را میدهد تا تعداد تراکنش بیشتری را مدیریت کنند و سرعت انجام تراکنش در شبکه را افزایش دهند.
۲-غیر متمرکز سازی Decentralization
شبکه بدون وابستگی به نهادی متمرکز یا گروهی متمرکز از افراد بتواند به کار خود ادامه دهد.
۳-امنیت Secure
شبکه در مقابل تهدید های امنیتی و در برابر اقدامات خرابکارانه (مثل حمله ۵۱ درصدی) که امنیت شبکه را به چالش میکشد مقاوم باشد.
شاردینگ تکنیکی است که هر سه ویژگی را تامین خواهد کرد و یکی از بهترین روش های ارائه شده برای حل مسئله مقیاس پذیری شبکه های بلاک چین است.
شبکه های مقیاس پذیر فعال
۱-شبکه های بلاک چین سنتی
شبکههای بلاک چین سنتی یا نسل اول مثل بیت کوین، لایت کوین و شبکه فعلی اتریوم را میتوان دسته اول نامید.
این شبکههای بلاک چین عمومی هستند و تمام افراد برای مشارکت در این شبکه ها نیازی به مجوز نداشته و به راحتی میتوانند نود این شبکه باشند.
پس رکن غیر متمرکز سازی و امنیت بالا را تامین کردهاند اما این شبکه های مقیاس پذیر نیستند.
۲-شبکه های TPS بالا
شبکه هایی که با شعار افزایش تعداد تراکنش در هر ثانیه (TPS بالا)، شبکه های دسته اول را به چالش کشیده و وارد این حوزه شدهاند.
این شبکه ها برای بالا بردن سرعت انجام تراکنش، تعداد نود ها را کاهش دادهاند و عموما بین ۱۰ تا ۱۰۰ نود دارند.
این شبکه ها هم با فرض اعتماد به نود های انتخاب شده مقیاس پذیرند و هم امنیت دارند اما یک شبکه غیر متمرکز نیستند.
مثلا شبکه بایننس تنها ۲۱ نود انتخابی دارد که توسط خود بایننس تعیین شدهاند که در مورد بیت کوین ما چنین انتخابی نداریم و همه میتوانند در شبکه به عنوان نود مشارکت کنند.
۳-اکوسیستم های چند زنجیره ای یا مالتی چین ها
پولکادات نمونهی موفق دسته سوم از شبکه های بلاک چین است.
این شبکه ها غیرمتمرکز هستند و به دلیل ایجاد بستری برای ارتباط زنجیرهای، مقیاس پذیر نیز هستند اما رکن مهم امنیت را قربانی کردهاند و امنیت در این دسته از شبکه ها با چالش های جدی همراه است.
مثلا شبکه پولکادات از ۱۰۰ پاراچین پشتیبانی خواهد کرد و برای حمله ۵۱ درصدی به این اکوسیستم تنها کافی است ۰.۵ درصد از قدرت اجماع یکی از این پاراچین ها در اختیار یک گروه خرابکار بیافتد که در نتیجه امنیت کل اکوسیستم به خطر خواهد افتاد.

شاردینگ و شبکه اتریوم
ساختار فعلی شبکه اتریوم همانند شبکه بیت کوین از الگوریتم اجماع گواه اثبات کار POW استفاده میکند.
در شبکههای مبتنی بر الگوریتم گواه اثبات کار POW از آنجا که تمام تراکنش ها توسط تمام نود ها بررسی میشود، نمیتوانیم از شاردینگ را استفاده کنیم، شاردینگ تنها در روش گواه اثبات سهام POS قابل اجرا است.
پس در نتیجه بیت کوین هم نمیتواند از شاردینگ برای بهبود مقیاس پذیری خود استفاده کند.
اما در شبکه اتریوم ۲ این ساختار به گواه اثبات سهام POS تغییر خواهد کرد و شاردینگ یکی از المان های اساسی در آینده شبکه اتریوم است.
اتریوم از ۶۴ شارد مختلف استفاده خواهد کرد که در شبکه اتریوم شارد شده تراکم شبکه کاهش یافته و سرعت پردازش تراکنش ها در هر ثانیه افزایش خواهد یافت.
شاردینگ ایده بهتری برای مقیاس پذیری یک شبکه ی بلاک چین در مقایسه با افزایش سایز دیتابیس کنونی است.
در اتریوم شارد شده هر کس میتوان به نود شبکه تبدیل شود، هزینه مورد نیاز برای راه اندازی نود در شبکه اتریوم شارد شده بسیار کمتر از شبکه اتریوم فعلی است.
برای راهاندازی نود در چنین شبکه ای نیازی به دستگاه قدرتمند از نظر قدرت پردازشی نیست و افراد با استفاده از لپ تاپ و حتی تلفن همراه خود نیز میتوانند به نود شبکه تبدیل شوند.
برای کسب اطلاعات بیشتر در مورد POW و POS می توانید به مقاله استیکینگ در همیار گلدبازار مراجعه کنید.
