فروش ویژه سرور اختصاصی
ماکرونت: Database Sharding چیست؟
- دی 25, 1401
- 0
- ملیحه ایزی
بررسی مفهوم تقسیمبندی پایگاه داده: شکستن پایگاههای داده بزرگ برای بهبود عملکرد.
هر برنامه یا وبسایتی را که در نظر بگیرید حتی در بدو شروع خود با اطلاعات و داده هایی سرکار دارد که این داده ها برای ذخیره سازی در جداولی تحت عنوان پایگاه داده یا همان (Data base) ذخیره می شود. به مرور زمان اضافه شدن کاربران و اطلاعات مربوط به یک سایت یا برنامه اطلاعاتی که نیاز به ذخیره سازی آنها در پایگاه داده داریم نیز افزایش پیدا می کند و درنتیجه ممکن است بحث مدیریت پایگاه داده و کار کردن با آن دچار مشکل شود. از اینرو برای بوجود نیامدن این مشکل باید معماری درستی برای پایگاه داده خود درنظر بگیریم که بتواند با رشد هرچند زیاد داده های ورودی به برنامه قابلیت پویایی و مقیاس پذیری خود را حفظ کند از این رو با با تکنیکی به نام sharding database برخورد کردیم.
شاردینگ در سالهای اخیر توجه زیادی را به خود جلب کرده است، اما بسیاری از آنها درک روشنی از چیستی آن یا سناریوهایی که در آنها ممکن است وجود داشته باشد ندارند. ما به بررسی چیستی شاردینگ، برخی از مزایا و معایب اصلی آن و همچنین چند روش متداول شاردینگ خواهیم پرداخت.
شاردینگ چیست؟
این عمل تکنیکی برای توزیع داده ها بر روی چندین سرور است تا هر سرور بتواند بخش کوچکتری از کل داده ها و حجم کار را مدیریت کند و در نتیجه بتوانیم عملکرد بهتری در پایگاه داده خود داشته باشیم، زیرا هر سرور می تواند هنگام کار با حجم کمتری از داده ها، پرس و جوها و به روز رسانی ها را کارآمدتر پردازش کند.
یک ماشین یا سرور پایگاه داده تنها می تواند مقدار محدودی داده را ذخیره و پردازش کند. اشتراک گذاری پایگاه داده با تقسیم داده ها به تکه های کوچکتر، به نام shards، و ذخیره آن ها در چندین سرور پایگاه داده، بر این محدودیت غلبه می کند. همه سرورهای پایگاه داده معمولاً دارای فناوری های زیربنایی یکسانی هستند و برای ذخیره و پردازش حجم زیادی از داده ها با هم کار می کنند.
روش های رایج برای اجرای اشتراک گذاری پایگاه داده
اشتراک گذاری مبتنی بر محدوده
در این رویکرد، داده ها بر اساس یک مقدار کلید، مانند شناسه کاربری یا time stamp، پارتیشن بندی می شوند و داده ها بر اساس محدوده مقدار کلید، در بین shard ها توزیع می شوند. برای مثال، همه شناسههای کاربری در محدوده 1 تا 1000 ممکن است در یک قطعه ذخیره شوند، در حالی که شناسههای کاربری در محدوده 1001 تا 2000 ممکن است در یک قطعه دیگر ذخیره شوند.
اشتراک گذاری مبتنی بر هش
در این رویکرد، از یک تابع هش برای توزیع داده ها در بین shard ها بر اساس مقدار کلید استفاده می شود. به عنوان مثال، تمام دادههای با شناسه کاربری 123 ممکن است در یک قطعه ذخیره شوند، در حالی که دادههایی با شناسه کاربری 456 ممکن است در یک قطعه دیگر ذخیره شوند.
اشتراک گذاری مبتنی بر دایرکتوری
در این رویکرد، از یک دایرکتوری مرکزی برای نگاشت مقادیر کلیدی به قطعه خاصی که داده ها در آن ذخیره می شوند، استفاده می شود. از دایرکتوری می توان برای تعیین این که یک قطعه داده متعلق به کدام قطعه است استفاده کرد و داده ها را می توان از shard مناسب بازیابی کرد.
اشتراک گذاری سفارشی
در برخی موارد، ممکن است لازم باشد که یک استراتژی اشتراک گذاری سفارشی که مخصوص نیازها و الزامات پایگاه داده و برنامه هایی است که از آن استفاده می کنند، اجرا شود. این می تواند شامل ترکیبی از روش های مختلف به اشتراک گذاری یا یک رویکرد کاملا منحصر به فرد باشد.
مزایای database sharding
– بهبود زمان پاسخگویی: بازیابی داده ها در یک پایگاه داده بزرگ بیشتر طول می کشد. سیستم مدیریت پایگاه داده برای بازیابی داده های صحیح نیاز به جستجو در ردیف های زیادی دارد. در مقابل، خرده داده ها ردیف های کمتری نسبت به کل پایگاه داده دارند. بنابراین، بازیابی اطلاعات خاص یا اجرای یک پرس و جو از یک پایگاه داده خرد شده زمان کمتری می برد.
– از قطع کامل خدمات خودداری کنید: اگر رایانه میزبان پایگاه داده از کار بیفتد، برنامه ای که به پایگاه داده وابسته است نیز از کار می افتد. اشتراک گذاری پایگاه داده با توزیع بخش هایی از پایگاه داده در رایانه های مختلف از این امر جلوگیری می کند. خرابی یکی از رایانه ها برنامه را خاموش نمی کند زیرا می تواند با سایر قطعات کاربردی کار کند. Sharding همچنین اغلب در ترکیب با تکثیر داده ها در سراسر خرده ها انجام می شود. بنابراین، اگر یک قطعه در دسترس نباشد، می توان به داده ها دسترسی پیدا کرد و از یک قطعه جایگزین بازیابی کرد.
– مقیاس کارآمد: یک پایگاه داده در حال رشد، منابع محاسباتی بیشتری را مصرف می کند و در نهایت به ظرفیت ذخیره سازی می رسد. سازمان ها می توانند از اشتراک گذاری پایگاه داده برای افزودن منابع محاسباتی بیشتر برای پشتیبانی از مقیاس بندی پایگاه داده استفاده کنند. آن ها می توانند در زمان اجرا بدون خاموش کردن برنامه برای نگهداری، خرده های جدیدی اضافه کنند.
معایب database sharding
در اینجا برخی از معایب احتمالی اشتراک گذاری پایگاه داده عبارتند از:
– افزایش پیچیدگی: اشتراک گذاری یک پایگاه داده می تواند پیچیدگی را به سیستم اضافه کند، زیرا داده ها در چندین سرور پخش می شوند و باید راهی برای مسیریابی پرس و جوها به قطعه صحیح وجود داشته باشد.
– کاهش عملکرد برای درخواستهای خاص: اگر یک پرس و جو نیاز به دسترسی به دادهها از چند shard داشته باشد، کندتر از زمانی که همه دادهها روی یک سرور ذخیره شده اند عمل می کند.
– نقطه اتصال احتمالی: اگر shard خاصی حجم نامتناسبی از ترافیک خواندن/نوشتن دریافت کنند، ممکن است به گلوگاه تبدیل شوند که کل سیستم را کند میکند.
– سازگاری داده: در سیستمهای توزیعشده مانند اشتراکگذاری، پیگیری همه دادهها و اطمینان از سازگار بودن آن دشوار است.
– خطر بیشتر از دست رفتن داده ها: داشتن چندین سرور احتمال خرابی سخت افزار را افزایش می دهد که می تواند منجر به از دست رفتن اطلاعات شود.
– افزایش سربار عملیاتی: مدیریت و نگهداری چندین سرور نسبت به مدیریت یک پایگاه داده یکپارچه زمانبر و پرهزینهتر است.
-هزینه های سخت افزاری بالاتر: داشتن چندین سرور می تواند گران تر از داشتن یک سرور واحد و قدرتمندتر باشد.
جایگزین های database sharding چیست؟
اشتراک گذاری پایگاه داده، یک استراتژی افقی است که گره ها یا رایانه های اضافی را برای به اشتراک گذاشتن حجم کاری یک برنامه اختصاص می دهد. سازمان ها به دلیل معماری مقاوم در برابر خطا از مقیاس افقی سود می برند. هنگامی که یک کامپیوتر از کار می افتد، بقیه بدون اختلال به کار خود ادامه می دهند. طراحان پایگاه داده با پخش کردن خرده های منطقی در چندین سرور، زمان خرابی را کاهش می دهند.
با این حال، شاردینگ یکی از چندین استراتژی دیگر برای مقیاسبندی پایگاه داده است. که به برخی از تکنیک های دیگر آن در ادامه اشاره می کنیم:
-مقیاس بندی عمودی( vertical scaling): مقیاس بندی عمودی قدرت محاسباتی یک ماشین را افزایش می دهد. به عنوان مثال، تیم فناوری اطلاعات یک CPU، RAM و یک هارد دیسک را به سرور پایگاه داده اضافه می کند تا ترافیک افزایشی را مدیریت کند.
مقایسه database shardingو vertical scaling
مقیاس بندی عمودی هزینه کمتری دارد، اما محدودیت زیادی را برای منبع محاسباتی ایجاد می کند زیرا باید به ارتقا خوب همان سیستم فکر کرد. در همین حال، شاردینگ، یک استراتژی مقیاس بندی افقی، برای پیاده سازی آسان تر است. به عنوان مثال، تیم فناوری اطلاعات به جای ارتقاء سخت افزار قدیمی کامپیوتر، چندین کامپیوتر را نصب می کند.
– کپی برداری(Replication): تکنیکی است که کپیهای دقیقی از پایگاه داده میسازد و آنها را در رایانههای مختلف ذخیره میکند. طراحان پایگاه داده از Replication برای طراحی یک سیستم مدیریت پایگاه داده رابطه ای مقاوم به خطا استفاده می کنند. هنگامی که یکی از رایانه های میزبان پایگاه داده از کار بیفتد، دیگر نسخه های موجود جایگزین آن می شوند. کپی برداری یک روش معمول در سیستم های محاسباتی توزیع شده است.
مقایسه database sharding و Replication
در اشتراک گذاری پایگاه داده کپی از همان اطلاعات ایجاد نمی شود. در عوض، یک پایگاه داده را به چند قسمت تقسیم می کند و آن ها را در رایانه های مختلف ذخیره می کند. بر خلاف کپی برداری، اشتراک گذاری پایگاه داده منجر به در دسترس بودن بالا نمی شود. شاردینگ را می توان در ترکیب با کپی برداری برای دستیابی به مقیاس و در دسترس بودن بالاتر استفاده کرد.
– پارتیشن بندی(Partitioning): پارتیشن بندی فرآیند تقسیم یک جدول پایگاه داده به چند گروه است. پارتیشن بندی به دو نوع طبقه بندی می شود:
پارتیشن بندی افقی پایگاه داده را بر اساس ردیف ها تقسیم می کند.
پارتیشن بندی عمودی پارتیشن های مختلفی از ستون های پایگاه داده ایجاد می کند.
مقایسه database sharding و partitioning
database sharding مانند پارتیشن بندی افقی است. هر دو فرآیند پایگاه داده را به چندین گروه از ردیف های منحصر به فرد تقسیم می کنند. پارتیشن بندی همه گروه های داده را در یک رایانه ذخیره می کند، اما اشتراک گذاری پایگاه داده آنها را در رایانه های مختلف پخش می کند.
نتیجه گیری
اشتراک گذاری پایگاه داده تکنیکی است برای توزیع داده های یک پایگاه داده در چندین سرور یا shard ها که به منظور بهبود مقیاس پذیری و عملکرد استفاده می شود. توجه به این نکته مهم است که شاردینگ میتواند پیچیدگی بیشتری را به سیستم و همچنین معماری بیافزاید که فعلا راهحل کاملی برای آن نیست. بنابراین، مهم است که به دقت نحوه پیاده سازی sharding و نحوه مدیریت، اجرا و نگهداری آن را در نظر بگیرید.
«ملیحه ایزی»، فارغالتحصیل مقطع کارشناسی ارشد مهندسی کامپیوتر، گرایش نرم افزار است.
تمامی حقوق برای ماکرونت محفوظ است.