الگوریتم ساده استریم شبکه اجتماعی (mysql ) - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۲۵۶ نفر آنلاین
۷۸ عضو و ۱۷۸ مهمان در سایت حاضرند

الگوریتم ساده استریم شبکه اجتماعی (mysql )

+1 امتیاز
سلا و وقت بخیر
دوستان میشه یه راهنمایی بفرمایین بهترین راه برای بارگذاری مطالب کاربرای که یه کاربر دنبالش میکنه چیه ؟ شما فرض کنید تو فیس بوک هستین و 2 نفر رو دنبال میکنید و این دو نفر پست میذارن چطوری پستهای اون دو نفر تو استریم کاربر لود بشه ؟
راهی که به ذهن خودم برای این کار رسید اینه اما اگه کاربر تعداد زیادی رو دنبال کنه منطقی نیست
شکل دیتابیسی که در نظر گرفتم اینطوریه
1: پستهای ارسالی توسط کاربرا اینطوری ذخیره بشه:
 
+----------------+------------------+
|     post        | ID (karbar)     |
+----------------+------------------+
|    abcabc      |          1       |
+----------------+------------------+
|    abcabc      |         21       |
+----------------+------------------+
|    abcabc      |         11       |
+----------------+------------------+
|    abcabc      |         12       |
+----------------+------------------+

 

 
2: وقتی کاربر میخواد کاربری دیگه ای رو دنبال کنه هم تو همچین جدولی ذخیره بشه :
 
+-----------------------+---------------------------------------------+
|     id_karbar         |       id_karbare_donbal_shavande            |
+-----------------------+---------------------------------------------+
|          10           |                     14                      |
+-----------------------+---------------------------------------------+
|          10           |                     11                      |
+-----------------------+---------------------------------------------+
|          10           |                     12                      |
+-----------------------+---------------------------------------------+
|          10           |                     21                      |
+-----------------------+---------------------------------------------+

 

 
حالا برای لود کردن پست کاربرای دنبال شده اول آیدی کاربرای دنبال شده از جدول دوم گرفته بشه
 
SELECT * FROM table2 where id_karbar = 10
 
و پست کاربرای که آیدیشون تو جدول دوم وجود داشت از جدوا اولی لود بشه
 
SELECT POST FROM table1 WHERE ID = 11 OR ID = 21 OR ID =12

 

بنظرتون نحوه ی ذخیره سازی اطلاعات تو دیتابیس باید چطوری باشه ؟!
 
سوال شده تیر 21, 1393  بوسیله ی amc (امتیاز 280)   3 5 16
ویرایش شده تیر 21, 1393 بوسیله ی amc
چرا منطقی نیست ؟ من که فکر نمی کنم سرعت این دستورات مشکلی داشته باشه اگر فیسبوک مثلا 10 میلیون یوزر "فعال" داشته باشه و این 10 میلیون cache شده باشن(400-500 مگ بیشتر فکر نکنم حافظه بخواد ) که تا حد ممکن سرعت خوندن اطلاعات از دیتابیس پایین بیاد با فرض این که SELECT لگاریتمی جست و جو انجام بشه میشه هر بار تقریبا 20 تا مقایسه انجام میشه . حالا مثلا اگر 50 هزار بار این عملیات همزمان اجرا بشه (50 هزار نفر همزمان این کارو بکنن ) 50000*20 میشه 1 میلیون عملیات مقایسه میگیم مثلا 5 برابر هم کارهای دیگه انجام بشه رو هم میشه 5 میلیون !  یک cpu خیلی معمولی هم به راحتی میتونه این تعداد عملیات رو کمتر از 1 ثانیه انجام بده(فکر نکنم به 100 میلی ثانیه هم برسه !) البته این جا سرعت دسترسی به اطلاعت از ram تعیین کننده تره که بازم فکر نمی کنم به اون شکل تاثیر داشته باشه چون تا اون جایی که من میدونم facebook سیستم caching خیلی قوی ای داره
شما فیس بوک  رو دارین با چی مقایسه میکنید ! اینکه هر سرویس و هر بازدهی اطلاعات رو در میکرو ثانیه داره با ابر سرور هاش بررسی می کنه !
یا یک کورری . . .

اما به جمله اول که برای یک سیستم نرمال با تعداد کاربر محدود بله منطقی هست
اما اگر کاربران آنلاین زیاد بشه
یا شلوغی چیزی مثل کلوب رو داشته باشه کمی باید مباحث فرق کنه
@BlueBlade
ممنون از پاسختون
اگه از cache استفاده نشه چی ؟

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...