![](https://nexob.ir/storage/images/shares/blog/what-is-sharding/1.jpeg)
با پیدایش بیت کوین، دیدگاه بسیاری از افراد به ارزش بلاک چین تغییر کرد. این فناوری به یکی از هیجانانگیزترین پیشرفتهای فنی قرن بیست و یکم تبدیل شده است. هر چه بلاک چین شناختهتر شد، افراد بیشتری برای زیرساخت پروژههای خود از آن استفاده کردند. بلاک چین مانند ظهور اینترنت در دهههای 80 و 90 میلادی است. در آن زمان اینترنت پیشگام ارتباطات آنلاین بود و بلاک چین امروزه راه جدیدی برای افزایش دارایی براساس شبکههای داده و داراییهای دیجیتالی ایجاد میکند. درواقع این شبکهها شامل محیط فناوری غیرمتمرکز خود هستند که بهمنظور ارائه خدمات دفتر کل و قرارداد هوشمند به اپلیکیشنهای غیرمتمرکز (dApps) شناخته میشوند. آنها برای تسهیل برنامههای خود از اتریوم استفاده میکنند. هدف اتریوم ایجاد رایانه جهانی برای اجرا، رشد و گسترش اپلیکیشنهای غیرمتمرکز است. شبکه اتریوم درصورتی میتواند به این هدف دست یابد که حجم زیادی از دادهها را در سیستم خود ذخیره و نگهداری کند. البته این کار در حال حاضر امکانپذیر نیست، اما باز هم غیرممکن، یعنی غیرممکن.
به بیان ساده، شاردینگ یعنی تقسیم یک پردازش بزرگ به پردازشهای کوچکتر؛ فرض کنید قصد تکمیل یک جورچین ۱,۰۰۰ تکه را دارید. به جای آن که تمام ۱,۰۰۰ تکه را روی میز بریزید و شروع به چیدن آنها کنید، میتوانید آنها را بر اساس رنگ تکهها جدا کنید و سپس کار تکمیلش را انجام دهید. این دستهبندی باعث میشود بررسی تکههایی که برای بخش خاصی هستند، آسانتر و سریعتر باشد. شاردینگ راهکاری است که بار پردازش را به قسمتهای کوچکتر تقسیم میکند و به این طریق، ظرفیت و سرعت شبکه را افزایش میدهد. شاردینگ بهعنوان راهکاری ارائه شده است که بهلحاظ تئوری میتواند با کمترین هزینه، به چالشهای مقیاسپذیری بلاک چین غلبه کند. واژه شارد (Shard) بهمعنای تکه یا قطعه است و شاردینگ از لحاظ واژگانی به تکهتکه یا قطعهقطعه کردن یک چیز گفته میشود. برای درک بهتر مفهوم شاردینگ، ابتدا نگاهی به تاریخچه آن خواهیم داشت و سپس نقش آن را در فناوری بلاک چین بررسی میکنیم.
با نگاهی به تاریخچه Sharding می توان درک بهتری از این مفهوم داشت. از آن جایی که از اواخر دهه ۹۰ میلادی، Sharding در مدیریت پایگاههای دادهٔ متمرکز از آن مورد استفاده قرار می گرفته، بنابراین یک مفهوم جدید نیست. زمانی که توسعه دهندگان یکی از اولین بازیهای نقش آفرینی چند نفره و آنلاین به نام Ultima Online (اولتیما آنلاین) تصمیم گرفتند برای مدیریت ترافیک ورودی، در سرورهای مختلف بازیکنان را پخش کنند، استفاده از اصطلاح Sharding رایج شد. تقسیم بندی پایگاه داده مشتریان بر اساس مناطق جغرافیایی، مثال رایج از شاردینگ یک پایگاه داده بزرگ در دنیای کسب و کار است. مشتریان واقع در مکانهای جغرافیایی یکسان، پس از گروه بندی شدن با یکدیگر، در سرورهای منحصربه فرد قرار میگیرند.
با استفاده از شاردینگ، دیتابیس به اجزای کوچکتری تقسیم میشود. در نتیجه مدیریت دادهها آسانتر خواهد شد. زمانی که یک دیتابیس به شاردهای کوچکتر تقسیم میشود، سرعت پردازش و تراکنش در این شاردهای کوچک، سریعتر خواهد بود. این مورد به بهبود عملکرد کلی سیستم کمک زیادی میکند. مزیت دیگر شاردینگ، کاهش هزینهها است. سیستمی که از ساختار شاردینگ استفاده میکند، در مقایسه با سیستمهای دارای پایگاه داده یکتا، به مراتب ارزانتر است.
هرچند تکنیک شاردینگ بسیاری از مشکلات ما را حل کرده اما هیچ سیستمی بدون ایراد نیست. یکی از مشکلات شاردینگ، نحوه پیادهسازی آن از منظر تکنیکال و فنی است. هرچند ما در این مقاله به سادگی آن را توضیح میدهیم، اما اجرای چنین سیستمی، پیچیدگیهای فراوانی دارد. در صورتی که این تکنیک به درستی اجرا نشود، ممکن است کل دادهها را از دست بدهیم. یکی دیگر از مشکلات، ایجاد تعادل میان اندازهی دادههای ذخیره شده در هر شارد است. مثلا فرض کنید که ما قصد داریم، اسامی ۱ میلیون دانشجوی مثال قبل را صرفا بر اساس حروف الفبا تقسیم بندی کنیم. مثلا از حرف الف تا ط در شارد اول و از حرف ظ تا ی را در شارد دوم قرار دهیم. ممکن است تعداد افراد ذخیره شده در شارد اول بسیار بیشتر از شارد دوم باشد. لذا بار تحمیلی به شارد یک بسیار بالاتر از شارد دو است. مسئله اصلی اینجاست که باید نحوه توزیع دادهها میان شاردهای مختلف را به گونهای انجام دهیم که متعادلترین حالت، برای کل سیستم رعایت شود. این مدیریت دادهها، زمانی که تعداد تراکنشها بسیار بالاست، واقعا کار دشواری است. مشکل بعدی، مشکلات سخت افزاری است. ماشینهای پردازش دیتا که با ساختار شاردینگ منطبق باشند متفاوت از سایر پردازشگرها هستند. اینطور نیست که ما بتوانیم با استفاده از سختافزارهای فعلی، دیتابیس شارد شده را مدیریت کنیم. این مورد نیز مسئله ساز خواهد بود. در بخش مزایا و معایب ما مدعی نیستیم که تمام موارد را اشاره کردهایم، حتما موارد دیگری نیز وجود دارد که ما در این مقاله به دنبال آن نیستیم. در بخش بعد به سراغ استفاده از تکنیک شاردینگ در دنیای بلاک چین میرویم.
نتیجه گیری :
شاردینگ (Sharding) ستون فقرات مقیاسپذیری در شبکههای غیرمتمرکز است و پروژههای مربوط به آن است. با توجه به مشکل مقیاسپذیری بیشرت بلاک چینها، شاردینگ راه حلی مناسبی برای افزایش ظرفیت و سرعت بلاک چینها است. اتریوم ۲.۰ قصد دارد در آینده تحولی ابا ایجاد قابلیت شاردینگ در شبکه خود ایجاد کند.