ابزار Apache Druid یک پایگاه داده تحلیلی بلادرنگ است که برای پردازش تحلیلی آنلاین (OLAP)در مجموعه دادههای بزرگ طراحی شده است. اغلب Druid در مواردی استفاده میشود که در آن ورود داده بلادرنگ، عملکرد سریع کوئری و زمان مهم است. Druidمعمولاً بهعنوان پایگاه داده backend برای رابطهای کاربری گرافیکی اپلیکیشنها تحلیلی یا برای APIهای همزمان که نیاز به تجمیع سریع دارند، استفاده میشود. Druidبا دادههای رخداد محور عملکرد بهتری دارد.
زمینههای کاربردی رایج برای Druidعبارتند از:
• تحلیل جریان کلیک از جمله تحلیل وب و موبایل
• تحلیل تلهمتری شبکه از جمله نظارت بر عملکرد شبکه
• ذخیرهسازی متریکهای سرور
• تحلیل زنجیره تامین از جمله متریکهای تولید
• متریکهای عملکرد اپلیکیشن
• تحلیل بازاریابی/تبلیغات دیجیتال
• هوش کسب و کار/OLAP
ویژگی های کلیدی Druid
معماری اصلی Druidایدههایی از انبارهای داده، پایگاههای داده سری زمانی و سیستمهای جستجوی لاگ را ترکیب میکند. برخی از ویژگی های کلیدی Druid عبارتند از:
1. قالب ذخیره سازی ستونی (columnar). Druid از ذخیره سازی ستونی استفاده میکند. این بدان معنی است که فقط ستونهای مورد نیاز برای یک کوئری خاص را load میکند. این امر به میزان زیادی سرعت کوئریهایی را که تنها چند ستون را بازیابی میکنند، بهبود میبخشد. علاوه بر این، برای پشتیبانی از اسکنها و تجمیعهای سریع، Druid ذخیرهسازی ستون را برای هر ستون با توجه به نوع داده آن بهینه میکند.
2. سیستم توزیع شده مقیاس پذیر. استقرارهای Druid معمولی شامل خوشههایی از ده ها تا صدها سرور میشود. Druid میتواند دادهها را با نرخ میلیونها رکورد در ثانیه دریافت کند، در حالی که تریلیونها رکورد را حفظ کرده و تاخیرهای کوئری را از کسری از ثانیه تا چند ثانیه حفظ میکند.
3. پردازش موازی. Druidمیتواند هر کوئری را به صورت موازی در کل خوشه پردازش کند.
4. مصرف بلادرنگ یا دستهای. Druid میتواند دادهها را در زمان واقعی یا به صورت دستهای دریافت کند. دادههای دریافت شده بلافاصله برای کوئری زدن در دسترس هستند.
5. بازیابی، ایجاد تعادل خودکار و آسانی استفاده. با اضافه و کم نمودن سرورها جهت مقیاسپذیری، خوشه Druidخود را به طور خودکار بدون هیچگونه خطا متعادل میکند. اگر یک سرور Druidاز کار بیفتد، سیستم به طور خودکار دادهها را تا زمانی که سرور جایگزین شود، هدایت میکند. Druidبه گونه ای طراحی شده است که به هر دلیلی بدون توقف برنامه ریزی شده به طور مداوم اجرا شود. این موضوع در مورد تغییرات پیکربندی و بهروزرسانی نرم افزار صدق میکند.
6. معماری ابری و مقاوم در برابر خطا که دادهها را از دست نمیدهد. Druid یک کپی از دادهها را ذخیره میکند. این ذخیرهسازی معمولاً ذخیرهسازی ابری، HDFS یا یک فایل سیستم مشترک است. به این ترتیب حتی اگر همه سرورهای Druidاز کار بیفتد، اطلاعات از این فضای ذخیرهسازی قابل بازیابی است. برای یک خرابی محدود که فقط بر تعداد کمی از سرورهای Druid تأثیر میگذارد، این تکرار دادهها، امکان کوئری زدن در طول بازیابی سیستم را تضمین مینماید.
7. ایندکسهایی برای فیلتر کردن سریع. Druid از ایندکسهای bitmap فشرده Roaring یا CONCISEبرای ایجاد اندیسهایی جهت فعال کردن فیلتر کردن سریع و جستجو در چندین ستون استفاده میکند.
8. پارتیشنبندی مبتنی بر زمان. Druid ابتدا دادهها را بر اساس زمان پارتیشنبندی میکند. با این حال میتوان به صورت اختیاری پارتیشنبندی اضافی را بر اساس فیلدهای دیگر پیاده سازی نمود. کوئریهای مبتنی بر زمان فقط به پارتیشنهایی دسترسی دارند که با محدوده زمانی کوئری مطابقت دارند که منجر به بهبود عملکرد قابل توجهی میشود.
9. الگوریتمهای تقریبی. Druidشامل الگوریتمهایی برای تعداد تقریبی متمایز، رتبهبندی تقریبی، و محاسبه هیستوگرامها و چندکهای تقریبی است. این الگوریتمها استفاده محدود از حافظه را ارائه میدهند و اغلب به طور قابل توجهی سریعتر از محاسبات دقیق هستند. برای موقعیتهایی که دقت مهمتر از سرعت است، Druid همچنین رتبهبندی و تعداد متمایز دقیق را ارائه میکند.
10. خلاصهسازی خودکار در زمان مصرف. Druid به صورت اختیاری از خلاصهسازی دادهها در زمان مصرف پشتیبانی میکند. این خلاصه تا حدی دادهها را از قبل جمع میکند، که به طور بالقوه منجر به صرفه جویی قابل توجه در هزینه و افزایش عملکرد میشود.
موارد استفاده از Druid :Druid توسط بسیاری از شرکتها در اندازههای مختلف برای موارد استفاده مختلف استفاده میشود. اگر مورد استفاده با موارد زیر مطابقت داشته باشد، Druid احتمالاً انتخاب خوبی است:
• نرخ درج بسیار بالا است، اما بهروزرسانی کمتر است.
• اکثر کوئریها عبارتند از کوئریهای تجمیع و گزارش. به عنوان مثال کوئریهای group by.
• تأخیرهای کوئری از 100 میلی ثانیه تا چند ثانیه.
• دادهها دارای یک جزء زمان است. Druidشامل بهینهسازیها و انتخابهای طراحی به طور خاص مربوط به زمان است.
• ممکن است بیش از یک جدول داشته باشیم، اما هر کوئری فقط روی یک جدول توزیع شده بزرگ انجام میشود. کوئریها ممکن است به طور بالقوه بر روی بیش از یک جدول lookup کوچکتر اعمال شود.
• ستونهای داده با کاردینالیتی بالا. به عنوان مثال URLها، IDهای کاربر و نیاز به شمارش سریع و رتبه بندی بر روی آنها
•در موارد load دادهها از Kafka، HDFS، فایلهای فلت، یا ذخیرهسازی آبجکت مانند Amazon S3
در موارد زیر Druidمناسب نیست:
• بهروزرسانی رکوردهای موجود با استفاده از کلید اصلی با تأخیر پایین. Druid از درج دادههای جریان پشتیبانی میکند، اما بهروزرسانیهای جریانی را پشتیبانی نمیکند.
• سیستم گزارشدهی آفلاین که در آن تأخیر کوئری چندان اهمیتی ندارد.
• انجام joinهای بزرگ میان جداول فکت در زمانی که تأخیر کوئری اهمیت چندانی نداشته باشد.
www.bdbanalytics.ir
@BigData_BusinessAnalytics