سلام دوستان
به نظرتون بهترین روش برای ذخیره لاگ ها و اکتیویتی های کاربر توی دیتابیس چیه؟
یه سایت آموزشی رو در نظر بگیرین که کاربرا با اکانت ويزه به دوره های آموزشی دسترسی دارن و میخوایم ببینیم هر کاربر چه ویدیویی رو دیده تا بتونیم میزان پرداختی به مدرسین سایت رو حساب کنیم.
من برای ذخیره این لاگها اومدم از mysql استفاده کردم و زمانی که کاربر ویدیویی رو میبینه فیلد جدیدی داخل دیتابیس ذخیره میشه. یه سری محدودیت هم اعمال کردم مثلا توی دیتابیس تو یه رو یه کاربر نمیتونه بیشتر از یه فیلد لاگ داشته باشه. اما با این وجود زمانی که بصورت json و excel از این فیلدها گزارش میگیریم به خاطر زیاد بودن دیتا زمان زیادی صرف میشه.
برای بهتر و بهینه بودن این گزارش گیری چه راه حلی پیشنهاد میدین؟ آیا بدون تغییر دیتابیس و زبان برنامه نویسی میشه گزارش ها رو بهتر ذخیره کرد؟ اگه ابزار خاصی هم برای اینکار هست معرفی کنین.
@mohsenbostan
باتوجه به اینکه Redis یه in-memory data structure هست، به نظرتون اگه این دیتا از mysql به redis منتقل بشه رم سرور اشغال نمیشه ؟
خیلی از سایت ها که activity های کاربر (مثل لایک، کامنت و ...) رو ذخیره میکنن از چه تکنولوژی هایی استفاده میکنن ؟
@sjavadez
Redis بهینه ترین روش هستش.
در مورد رم هم باید بگم که شما نیازی نیست حتما ردیس رو روی سرور تون نصب کنید. می تونید یک سرور ردیس خریداری کنید برای این کار. این طوری دیگه کلا از منابع یک سرور دیگه استفاده میشه.
سایت لیارا چنین سرویسی رو داره.
دوستان یک مشکلی من دارم خیلی برام عجیب هست
من یک کوئری insert دارم این 90 درصد وقت ها کار میکنه 10 درصد کار نمی کنه هیچ ربطی هم به شلوغی و خلوتی سرور نداره در همه زمان ها هم اتفاق میفته کوئری خیلی مهمی هم هست ولی نمی دونم چرا اینطوری هست که بگیر نگیر داره
میخواستم بببینم چطوری میتونم لاگ این کوئری خاص رو داشته باشم که وقتایی که درج انجام نمیشه ببینم چه اروری داده که نتونسته درج کنه
نکته اینکه از pdo استفاده شده و php خام هست.
@amnhck123
با سلام
میتونید از پروفایلر دیتابیس استفاده کنید با توجه به نوع دیتابیستون سرچ کنید مثلا
mysql profiler
اگه از لاراول استفاده میکنید میتونید با استفاده از کد زیر کوئری لاگ رو فعال کنید
DB::connection()->enableQueryLog();
و با استفاده از کد زیر لاگ رو ببینید :
dd(DB::getQueryLog());
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟