سلام وقت بخیر
من واسه اینکه دیتابیسم خواناییه بهتری داشته باشه و خب خیلی از اطلاعات همیشه نیازی به نمایشش نیست و فقط در مواقع خاص از دیتابیس واکشی میشه میخام از روابط پیچیده ای استفاده کنم (لاراول)
حالا بحثم اینکه روابط خیلی باعث کندی در خواندن یا نوشتن اطلاعات میشه؟؟
اگه اره راهی هست ک بشه سرعت گرفتن اطلاعات و ثبت اطلاعات داخل روابط پیچیده رو بهینه کرد؟؟
سلام
شما اگه روابطتون استاندارد و نرمال باشه چیزایی که گفتید اعمال میشه خودش
راه هایی مثل eager load کردن سطر های دیتابیس وجود داره که می تونید برای بهینه تر کردن کار ازشون استفاده کنید ( البته نه در همه جا چون ممکنه مشکل بوجود بیاره، در جایی که استفاده ازش درسته )
بستگی داره چقدر سرعت براتون معضل باشه
خیلی سرعت بالا نیاز دارین ؟ تعداد یوزر ها خیلی زیاد و بالای چند هزار در لحظه است ؟
برای سرعت اول منابع سرور باید خوب باشه، و همچنین از Cache از جاهایی که نیازه به خوبی استفاده بشه
ولی بازم میگم باید ببینید منظورتون از سرعت چیه، قراره سرور تحت فشار زیاد قرار بگیره ؟
به نظرم نمیشه پاسخ قاطع و مشخصی به سوالتون داد. چون کاملا در هر شرایطی ممکنه متفاوت باشه. ولی یک نکته رو به نظرم باید حتما توجه داشت
در بحث طراحی ساختار دیتابیس اکثر تصمیم گیری ها مون از جنس Trede-Off هست. یعنی با یک شرایط بده بستون مواجه هستیم.
هر تصمیمی که میگیرید قطعا یکسری بارهای اضافی ممکنه به همراه داشته باشه. مثلا ممکنه در برنامه ای مینویسیم نیازمند کدنویسی یکم پیچیده تر و چه بسا طولانی تری باشه. (مثالش میشه استفاده از روابط PolyMorphic بجای One-To-Many ساده) یا مثلا منجر به بالاتر رفتن حجم خود دیتابیس میشه (بحث indexing از این جنس هست)
اما توجه داریم که در کنار این قضایا و سربارها، یکسری آورده هایی هم به همراه خواهد داشت. حالا این تشخیص بر عهده مکلف هست که تصمیم بگیره آیا کفه ترازو به سمت آورده ها سنگینی میکنه یا سربار ها و این اصطلاحا ارزشش رو داره یا نه...
به همین خاطر نمیشه بدون اطلاع از جزئیات مربوط به داده ها و اهداف و استراتژی ها و ... نظر قطعی و مشخصی داد.
یک نکته حاشیه ای دیگه هم اینکه چه بسا در مواقعی ما برداشتمون این هست که حجم داده مون خیلی زیاده یا روابطمون خیلی پیچیده هست و نیاز به یکسری اقدامات عجیب و غریب داریم. ولی در عمل برای دیتابیس مثل آب خوردن میمونه و اصلا نیازی به چنین کارهایی نبوده.
به همین خاطر اگر امکانش براتون فراهم هست شاید بد نباشه اول با شرایط ساده و نه خیلی عجیب و غریب یک تست بگیرید و بعد با آگاهی کامل از اینکه دقیقا کدوم بخش نیازمند تقویت هست اقدام کنید.
در لاراول استفاده از دو پکیج زیر خیلی میتونه دید خوبی بده نسبت به بهره وری کوئری ها و نقاط حساس و یا احیانا گلوگاه های سیستم:
https://github.com/barryvdh/laravel-debugbar
https://github.com/beyondcode/laravel-query-detector
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟