Payam Jafari
Payam Jafari
خواندن ۲ دقیقه·۴ سال پیش

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

درود مجدد بر شما. امروز میریم برای ادامه قسمت قبلی و به چالش هایی که من در Big data خوردم میپردازیم. همچنین دوباره میگم که ممکنه در سری قسمت های دلمغز نوشته نکاتی و جملاتی به کار برده بشه که ۱۰۰ درصد دقیق و مستند نباشه و فقط قصد داره که زاویه دید یک برنامه نویس بکند رو به متن تبدیل کنه.

در قسمت قبلی راجب این گفتیم که در شرکت ما برای مدیریت بیگ دیتا از الاستیک استفاده کرده و کار از اونجایی به چالش کشید که برخی از مشتری ها میخواستن کوئری هایی از نوع رابطه ای یا relational بزنن که برای ما این سوال رو به وجود آورد که چطور میتونیم کوئری هایی شبیه رابطه ای اما از نوع غیر رابطه ای بزنیم.

تا الان از روش های دستی و غیر بهینه استفاده میشده که در خیلی از مواقع به شدت سرعت کوئری ها رو کند میکرده.

با مطالعه هایی که دیروز و امروز داشتم باعث شد که به این فکر بیوفتم که شاید قرار نیست ما به طور آنی یا realtime کوئری های سنگین بزنیم.

اگه به نمونه های واقعی مثل شبکه های اجتماعی بزرگ همانند فیسبوک و توییتر نگاه کنیم. با کمی تحقیق به این جواب میرسیم که تمامی نتایجی در این شبکه های اجتماعی میبینیم تماما کش شده هست و هیچ چیزی به طول مستقیم پردازش نمیشه.

به طور مثال با تحقیقاتی که راجب توییتر کردم میبینیم که برای نمایش صفحه Home در توییتر از یک ترفند جالب استفاده شده که در زیر مشاهده میکنیم.

همونطور که میبینید وقتی در توییتر ما یک پست رو ارسال میکنیم ابتدا به سمت لود بالانسر میره و بعد در داخل ردیس redis درون لیست پست های کاربرانی که فالو کرده اند قرار داده میشه.

نکته: ردیس redis یک دیتابیس درون رم هست که برای ذخیره موقت اطلاعات به صورت key=value استفاده میشه.

درواقع اینجا ما برای هر کاربر یک لیست از ۱۰۰ پست اولی که قراره در صفحه Home یک کاربر نشون داده بشه داریم که بصورت کش داخل رم قرار دادیم. این محتوای کش شده هر بار که فالوور ها پستی جدید میذارن اپدیت میشه. پس در این صورت وقتی ما وارد سایت یا اپلیکیشن توییتر میشیم همون لحظه تمامی پست هایی که باید نشون داده بشه رو از کش میخونه و به ما نمایش میده در کمتر از یک ثانیه.

پس تا اینجا اینو فهمیدیم که ما قرار نیست از دیتای اصلی در همه جا استفاده کنیم. اون اطلاعات قرار هست که کش بشه و به صورت خلاصه و تمیز شده در دیتابیس دیگری قرارداده بشه.

حالا این سوال برام پیش میاد که در قسمت جستجو پیشرفته توییتر چجوری کوئری ها رو مدیریت کردن. آیا تموم جواب های اونجا هم کش شده هست یا اینکه به صورت آنی سرچ میشه. اینجاست که باید تحقیقات بیشتری اعمال بشه.

در قسمت بعدی به اینکه اصول طراحی Big Data چیست و چه مراحلی و چه ابزار هایی باید استفاده بشه اشاره میکنم.

فعلا تا قسمت بعدی...

big datadatabaseدیتابیسمعماریبرنامه نویسی
Backend developer
شاید از این پست‌ها خوشتان بیاید