انجمنهای فارسی اوبونتو
جامعه کاربران => کافه اوبونتو => نویسنده: masoudk در 19 مهر 1391، 07:36 بظ
-
سلام
توی شرکتی که کار میکنم یه سفارش طراحی وبسایت پر بازدید کننده از صدا و سیما گرفته بودیم.
همکار من که تجربه ی بیشتری از من داشت یه پنلی سفارش داد که سرور sql داشته باشه و همین موضوع باعث شد که قیمت پنل خیلی زیاد بشه.
ولی من چون اینجا خونده بودم که mysql چیزی از sql کمتر نداره به نظرم رسید که mysql هم میتونست کار ما رو راه بندازه.
برای اینکه تکلیف خودم و بفهمم تصمیم گرفتم یه تحقیق درست و حسابی کنم و خیال خودم و راحت کنم و توی پروژه های آینده ی خودم بدونم تو چه شرایطی از چی استفاده کنم.
فکر کردم بد نیست نتایج تحقیقاتم رو با شما هم درمیون بزارم.
با جست و جو و خوندن تجربیات دیگران که با حجم زیادی از اطلاعات سر و کار دارند من فهمیدم که روی mysql توی خوندن اطلاعات میشه حساب بالایی کرد. یکی گفته بود که توی یکی از table ها دو میلیون رکورد داره و مشکلی توی خوندن اطلاعات نداشته.
ولی اگه مثلا بخوای 7 تا Table سنگین رو با هم join بزنی اینجا تفاوت به چشم میاد. یکی اشاره کرده بود که این کار رو امتحان کرده و با sql شونزده ثانیه و با mysql پانزده دقیقه طول کشیده. و در بعضی مواقع mysql کرش میکرده و متوقف میشده.
جمع بندی که من کردم: اگه فقط میخوای اطلاعات رو بخونی و join های پیچیده نداری بهتره پولت رو نگه داری و از mysql استفاده کنی.
ولی اگه میخوای join های خیلی سنگین بزنی دیگه اونجا mysql کم میاره.
البته من به شخصه اگه احساس کنم روزی رکوردها از 2 میلیون ممکنه بیشتر بشه ترجیح میدم ریسک نکنم و از sql استفاده کنم. چون بیشتر به sql رای مثبت داده بودند.
حالا یه سوال دیگه که واسه من پیش اومده: اطلاعات باید چقدر باشه که از oracle استفاده کرد؟ ;D
لینک چندتا جا که ازشون تحقیق کردم:
http://stackoverflow.com/questions/405795/mysql-versus-sql-server-express-performance-comparison
http://stackoverflow.com/questions/733870/mysql-vs-sql-server-2005-2008-performance
http://stackoverflow.com/questions/2716232/maximum-number-of-records-in-a-mysql-database-table
http://board.phpbuilder.com/showthread.php?10237959-How-many-records-does-mysql-support-normally-and-not-affect-speed
-
البته خوندن چند تا جواب توی stackoverflow و اینکه یک نفر گفته سرعتش کمتره یا هی کرش میکنه، بدون اینکه نه تنظیماتشو بدونیم، نه بدونیم از چه سیستمعامل و توزیعی استفاده میکنه، نه نوع Query و تنظیمات سختافزاری رو بدونیم، ... ، راه درستی برای یک انتخاب Database نیست. اولین قدم یادگیری تئوری دیتابیسها هستش و مواردی مثل اینکه مثلا قابلیتهای ACID رو لازم دارید، سراغ سیستمهای NoSQL برید یا نه ... این کار باید قبل از تمام این موارد انجام بشه. وقتی شما Queryای دارید که بیش از ۱۰ ثانیه زمان برای اجرا میبره، یک جای کار مشکل داره :) قدم بعد یادگیری اون دیتابیسهاست. مثلا اینکه توی MySQL فرق MyISAM و InnoDB چیه و چه موقعی باید استفاده بشه، محدودیتهای اونها رو یاد گرفت و به درستی از اونها استفاده کرد.
خوب MS-SQL اصلا در گنو-لینوکس قابل اجرا نیست، در نتیجه عموما در انتخابهای بزرگ قرار نمیگیره. از طرف دیگه، بهترین انتخابها MySQL و PostgreSQL هستند و اینطوری هم نیست که با چند تا Join یکدفعه کرش کنند، وگرنه Twitter (لینک (http://engineering.twitter.com/2012/04/mysql-at-twitter.html)) و Facebook (لینک (https://www.facebook.com/notes/facebook-engineering/mysql-and-database-engineering-mark-callaghan/10150599729938920)) و Flickr (لینک (http://code.flickr.com/blog/2010/02/08/using-abusing-and-scaling-mysql-at-flickr/)) و iStockPhoto (لینک (http://www.mysql.com/why-mysql/scaleout/istockphoto.html)) و Wikipedia (لینک (https://blogs.oracle.com/WebScale/entry/scaling_wikipedia_with_lamp_7)) با حجم اطلاعاتی خیلی بیشتر از اونکه شما نیاز دارید، از MySQL استفاده نمیکردند.
-
اوراکل مورد سوال من هم بوده! در چه صورت حتما باید از مای-اسکیوال به اوراکل هجرت کرد؟
-
مشکل اینجاست که نمیشه روی مقاله ی خاصی برای مقایسه حساب باز کرد. چون هرکسی اومده بسته به نظر خودش توضیح داده که فلان دیتابیس بهتره. همشونم دلیلهای مشابه میارن.
مثلا طرفدارای mysql میگن mysql سریعتر join میزنه و طرفدارای sql server میگن که sql server سریعتر join میزنه.
مثلا لینک زیر رو نگاه کنید، من که خیلی سخت باورم میشه از روی محاسبات علمی به این نتیجه رسیده باشند:
http://www.thegeekstuff.com/2010/03/top-5-best-databases/
واسه همین من ترجیح دادم معیار مقایسم رو تجربیات واقعی کاربران بذارم تا خوندن مقالات طرفدارای متعصب sql server یا mysql
خوب MS-SQL اصلا در گنو-لینوکس قابل اجرا نیست، در نتیجه عموما در انتخابهای بزرگ قرار نمیگیره. از طرف دیگه، بهترین انتخابها MySQL و PostgreSQL هستند و اینطوری هم نیست که با چند تا Join یکدفعه کرش کنند، وگرنه Twitter (لینک (http://engineering.twitter.com/2012/04/mysql-at-twitter.html)) و Facebook (لینک (https://www.facebook.com/notes/facebook-engineering/mysql-and-database-engineering-mark-callaghan/10150599729938920)) و Flickr (لینک (http://code.flickr.com/blog/2010/02/08/using-abusing-and-scaling-mysql-at-flickr/)) و iStockPhoto (لینک (http://www.mysql.com/why-mysql/scaleout/istockphoto.html)) و Wikipedia (لینک (https://blogs.oracle.com/WebScale/entry/scaling_wikipedia_with_lamp_7)) با حجم اطلاعاتی خیلی بیشتر از اونکه شما نیاز دارید، از MySQL استفاده نمیکردند.
من اصلا طرفدار sql server نیستم، ولی این مقایسه که شما کردید اصلا درست نیست. چون تیم facebook با تیم شرکت ما فرق داره.
مثلا ممکنه twitter بخاطر سخت افزار قدرتمندی که داره تونسته با mysql جواب بگیره و من همچین امکاناتی نداشته باشم.
-
واسه همین من ترجیح دادم معیار مقایسم رو تجربیات واقعی کاربران بذارم تا خوندن مقالات طرفدارای متعصب sql server یا mysql
برای همین منم هیچ مقاله خاصی رو برای مقایسه اونها بیان نکردم، تنها گفتم چه مکانهایی با چه حجم اطلاعاتی با MySQL کار میکنند.
تجربیات واقعی رو میشه توی استفادههای فعلی از این سیستمها دید، نه اینکه یک نفر توی Stackoverflow یا این فروم گفته MySQL کرش میکنه. توی مقیاس کوچیک اکثریت سراغ MySQL میرن (کافیه ببینید برنامههایی که روزانه نوشته میشه چه بانکاطلاعاتیای رو پشتیبانی میکنند، یا توی اینترنت اگر هاستینگ بگیرید کدوم بانکاطلاعاتی به عنوان پیشفرض به شما داده میشه). توی مقیاسهای بزرگ هم، از جمله Twitter و Wikipedia و Facebook و Flicker و ... عموما همون استفاده میشه. این نشون میده توی تجربه، MySQL جزو بانکهای اطلاعاتیای هست که در عموما اول در نظر گرفته میشه.
درسته، تیم Twitter ممکنه سختافزار قدرتمندی داشته باشه، ولی به همون اندازه هم اطلاعات بیشتری داره. از طرف دیگه اگر MySQL مشکل Stability یا Scalability داشته باشه، Twitter هیچوقت سراغش نمیره، و مطمئن ریسکش برای جایی مثل Twitter خیلی بزرگتر از ریسکی هست که شما میکنید.
در کل پیشنهادم اینه که ابتدا در مورد تئوری بانکهای اطلاعاتی مطالعه کنید و بعد جواب خیلی از سوالها رو خودتون میگیرید.
-
اوهوم، مرسی.
من فکر میکنم بیشتر محبوبیت mysql بخاطر رایگان بودن و متن باز بودنش هستش. مثلا خود من ترجیح میدم که با mysql کار کنم فقط بخاطر اینکه هزینه هام کمتر بشه.
حتی مجبور شدم بخاطر mysql و linux از Asp.net به php مهاجرت کنم. ولی این دلیل نمیشه که مثلا از روی علاقه این کار رو کردم.
در کل من زیاد توجه نمیکنم که از چه چیزی بیشتر استفاده میشه، چون یه همچین چیزهایی هم روی انتخاب اثر میذاره.
حالا تصمیم گرفتم به mysql اعتماد کنم، تا روزی که ببینم چی میشه.
-
اگه خیلی کارهات سنگینه به طوری که حتا mysql هم نمیتونه خوب جواب بده به شدّت postgresql رو توضیه میکنم. در برخی موارد از اوراکل هم قویتر عمل میکنه.