JavadAgha
JavadAgha
خواندن ۲ دقیقه·۶ ماه پیش

کدام پایگاه‌داده برای سیستم جمع‌آوری متریک‌ها مناسب است؟

این یکی از مهمترین سوالاتی است که باید در یک مصاحبه به آن پاسخ دهیم.

الگوی دسترسی به داده

همانطور که در نمودار نشان داده شده است، هر برچسب (label) در محور y نماینده یک سری زمانی (که به طور منحصربفرد توسط نام‌ها و برچسب‌ها شناسایی می‌شود) در حالی که محور x نشان دهنده زمان است. حجم بار کاری در سمت نوشتن داده‌ها سنگین است. همانطور که میبینید، میتواند در هر لحظه نقاط داده‌های سری زمانی زیادی نوشته شود. میلیونها متریک عملیاتی در روز نوشته می‌شود و بسیاری از متریک‌ها با فرکانس بالا جمع‌آوری میشوند، بنابراین ترافیک در سمت نوشتن داده بدون شک سنگین است. در همان زمان، بار خواندن به صورت لحظه‌ای (spiky) است. هم سرویس‌های نمایش و هم سرویس‌های هشدار، کوئری‌هایی را به پایگاه داده ارسال می‌کنند و بسته به الگوهای دسترسی نمودارها و هشدارها، حجم خواندن می‌تواند شدید باشد.

انتخاب پایگاه داده مناسب

سیستم ذخیره داده قلب طراحی هر سیستمی است. توصیه نمی‌شود که سیستم ذخیره سازی خودتان را بسازید یا از یک سیستم ذخیره سازی همه منظوره (MySQL) برای این کار استفاده کنید. یک پایگاه داده همه منظوره، در تئوری میتواند از دادههای سری زمانی پشتیبانی کند، اما نیاز به تنظیم سطح حرفه‌ای دارد تا در مقیاس ما کار کند. به طور خاص، یک پایگاه داده رابطه‌ای برای عملیات‌هایی که معمولاً روی داده‌های سری زمانی انجام میشود، بهینه نشده است. برای مثال، محاسبه میانگین متحرک (moving average) در یک پنجره زمانی چرخشی (rolling time window) نیازمند SQL پیچیده است که خواندن آن دشوار است.. علاوه بر این، برای پشتیبانی از برچسبگذاری/برچسبگذاری داده‌ها، باید برای هر برچسب یک نمایه اضافه کنیم. علاوه بر این، یک پایگاه داده رابطهای همهمنظوره در برابر بار نوشتن سنگین مداوم عملکرد خوبی ندارد. در مقیاس ما، باید تلاش زیادی برای تنظیم پایگاه داده صرف کنیم و حتی پس از آن، ممکن است عملکرد خوبی نداشته باشد.

NoSQL چطور ؟ در حالت تئوری، چند پایگاه داده NoSQL میتوانند دادههای سری زمانی را به طور موثر مدیریت کنند. برای مثال، هم Cassandra و هم Bigtable میتوانند برای داده‌های سری زمانی استفاده شوند. با این حال، این نیازمند دانش عمیق از عملکرد داخلی هر NoSQL برای طراحی یک طرح قابل مقیاس برای ذخیره و کوئری موثر داده‌های سری زمانی است. با وجود پایگاه دادههای سری زمانی در مقیاس صنعتی که به راحتی در دسترس هستند، استفاده از یک پایگاه داده NoSQL همه‌منظوره جذاب نیست.

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

nosqlsqlmetricsطراحی سیستم های نرم افزاریمهندسی نرم افزار
کنجکاو در مباحث مهندسی نرم افزار
شاید از این پست‌ها خوشتان بیاید