دلمغز نوشته - چالش های من در Big Data - معماری درست کدام است

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