مروری بر دیتابیسهای Time-Series
دیتابیسهای Time-Series
دیتابیسهای بر پایهی زمان (Time-Series) که از جمله آنها میتوان InfluxDB را نام برد برای نظارت دقیق بر دادههایی که با گذشت زمان تغییر میکنند ایده آل هستند.
زیرساختهای شما تقریبا هر ساله به تغییراتی احتیاج دارند و سیستمها همواره در حال پیچیده شدن و تغییرات عمده هستند، هرچند این رشد سیستمها بدون نظارت ما بی معنی خواهد بود. این دقیقا همان نقطهای است که ابزارهای مدیریتی به کمک میآیند و به مدیران و ادمین ها امکان مشاهده تغییرات به صورت real-time را میدهند.
اما اگر بخواهیم مشکلات را قبل از وقوع پیشبینی کنیم چه اقداماتی پیش روی خود داریم؟ جمعآوری اطلاعات در مورد محیط دیتابیس، پنجرهای رو به زیرساختهای نرمافزار و چگونگی عملکرد آن به روی ما باز میکند و به ما توانایی پیشبینی داده ها را میدهد؛ زمانی که از این روند باخبر باشیم میتوانیم از بروز مشکلات جلوگیری کنیم.
قبل از اینکه بخواهیم از این داده ها استفاده کنیم بایستی یاد بگیریم که چگونه آن را جمع آوری و ذخیره کنیم. برای مثال اگر بخواهیم اطلاعات کارکرد 100 پردازنده را هر 10 ثانیه جمعآوری کنیم، مقادیر زیادی داده خواهیم داشت. علاوه بر آن اگر هر پردازنده شامل 15 کانتینر باشد و بخواهیم داده های آنها را نیز جمع اوری کنیم چه؟ اگر بخواهیم به ازای هر پردازش داده ها را جمع اوری کنیم چه؟
اینجا است که دیتابیس های Time-series به کار می آیند، این دیتابیسها داده ها را بر اساس زمان ذخیره میکنند. اما این دقیقا به چه معنا است؟
در ادامه این مطلب به بررسی این موضوع و همچنین معرفی یکی از مشهورترین دیتابیسهای time-series به نام InfluxDB میپردازیم. در ادامه متوجه خواهید شد که:
• به چه داده ها و دیتابیس هایی time-series میگوییم.
• اطلاعات پایه ای در مورد این دیتابیس ها به دست می اورید.
معرفی مفهموم Time-Series
اگر با مفهوم دیتابیسهای رابطهای مانند MySQL آشنا باشید، مفاهیمی مانند جداول، ستون ها و کلید اصلی برای شما اشنا هستند. گستره استفاده از دیتابیسهای رابطهای بسیار فراوان است، شما میتوانید دادهها را به راحتی با بازنوشت و جایگذاری آپدیت کنید.
ولی اگر قرار باشد دادههای تولیدی توسط یک ماشین را جمع آوری کنید با دادههای بسیاری سر و کار خواهید داشت و قادر نخواهید بود که دادهها را دنبال کنید چرا که ماشین همواره در حال تغییر و تحول و جمع آوری دادهها برای ارائه ی عملکردی بهتر است، این مقدار داده ممکن است دهها گیگابایت در هر ساعت باشد. هرچند توسط یک دیتابیس رابطه ای میتوانید این مقادیر را جمع اوری کنید، اما در صورت تمایل به افزایش مقیاس یا افزایش کارایی این داده ها دارید استفاده از یک دیتابیس رابطه ای، گزینه مناسبی نخواهد بود.
چه زمان از دیتابیس های Time-Series استفاده کنیم؟
با توجه به مثال قبل متوجه شدیم که جمع آوری و افزایش مقیاس داده ها مشکل خواهد بود، فرض کنید به جای جمع آوری دادهها در ستون و ردیف های یک جدول سیستمی در اختیار داریم که ردیفهایی از داده را بر اساس یک مقیاس زمانی برای ما جمع آوری میکند.
وقتی داده ها به این شکل در اختیار ما قرار بگیرند، طبیعتا دنبال کردن آن ها آسانتر خواهد بود. با جمع آوری چنین دادههایی در طول زمان متوجه تغییر رفتار یک سیستم در گذشته و نحوه کنونی عملکرد آن خواهید شد و حتی پیش بینی از تغییر وضعیت آن در آینده نیز ممکن خواهد بود.
InfluxDB: یک دیتابیس Time-Serie
InfluxDB یک دیتابیس از نوع Time-series و متن باز است که توسط تیم InfluxData توسعه پیدا کرده است. InfluxDB به کمک زبان Go توسعه پیدا کرده و شما میتوانید بدون نصب هیچ متعلقاتی آن را نصب کنید. برای جمع آوری داده ها محدودیتی پیش روی شما نیست و مهم نیست که داده های خود را چگونه و با چه فرمتی به InfluxDB میدهید.
InfluxDB نسبت به بقیه دیتابیس های time-Serie رشد بهتری داشته و همچنین کد منبع آن نیز به راحتی قابل استفاده است.
ویژگیهای InfluxDB
مواردی هستنند که باعث میشوند InfluxDB از بقیه دیتابیسها متمایز شود.
• عملکرد:
عملکرد خوب یکی از مشخصههای اصلی InfluxDB است. این عملکرد خوب به شما این امکان را میدهد که حتی زیر بارهای سنگین دادهای، با سرعت و کیفیت خوب از داده ها استفاده کنید. برای انجام این کار InfluxDB از فشرده سازی برای مدیریت دادهها استفاده میکند و قادر است تا 1 میلیون داده را در هر ثانیه جمع آوری و مدیریت کند.
• کوئریهای SQL مانند:
اگر با سینتکس SQL آشنا هستید، کوئری گرفتن از InfluxDB نیز برایتان آشنا خواهد بود. InfluxDB از سینتکس خاص خود به نام InfluxQL استفاده میکند. به عنوان مثال تصور کنید در حال جمع آوری دادههای یک ماشین از روی یک حافظه هستید، اگر میخواهید آن داده را مشاهده کنید باید یک کوئری به شکل زیر بنویسید که دادهها را از 3 ماه گذشته گرفته و در بسته های 10 روزه گروه بندی میکند.
SELECT mean(diskspace_used) as mean_disk_used FROMe disk_stats WHERE time() >= 3m GROUP BY time(10d)
کوچک کردن و نگهداری دادهها:
وقتی با دادههای عظیم سر و کار داریم، ذخیره و نگهداری از آنها مشکل خواهد بود و با گذشت زمان نیز این داده ها پیچیده تر خواهند شد. InfluxDB میتواند این دادهها را در اندازههای کوچکتر و به صورت دقیقتر در مدت زمانهای طولانی ذخیره کند.
با استفاده از سیاستهای نگهداری داده که در InfluxDB به آن دسترسی دارید، میتوانید تنظیمات خود را طوری تعیین کنید که داده های شما تا 30 روز به طور دقیق در دسترس باشند، بعد از این مدت میتوانید داده ها را تا 6 ماه و یا مدت زمان طولانی تر و یا برای همیشه نگهداری کنید. این عملکرد باعث میشود که از داده ها نگهداری کنید و همزمان حافظه دیسک را نیز حفظ کنید.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.