درود مجدد. در قسمت های قبلی راجب اینکه دیتابیس نوپا کلیک هاوس چیست و توییتر چیکار میکنه صحبت کردیم و به این اشاره کردیم که دیتا باید کش بشه.
همچنین دوباره اشاره میکنم که در سری دلمغز نوشته ها ممکنه که مطالب ۱۰۰ درصد درست و دقیق نباشه اما تلاش بر این هست که حرفای گفته شده مستند باشه.
در ادامه تحقیقاتی که انجام شد به یک الگوی رایج و محبوب رسیدم که به اجزای اون اشاره میکنم.
در تصویر زیر مراحل از چپ به راست جلو میره.
ما در بحث Big Data انواع داده رو داریم. این داده ها به ۳ دسته Structured, Semi-Structured, Unstructured تقسیم میشن.
این نوع اطلاعات شامل دیتابیس ها و اطلاعات دارای ساختار منظم و ثابت هست، مثل فایل های Excel و MySql
اطلاعاتی مثل ایمیل ها و اطلاعاتی که کاملا ساخت یافته نیستن اما در عین حال مثل دیتای غیر ساخت یافته هم نیستن.
دیتاهایی مثل فایل های صوتی و تصویری و اطلاعاتی که غیر قابل ویرایش و ردیابی هستن.
پس از دریافت اطلاعات نوبت این میرسه که این اطلاعات پردازش بشه، راه هایی که برای این مرحله استفاده میشه متفاوت هست بسته به نوع و ساختار اطلاعات.
به عنوان مثال برای اطلاعات ساخت یافته از یک فرایند به اسم ETL-Extract, Transform, Load استفاده میشه. این فرایند اطلاعات خام موجود رو به اطلاعات قابل استفاده برای آمارگیری و محاسبات آینده آماده میکنه. در مرحله بعدی این اطلاعات ذخیره میشه.
همچنین اگر اطلاعات از نوع غیر ساخت یافته باشه میتونیم مستقیما از طریق API اطلاعات رو توزیع کنیم.
در اینجا اطلاعاتی که در مرحله قبل پردازش و قابل استفاده شده رو ذخیره میکنیم. این فرایند بسته به نوع اطلاعات متفاوته و ممکنه که از ابزارهای مختلفی استفاده بشه.
برای مثال اطلاعات ساخت یافته رو در دیتابیس های NoSql مثل MongoDB یا ElasticSearch ذخیره میکنیم. همچنین اطلاعات غیر ساخت یافته رو هم در فایل سیستم های مخصوص مثل HDFS که در Hadoop استفاده میشه ذخیره میکنیم.
نکته: Hadoop یک فریم ورک برای مدیریت و توزیع و پردازش اطلاعات به طور وسیع بین چندین سرور هست و برای مدیریت Big Data استفاده میشه.
در این مرحله اطلاعاتی که مرحله قبل ذخیره و آماده استفاده هست رو تجزیه و با استفاده از علم داده، تحلیل و به اطلاعات قابل نمایش برای استفاده کننده ها و تحلیلگر ها در شرکت تبدیل میکنیم و یا اطلاعات رو برای نمایش به مشتری ها و کاربران عادی آماده میکنیم.
در این مرحله میتونیم از ۲ روش برای ارائه اطلاعات به مشتری یا تیم تحلیل استفاده کنیم. راه اول Batch Processing هست و راه دوم Stream Processing.
همونطور که از اسمشون معلوم هست در روش اول ما اطلاعات رو دسته بندی و به صورت زمان بندی شده به تحلیلگر ها ارائه میدیم، اما در راه دوم ما به صورت مستقیم از منبع اطلاعت که در قسمت Data Sources دیدیم اطلاعات رو برداشته و نتایج ساده تر اما آنی(زیر ۱ ثانیه) به کاربر و مشتری ها نشون میدیم.
هر ۲ روشی که اشاره کردم در جای خود استفاده های متفاوتی دارند. اما من در اینجا بیشتر روی Batch Processing تمرکز میکنم چون نیاز شرکت ما با این روش به نتیجه میرسه.
در روش Batch Processing میتونیم به ۲ راه عمل کنیم. یکی اینکه مستقیم به Data Warehouse کوئری میزنیم و نتایج مورد نظرمون رو میگیریم ( که ممکنه دریافت پاسخ چندین ثانیه یا دقیقه طول بکشه )، یا اینکه به صورت زمان بندی شده در ساعاتی از روز کوئری های مورد نیاز رو میزنیم و جواب ها رو کش میکنیم.
در اینجا ما یک دیتابیس مجزا که میتونه شامل Redis, Mysql, Mongodb باشه رو به عنوان مکانی برای قرار دادن اطلاعات تحلیلی قرار بدیم و به صورت زمان بندی شده و منظم در روز یا ساعت اطلاعات رو بروزرسانی کنیم.
در نهایت لایه فرانت در پنل کاربری، اطلاعات قرار داده شده در مرحله قبل رو فراخوانی میکنه و به کاربر نشون میده.
بسیارخب تا اینجا نکات جالبی رو بررسی کردیم. خیلی از چالش هایی که میخوریم رو میتونیم با این معماری حل کنیم. در قسمت های بعدی ادامه مطالعاتم رو مینویسم براتون.
تا درودی دیگر بدرود.