1 ضمیمه
سیستم لایک و دیسلایک پیشرفته
سلام
میخوام یه سیستم لایک و دیسلایک برای نظرات بسازم براساس آیدی کاربران مانند سایت زومیت که هر کاربر برای هر نظر فقط یه باز بتونه رای بده
نمیخوام از روش های ساده استفاده کنم چون با بالا رفتن جحم اطلاعات و کاربران و همچنین تعداد نظرات قطعا سیستم کند خواهد شد
میخواستم بدونم سایت زومیت از چه فناوری استفاده کرده که با این جحم زیاد اطلاعات سیستمشون کوچکترین مشکلی و کندی نداره
ضمیمه 148103
نقل قول: سیستم لایک و دیسلایک پیشرفته
نقل قول:
نمیخوام از روش های ساده استفاده کنم چون با بالا رفتن جحم اطلاعات و کاربران و همچنین تعداد نظرات قطعا سیستم کند خواهد شد
خوب شما به چه روشی می گی ساده و به چه روشی میگی روش پیشرفته؟
اگر در دیتابیس یک جدول ساده درست کنید (مثلا به نام Likes) که شناسه کاربر، شناسه مطلب، و نتیجه Like یا Dislike که می تونه یک ستون bit باشه رو نگهداری کنید کندی ای نخواهید داشت.
روی دکمه Like و Disklike هم می توانید یک کد Ajax قرار دهید که ردیف زیر رو پر کنه. در صورت استفاده از چنین سیستمی بهتره کاربر روی برای استفاده از سیستم فوق مجبور کنید که ثبت نام کنه تا بتوانید ID کاربر رو بدست بیاورید. وگرنه مجبورید نتیجه عملیات رو در کوکی نگهداری کنید که محل قابل اعتمادی برای نگهداری داده ای که تعیین می کنه این کاربر اجازه رای دادن مجدد داره یا نه، محسوب نمیشه.
نقل قول: سیستم لایک و دیسلایک پیشرفته
سایتهایی که ترافیک بالایی دارند و میخوان پاسخدهی رو همچنان بهینه نگه دارن معمولا از معماری میکروسرویس استفاده میکنند. مثلا قسمت نظرات سایت خودش یک سایت مجزا با دیتابیس خودش و ... میشه و در یک سرور دیگه اجرا میشه (جدا از سرور اصلی). اینجوری ترافیک کامنت ها روی ترافیک سایت اصلی تاثیر نداره.
اگر به هر دلیلی سرور مربوط به کامنتها کند بشه تاثیر مستقیم روی سایت اصلی نداره .
البته پیاده کردن این معماری اصلا ساده نیست. همیشه بهتره اول به یک مشکل برخورد کنید بعد براش راه چاره پیدا کنید. (مگر اینکه مطمئن هستید ترافیک سایت حتما زیاد خواهد بود)
سیستم کامنتها رو طبق توضیحات جناب کرامتی پیاده کنید. اگر ظرفیت سرور و ... جوابگو نبود به دنبال راه حل های نرم افزاری پیچیده تر باشید.
حداقل باید سایت و دیتابیس رو جدا کنید و چه بهتر که هر کدوم در سرور جدا کار کنند
نقل قول: سیستم لایک و دیسلایک پیشرفته
نقل قول:
نوشته شده توسط
مهدی کرامتی
خوب شما به چه روشی می گی ساده و به چه روشی میگی روش پیشرفته؟
اگر در دیتابیس یک جدول ساده درست کنید (مثلا به نام Likes) که شناسه کاربر، شناسه مطلب، و نتیجه Like یا Dislike که می تونه یک ستون bit باشه رو نگهداری کنید کندی ای نخواهید داشت.
روی دکمه Like و Disklike هم می توانید یک کد Ajax قرار دهید که ردیف زیر رو پر کنه. در صورت استفاده از چنین سیستمی بهتره کاربر روی برای استفاده از سیستم فوق مجبور کنید که ثبت نام کنه تا بتوانید ID کاربر رو بدست بیاورید. وگرنه مجبورید نتیجه عملیات رو در کوکی نگهداری کنید که محل قابل اعتمادی برای نگهداری داده ای که تعیین می کنه این کاربر اجازه رای دادن مجدد داره یا نه، محسوب نمیشه.
این موردی که شما میگین در موقع بارگذاری خیلی عملیات لازم داره تا برای هر نظر تعداد لایک ودیسلایک رو محاسبه کنه مخصوصا اگر کاربران سایت خیلی زیاد باشه
روش دیگه ایی نیست مثل استفاده از json که تمام اطلاعات در یک سطر نگهداری بشه؟؟
نقل قول: سیستم لایک و دیسلایک پیشرفته
نقل قول:
نوشته شده توسط
mo7300
این موردی که شما میگین در موقع بارگذاری خیلی عملیات لازم داره تا برای هر نظر تعداد لایک ودیسلایک رو محاسبه کنه مخصوصا اگر کاربران سایت خیلی زیاد باشه
روش دیگه ایی نیست مثل استفاده از json که تمام اطلاعات در یک سطر نگهداری بشه؟؟
اینهایی که شما گفتی میشه 2 تا کوئری. اگر هم ایندکس گذاری صحیح داشته باشید مشکل سرعت و لود سرور نخواهید داشت. مثال عملی اش همین سایت برنامه نویس خودمون هست. تعداد کاربران ثبت شده در دیتابیس نزدیک به 500.000 نفر است، در هر لحظه خاص هم به صورت میانگین 500 نفر آنلاین هستند، تعداد ردیف های جدول پست بیش از 2.5 میلیون ردیف است. خوب شما مشکلی تو لود شدن سایت می بینید یا در سرعتش؟ خیر.
مثل موردی که جناب hakim22 فرمودند هم از سرور جداگانه و میکروسرویس استفاده نشده است. برای لود هر صفحه هم بین 50 تا 100 کوئری به دیتابیس زده میشه.
نقل قول:
روش دیگه ایی نیست مثل استفاده از json که تمام اطلاعات در یک سطر نگهداری بشه؟؟
خوب شما این طوری می خواهید لود پردازش رو از روی گردن دیتابیس سرور که کار اصلی اش همین پردازش های داده ای است بردارید، بگذارید رو Ram و CPU سیستم که هر بار اون JSON رو Deserialize کنید، تحلیل کنید، و محاسبه کنید؟! :گیج:
نقل قول: سیستم لایک و دیسلایک پیشرفته
نقل قول:
نوشته شده توسط
مهدی کرامتی
خوب شما به چه روشی می گی ساده و به چه روشی میگی روش پیشرفته؟
اگر در دیتابیس یک جدول ساده درست کنید (مثلا به نام Likes) که شناسه کاربر، شناسه مطلب، و نتیجه Like یا Dislike که می تونه یک ستون bit باشه رو نگهداری کنید کندی ای نخواهید داشت.
روی دکمه Like و Disklike هم می توانید یک کد Ajax قرار دهید که ردیف زیر رو پر کنه. در صورت استفاده از چنین سیستمی بهتره کاربر روی برای استفاده از سیستم فوق مجبور کنید که ثبت نام کنه تا بتوانید ID کاربر رو بدست بیاورید. وگرنه مجبورید نتیجه عملیات رو در کوکی نگهداری کنید که محل قابل اعتمادی برای نگهداری داده ای که تعیین می کنه این کاربر اجازه رای دادن مجدد داره یا نه، محسوب نمیشه.
به نظر منم همین روش از همه بهتره..هم سرعتش خوبه(بسته به نحوه ی لود اطلاعاتتون) هم خیلی اسون میشه نوشتش
نقل قول: سیستم لایک و دیسلایک پیشرفته
بنظر دوستان محدود کردن کاربران از روی آی.پی آدرس شخص(ثبت آی.پی کاربر-آی.دی پست و آی.دی دیدگاه مورد نظر در یک جدول جداگانه) بجای استفاده از آی.دی کاربران نام نویسی شده چطوره؟ اینجوری برای رای دهی دیگه لزوما اجباری برای ثبت نام نیست آیا ولی امکان داره راهی برای دور زدنش باشه؟
نقل قول: سیستم لایک و دیسلایک پیشرفته
نقل قول:
نوشته شده توسط
پروگرامنویس
بنظر دوستان محدود کردن کاربران از روی آی.پی آدرس شخص(ثبت آی.پی کاربر-آی.دی پست و آی.دی دیدگاه مورد نظر در یک جدول جداگانه) بجای استفاده از آی.دی کاربران نام نویسی شده چطوره؟ اینجوری برای رای دهی دیگه لزوما اجباری برای ثبت نام نیست آیا ولی امکان داره راهی برای دور زدنش باشه؟
معمولا زمانی که کاربر مودم رو خاموش رو روشن کنه IP عوض میشه