معرفی
اینفلوکسدیبی (InfluxDB) خانوادهای از پایگاههای داده سری زمانی است. این نوع پایگاه داده برای ذخیره و پرسوجوی دادههایی طراحی شده که زمان ثبت آنها بخش اصلی معنای داده است. مصرف CPU سرور در هر دقیقه، زمان پاسخ یک API، دمای حسگر یا تعداد درخواستهای یک سرویس نمونههایی از داده سری زمانی هستند. مستندات رسمی طراحی شِمای InfluxDB جزئیات این مدل را توضیح میدهد.
مدل داده InfluxDB از زمان، فیلدها و برچسبها استفاده میکند. برچسبها برای فیلتر و گروهبندی دادهها به کار میروند. پیش از طراحی شِما باید مشخص کنید کدام مقدارها برای جستوجو و گروهبندی استفاده میشوند و کدام دادهها بهتر است بهصورت فیلد ذخیره شوند.
پیش از انتخاب، باید نسخه و عرضه موردنظر را مشخص کنید. InfluxDB در نسخهها و عرضههای مختلفی مانند متنباز، Cloud و Enterprise ارائه شده است و زبان پرسوجو، امکانات نگهداشت داده، دسترسیهای مدیریتی، مقیاسپذیری و مدل مجوز آنها یکسان نیست. به همین دلیل نباید قابلیت یک نسخه را بدون بررسی مستندات به نسخه دیگر نسبت داد. برای نمونه، مستندات رسمی هر عرضه را در پرتال مستندات InfluxData بررسی کنید؛ نباید قابلیت یک نسخه را بدون راستیآزمایی به نسخه دیگر نسبت داد.
تیمهای دواپس، مهندسان زیرساخت، توسعهدهندگان بکاند و تیمهای اینترنت اشیا معمولا از InfluxDB برای نگهداری متریکها و بررسی روند آنها استفاده میکنند. این ابزار بهتنهایی یک سامانه کامل مشاهدهپذیری نیست. داده را از برنامهها، عاملهای جمعآوری یا سرویسهای دیگر دریافت میکند و میتواند بهعنوان منبع داده Grafana استفاده شود. راهنمای رسمی نوشتن داده و راهنمای اتصال Grafana به InfluxDB مسیرهای رایج دریافت و نمایش داده را نشان میدهند.
چه زمانی InfluxDB را بررسی کنید؟
این ابزار را زمانی در فهرست انتخاب قرار دهید که داده شما بیشتر عددی و زماندار است، نرخ ورود داده قابلپیشبینی دارید و پرسوجوها بر روند، بازه زمانی، فیلتر برچسبها و تجمیع متکی هستند.
پیش از استقرار، نرخ نوشتن، مدت نگهداشت داده خام و داده تجمیعشده، تعداد سریهای زمانی، تعداد و تغییرپذیری برچسبها، نیاز هشداردهی و توان تیم برای اداره نسخه محلی را مشخص کنید.
پایلوت را با حجم، نرخ ورود و برچسبهایی نزدیک به محیط واقعی اجرا کنید. نتیجه قابلقبول این است که نوشتن داده نمونه، پرسوجوهای اصلی و داشبورد موردنیاز در بازه آزمایش بدون رشد کنترلنشده تعداد سریهای زمانی یا هزینه عملیاتی نامتناسب انجام شود.
اگر شناسه کاربر، شناسه درخواست یا مقدارهای بسیار متغیر را بهعنوان برچسب ذخیره میکنید، ابتدا شِما را بازطراحی کنید. برچسبهای پرتعداد یا دارای مقدارهای بسیار متنوع میتوانند Cardinality (کاردینالیتی) را بالا ببرند و روی مصرف منابع و کارایی اثر بگذارند. راهنمای رسمی طراحی شِما نیز بر کنترل کاردینالیتی تأکید دارد.
برای رخدادهای خام با جزئیات زیاد، جستوجوی متنی در لاگها یا دادههای تراکنشی رابطهای، InfluxDB معمولا انتخاب نخست نیست. در چنین وضعیتی ابزار مدیریت لاگ، پایگاه داده رابطهای مانند PostgreSQL یا سامانه مناسب تحلیل رخداد را جداگانه بررسی کنید.
نگهداشت بلندمدت داده نیز به فضای ذخیرهسازی، سیاست حذف یا تجمیع داده و مسئولیت عملیاتی نسخه انتخابی بستگی دارد.
ویژگیهای کلیدی
برای آشنایی بهتر با این ابزار، توجه به موارد زیر میتواند مفید باشد.
-
مدل داده مناسب دادههای زمانمحور
داده با زمان، فیلدها و برچسبها ثبت میشود. برچسبها برای فیلتر بر اساس سرویس، میزبان یا محیط مناسباند، اما بهتر است مقدارهای بسیار متغیر مانند شناسه درخواست را بهعنوان برچسب ذخیره نکنید. این کار میتواند کاردینالیتی را افزایش دهد. docs.influxdata.com
-
پرسوجو و تجمیع بازههای زمانی
برای فیلتر زمانی، تجمیع و تحلیل روند مناسب است. زبان و قابلیتهای پرسوجو میان نسخهها و عرضههای InfluxDB تفاوت دارد، بنابراین پیش از انتخاب باید مستندات نسخه هدف را بررسی کنید. docs.influxdata.com
-
نگهداشت و مدیریت چرخه عمر داده
سیاست نگهداشت، حذف یا تجمیع داده به نسخه و عرضه مورد استفاده وابسته است. پیش از استقرار، هزینه نگهداشت داده خام در بلندمدت و نیاز به دادههای تجمیعشده را در پایلوت بررسی کنید.
-
دریافت داده از برنامهها و عاملها
برنامهها و عاملهای جمعآوری میتوانند داده را از مسیرهای نوشتن و کلاینتهای پشتیبانیشده به InfluxDB ارسال کنند. روش دریافت داده را باید با نسخه مورد استفاده هماهنگ کنید. docs.influxdata.com
-
عرضههای محلی و ابری
InfluxDB گزینههای مختلفی برای استقرار دارد. اجرای محلی کنترل بیشتری به تیم میدهد، اما مسئولیت ارتقا، پشتیبانگیری، ظرفیت و امنیت را هم به تیم منتقل میکند. سرویس ابری نیز مدل هزینه و محدودیتهای خودش را دارد. docs.influxdata.com
-
اتصال به Grafana
InfluxDB میتواند منبع داده Grafana برای ساخت داشبورد باشد. این اتصال به معنی جایگزین شدن Grafana با ابزار جمعآوری داده یا InfluxDB با سامانه کامل پایش نیست و پیکربندی آن به نسخه و روش احراز هویت بستگی دارد. grafana.com
کاربردها
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
نگهداری متریکهای سرویس و زیرساخت
مصرف CPU و حافظه، تاخیر درخواستها، نرخ خطا و تعداد درخواستها را برای بررسی وضعیت سرورها و APIها ذخیره کنید. شِما را طوری طراحی کنید که شناسههای بسیار متغیر به برچسب تبدیل نشوند.
-
تحلیل عملکرد API و نرمافزار
زمان پاسخ، نرخ خطا و تعداد فراخوانی مسیرهای API را ثبت کنید تا اثر انتشار نسخه و تغییرات عملکرد را بررسی کنید. برای ردگیری یک درخواست مشخص یا نگهداری جزئیات رخدادهای خام، ابزار Trace یا لاگ مناسبتر است.
-
پایش تجهیزات و اینترنت اشیا
دما، رطوبت، موقعیت، مصرف انرژی یا سایر دادههای حسگر را ثبت کنید و روند آنها را در طول زمان بررسی کنید. پیش از انتخاب، نرخ ارسال هر دستگاه، تعداد دستگاهها و مدت نگهداشت داده را با داده نزدیک به محیط واقعی آزمایش کنید.
-
ساخت داشبوردهای عملیاتی
شاخصهای لحظهای و تاریخی مانند مصرف منابع، نرخ تراکنش یا کیفیت سرویس را در Grafana نمایش دهید. Grafana لایه نمایش است و شیوه جمعآوری داده و هشداردهی باید جداگانه طراحی شود.
-
تحلیل دادههای محصول زماندار
شاخصهای تکرارشونده مانند کاربران فعال یا نرخ استفاده از یک قابلیت را زمانی ثبت کنید که روند زمانی مهمتر از جزئیات هر رخداد باشد. برای تحلیل رخدادهای خام با ابعاد و شناسههای بسیار زیاد، معماریهای دیگر را هم بررسی کنید.
ابزارهای جایگزین
در کنار اینفلوکسدیبی، ابزارهای مشابه زیر نیز در دسترس هستند.
پرسشهای رایج درباره اینفلوکسدیبی
اگر درباره این ابزار پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
آیا اینفلوکسدیبی جایگزین PostgreSQL است؟
معمولا نه. InfluxDB برای متریکها و دادههای زمانمحور طراحی شده است، اما PostgreSQL برای دادههای تراکنشی و رابطهای عمومی انتخاب مناسبتری است. اگر هر دو نوع داده را دارید، معمولا بهتر است نقش هر پایگاه داده را جدا مشخص کنید.
تفاوت اینفلوکسدیبی و Prometheus چیست؟
Prometheus بیشتر برای جمعآوری متریک، پرسوجو و هشداردهی در پایش سامانهها استفاده میشود. InfluxDB یک پایگاه داده سری زمانی عمومیتر است و برای دادههای حسگر، اینترنت اشیا و شاخصهای عملیاتی نیز استفاده میشود. انتخاب میان آنها به روش دریافت داده، مدت نگهداشت، نیاز هشداردهی و ابزارهای موجود در تیم بستگی دارد.
برای یادگیری اینفلوکسدیبی باید SQL بلد باشم؟
آشنایی با مفاهیمی مانند فیلتر، تجمیع و گروهبندی کمک زیادی میکند. زبان پرسوجو میان نسخهها و عرضههای InfluxDB یکسان نیست، بنابراین باید مستندات نسخهای را که قرار است استفاده کنید بررسی کنید.
آیا اینفلوکسدیبی برای داشبوردسازی کافی است؟
خیر. InfluxDB داده را ذخیره و پرسوجو میکند، اما برای داشبوردهای عملیاتی معمولا ابزار جداگانهای مانند Grafana به آن متصل میشود. grafana.com
چه زمانی اینفلوکسدیبی انتخاب نامناسبی است؟
اگر داده شما بیشتر تراکنشی و رابطهای است، به ارتباطهای پیچیده بین جدولها نیاز دارید یا رخدادهای خام با شناسهها و برچسبهای بسیار متغیر ذخیره میکنید، ابزار دیگری را هم بررسی کنید. نگهداشت بلندمدت داده بدون برآورد ظرفیت، نرخ رشد و هزینه نیز میتواند ریسک عملیاتی ایجاد کند.
آیا همه نسخههای InfluxDB متنباز و رایگاناند؟
خیر. InfluxDB نسخهها و عرضههای متفاوتی مانند متنباز، Cloud و Enterprise دارد و مدل مجوز، قیمتگذاری و قابلیتهای آنها یکسان نیست. پیش از انتخاب، صفحه محصول و مستندات نسخه موردنظر را بررسی کنید.