ابزار و کتابخانه ها

یوتیوب، وایتِس و حل مشکل مقیاس‌پذیری MySQL

از حدود پنج سال پیش که درگیر مشکل مقیاس‌پذیری MySQL‌ شدم و بابت رفع آن، به دامن NoSQL‌ ها پناه بردم تا امروزه که مجدداً بانک‌های اطلاعاتی رابطه‌ای، حاکم بلامنازع بانک‌های اطلاعاتی دنیا شده‌اند و امکانات متنوعی به آنها افزوده شده است، همواره با این سوال مواجه شده‌ام که چگونه سرورهای MySQL را برای حجم بالای داده و مقیاس‌پذیری راحت، پیکربندی کنیم.

مشکل هم اینجاست که خیلی از تیم‌ها و استارتاپ‌ها با MySQL‌ شروع می‌کنند و به مرور زمان و با افزایش تعداد درخواست‌ها و داده‌ها با MySQL دچار چالش می‌شوندو مهاجرت از این دیتابیس و امتحان گزینه‌های دیگر، هزینه زیادی برای این شرکت‌ها دارد. بنابراین بهتر است که راه‌حلی پایدار و مناسب برای مقیاس‌پذیری MySQL پیدا کنیم.

قبلاً در همین وبلاگ، TiDB را یک جانشین مقیاس‌پذیر MySQL‌ معرفی کردیم (چند گزینه دیگر هم در آن فرسته، معرفی شد) اما در هر صورت، اگر بتوانیم با خود MySQL مشکل Sharding (توزیع داده‌ها در یک شبکه) را حل کنیم، راه حل مناسب‌تری برای این موضوع خواهد بود.

یوتیوب حدود نه سال پیش به این مشکل برخورد. هم نیاز به راه حلی داشت که بتواند کوئری های ارسال شده را به یک شبکه از سرویس های MySQL ارسال کند و هم اینکه به خاطر کوئری‌های مختلفی که افراد تیم مهندسی یوتیوب بر روی سرورهای MySQL اجرا می‌کردند، سرویس دهی این بانک اطلاعاتی، دچار اشکال نشود.

Sugu Sougoumarane و همکارانش تصمیم گرفتند یک معماری جانبی به عنوان یک میان افزار برای MySQL‌ طراحی کنند که هم بتواند نقش یک پروکسی و توزیع کننده کوئری‌ها را برعهده بگیرد و هم از اجرای کوئری های نامناسب که زمان زیادی از سرورها را به خود اختصاص می‌دهد جلوگیری کرده، آنها را بهینه و بازنویسی کنند. خروجی این تلاش، پروژه متن‌باز Vitess شد که امروزه بسیاری از سایتهای مطرح دنیا با تعداد درخواست‌های روزانه میلیونی، از این معماری برای مقیاس‌پذیر کردن کلاسترهای MySQL خود استفاده کرده‌اندو مطمئنا راه حلی که برای یوتیوب، اسلک و Hubspot مناسب بوده است، می‌تواند هر نیاز دیگری را هم پاسخگو باشد.

برگرفته از سایت رسمی وایتس به تاریخ ۱۳۹۸/۰۹/۰۴

معماری وایتِس

در معماری وایتِس با دو مولفه اصلی بیشتر سرو کار نداریم یکی VTGATE که واسط بین برنامه‌ها و کلاستر MySQL است و توزیع کوئری‌ها در شبکه و مدیریت کانکشن‌ها را برعهده دارد و دومی هم VTTABLET که در کنار هر سرویس MySQL‌ قرار می‌گیرد و به عنوان یک پروکسی، هم محافظ این سرویس، مدیریت خودکار و افزایش کارآیی آن از طریق بازنویسی کوئری‌ها است. درخواست‌های مدیریتی هم از طریق VTCTL به کلاستر ارسال می شود.

منبع : سایت رسمی vitess

مزایای وایتِس

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

منبع : صفحه اصلی سایت Vitess.io

بنابراین توضیحات، اگر با MySQL‌ به اشکال برخورده‌اید و یا نگران از آینده استفاده ازاین دیتابیس در حجم بالای داده‌ها هستید، این میان افزار قدرتمند را که اواسط آبان ۹۸، نسخه ۴ آن وارد بازار شده است را نصب کرده و با قدرت به کار با MySQL خود ادامه دهید و دنبال راه‌حل‌های دیگر نباشید.

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.
0 0 رای ها
Article Rating
اشتراک در
اطلاع از
guest

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

6 Comments
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
دکمه بازگشت به بالا
6
0
افکار شما را دوست داریم، لطفا نظر دهید.x