PDA

View Full Version : سوال: بهترین ساختار دیتابیس برای لایک و بازنشر پست ها چیه



theboy
پنج شنبه 17 مرداد 1392, 05:30 صبح
سلام.
می خواستم بدونم بهترین ساختار دیتابیس(mysql) برای لایک و بازنشر پست ها چیه؟

مثال:

شیرترانیکس این روش رو بکار گرفته:
کلا یه قسمت(من آخر این تیبل و... دیتابیس رو اسماشونو یاد نگرفتم!:لبخند:) ساخته به نام likes و در اون سه ستون هست با عناوین آیدی،آیدی پست،آیدی کاربر(شاید بیشتر باشه اونایی که لازمه رو گفتم) بعد میاد برای هر پست یه چک از این table میگیره و اون مواردی که آیدیه پستشون با آیدی پست یکیه رو دریافت می کنه. حالا دوباره از table کاربران اونایی رو که آیدیشون مساویه آیدی هایی که از table لایکس گرفته بود هستند رو دریافت و نمایش میشده!:افسرده:
عیب از نظر من: فرض کنید در هر صفحه 10 پست نمایش بدیم و هر پست بین 100 تا 2000 تا لایک داشته باشه و کلا سایت یک میلیون تا لایک و بیست هزار تا کاربر داشته باشه؛ سرور رسما به باد میره.


نظر من:
توی table پست ها یه ستون به نام likes بسازم و آیدی کسانی که پست رو پسندیدن بریزم توش و با , جداشون کنم. حالا با php اونها رو دریافت و آیدی تک تکشون رو بدست بیارم(به کمک توابع str و استفاده از , که قبلا گذاشتم) حالا این آیدی ها رو وقف بدم با کاربرا و کاربرا رو نمایش بدم.

مشکل راه حل من:
فرض کنید وضعیت پست ها و کاربران مثل مثال قبلیه حالا اینکه php برای هر پست ورداره یه عبارت با شاید بالای ده-بیست هزار کاراکتر رو با توجه به , جدا کنه! دو به شکم که فشار این بیشتر میشه یا mysql.

نظر شما خیلی برام مهمه. اگه خودتون راه حل دیگه ای دارید بگید.
ممنون.

ali2k5
یک شنبه 20 مرداد 1392, 22:06 عصر
راه حل شما کاملا ناشیانه هست ، همان راه حل جدول کاملا منطقی هست کافیه روی فیلد ایدی پست یک ایندکس تعریف بشه دیگه هیچ مشکلی نیست خیلی ساده برای هر پست میشه ایدی کاربرهایی که لایک زدن رو گرفت ، وقتی ایندکس تعریف کنید دیگه مهم نیست 1 لایک زده باشن یا 2000 تا به سرعت نتیجه برمیگرده ...

ولی راه حل شما ایجاد سربار اضافه روی جدول پست هست که طبیعتا خود جدول پست به علت محتوای تکست که داره حجمش بالا هست حالا فرض کنید یک فیلد که قرار 500 تا ایدی لایک هم توش با , ذخیره بشه میاد روی این جدول چقدر حجمش را میبره بالا !

اصلا شما به بهینه سازی های اولیه دیتابیس یه نگاهی بندازید کلی حرف توش گفتن ...