(27-08-1394، 08:00 ب.ظ)olampiad نوشته: [ -> ]میخواستم ببینم تو یه دیتابیس حداکثر نرمال تا چ حد میتونیم جدول داشته باشیم(میخوام طوری باشه که دیتابیس شلوغ نباشه و سرعتش پایین نباشه و ...)
آیا خود شما توصیه میکنید که از چند تا دیتابیس استفاده کنیم؟؟؟
تا به حال شده که تو سایت هاتون از چند تا دیتابیس استفاده کنین؟
در این مورد تجربه ای دارین؟
ممنون
1 -محدودیتی توی تعداد جداول نیست، جدولی هم سنگین بشه همون جدول، کوئری زدنش مشکل پیدا میکنه و ربطی به بقیه جداول نداره، ولی خود جداول محدودیت هایی داردن، اگر اشتباه نکنم حداکثر حدود 500-600 فیلد میتونید داشته باشید، یا مثلا بسته به Engine جدول فقط میتونه 64 ترابایت حجم داشته باشه و ...
_____________________________
2- اگر نیاز نباشه، خیر توصیه نمیکنم. بعضی از حرفهای حمیدرضا خداییش خیلی خوبه، کلمه های جمله اش که میگفت رو یادم نیست ولی منظورش این بود که: "بهینه سازی زودهنگام از معضل هاست!" (این جواب به تاپیک دیگه تون که در مورد فیسبو.ق اینا بود هم هستش) یعنی اگر شما کارتون به جایی رسید مثل فیسبو.ق که بازدید زیادی داشتید، مطمئن باشید اینقدر ها پول خواهید داشت که متخصص هایی براتون استخدام خواهند شد که سرور اختصاصی که هیچ، دیتاسنتر اختصاصی شما رو شبانه روزی کنترل میکنن و ثانیه ای نمیذارن سایت داون بشه، کسانی خواهند اومد که واستون زبان اختصاصی یا بهبود یافته بسازن، کسانی خواهند اومد که واستون دیتابیس اختصاصی بسازن! پس اصلا خودتون رو با فیسبو.ق مقایسه نکنید و بهشون کاری نداشته باشید! از یک حدی بیشتر هم اصلا نمیتونید اطلاعـات ازشون بدست بیارید، چون امثال گوگل و فیسبو.ق تمام الگوریتم هاشون رو به شدت محافظت میکنن و حتی اجازه ورود به هر کسی رو نمیدن به دیتاسنترهاشون!
توی پرانتز هم بگم که اصلا کلـوب رو با فیسبو.ق مقایسه نکنید! خیلی مقایسه بدی هستش! مثل این میمونه که شما بخوای دوچرخه رو با یک بنز آخرین مدل مقایسه کنی! دوچرخه رو خودت میتونی بسازی اگر بخوای، یعنی سیستم عجیب غریبی نداره و از نحوه کار و حرکتش میتونی همه چیو بفهمی، ولی نمیتونید به سادگی بفهمید یک بنز داره موتور هایبریدیش چجوری کار میکنه که مثلا با 2000 حجم سی سی داره 240 اسب بخار تولید میکنه ولی ماشین های داخلـی با این حجم موتور فقط 110 اسب بخار! تازه مصرف سوختش هم کمتره! و کلی قسمت های پیچیده دیگه به جز همین موتور هم هست توی ماشین تازه....
حالا که اینجا دوستان اکثرا برنامه نویس هستن میشه بحث رو تخصصی تر کرد! مثلا فرض کنید شما یک شبکه اجتماعی ساده دارید مثل کلوب و میخواین وقتی فردی لاگین شد و وارد home خودش شد پست های page ها و دوستانش رو بهش نشون بدید، خب خیلی ساده است دیگه، یک query میزنید به دیتابیس و واسه این فرد، مثلا 10 رکورد آخر رو بر حسب زمان نشون میدین. همین! ولی فیسبو.ق اینکار رو نمیکنه! بســــیار پیشرفته تر عمل میکنه!
فیسبو.ق وقتی کسی وارد Home خودش که میشه، پست های آخر دوستان یا پست page ها رو که میبینه، تنظیم این پست های آخر تنها بر اساس پارامتر زمان نیست! یعنی شما فرض کنید فیسبو.ق میاد بررسی میکنه شما از چجور مطالبی خوشت میاد، اون مطلبی که میاد واستون تا حالا چند تا لایک و کامنت خورده، اون مطلب از کدوم دوست شما هستش، آیا همیشه پست های اون دوستتون رو قبلا لایک کردید و بهش علاقه ای دارید یا نه، آیا پست رو close friend شما گذاشته یا نه... حالا فیسبو.ق میاد همه اینا رو بررسی میکنه و مهمترین و با ارزش ترین پست رو واسه شما میذاره بالاترین پست در Home تا شما حتما ببینیدش، نمیاد فقط پستی رو بذاره اول که نسبت به بقیه از لحاظ زمانی دیرتر منتشر شده.
در نتیجه سیستم فیسبو.ق 10 ها برابر فشار بیشتری به سرور وارد میکنه و فقط یک کوئری SELECT بر مبنای زمان نیست، و خیلی از این مواردی که گفتم بر مبنای الگوریتم های هوش مصنوعی و ماشین یادگیری پیاده سازی میشن!
یا مثلا شما توی یک سایت معمولی برای قسمت عکس پروفایل، کار خاصی انجام نمیدی! فوقش امنیت آپلود رو تضمین میکنی یا یک سری کارهای ساده مثل watermark گذاشتن. ولی فیسبو.ف میاد انسان ها رو از روی عکس تشخصی میده، یا بر اساس الگوریتم های پیشرفته اگر فرد توی عکس مشخص باشه که مست هستش نمیذاره عکس رو آپلود کنید!
____________________________________
3- بله توی یک پروژه ای برای قسمت سرچ از دیتابیس دیگه ای استفاده کردم. کلا به نظر من میشه برای موارد زیر از دیتابیس های NoSQL استفاده کرد، البته کارایی های خیلی زیادی دارن و در نوع های مختلفی هستن.
- برای سرچ fulltext ، که دیگه با توجه به تعداد بالای رکورد ها MySQL جوابگوی شما نیست.
- برای مواقعی که ساختار جدول شما منظم نیست، فیلدهای کم و زیاد و ...
- برای واقعی که میزان Insert شدن به طرز وحشتانکی بالاست و حتی گاها از SELECT هم بیشتره.
- برای ساختار key-value
___________________________________
4- در کل به نظر من اگر واقعا کار خیلی خیلییییی بزرگی نمیخواین انجام بدین سمت دیتابیس های NoSQL نرید چون زمان و انرژی ای که صرف یادگیری این دیتابیس ها و یا نگهداری و ... اونها میشه رو اگر پول سرور بهتر میدادید بهتر بود!