PDA

View Full Version : حرفه ای: دیتابیس قوی تر از mysql معرفی کنید



prans.info
سه شنبه 02 دی 1393, 23:40 عصر
سلام وقت بخیر
یک پروژه وبلاگ دهی داریم که امکانات زیادی خواهد داشت و مسلما رکورد های زیادی هم دربر خواهد داشت و این موجب نگرانی ما شده که بعدا به مشکل نخوریم .
به مسائل نرمال سازی آشنایی داریم ولی با توجه به تجربه و تست های انجام شده و پرس و جو های انجام شده به این نتیجه رسیدیم که mysql اونقدر ها هم که ازش تعریف می کنند همه فن حریف نیست و برای یک سری از پروژه ها بهتره از چند دیتابیس یا یک دیتابیس دیگه استفاده بشه .
حالا مسئله اینه تویه رکورد های زیاد و بازدید بالا کدوم دیتابیس بهتر از mysql هست ؟
پیشاپیش سپاس از شرکتتون در تاپیک

Im.Webmaster
سه شنبه 02 دی 1393, 23:47 عصر
در مورد mongodb تحقیق کنید .

prans.info
چهارشنبه 03 دی 1393, 00:05 صبح
در مورد mongodb تحقیق کنید .
روی یک سایت زیر 50 ایران تست کردیم سرور خوابید :لبخند:

اوراکل چطوره ؟

Unique
چهارشنبه 03 دی 1393, 02:12 صبح
نمیدونم چرا وقتی چنین صحبت هایی مطرح میشه من احساس بدی پیدا میکنم ! شما وقتی کاری را شروع نکردین و با mysql به مشکل نخوردین چرا ازش ایراد میگیرین !؟
به هر حال بهتره از MariaDB استفاده کنید اما همون MySQL که پاسخگو خواهد بود. یادمون باشه منابعی هم که در اختیار MySQL قرار میدیم و Config ی که میکنیم توی نتیجه کار خیلی خیلی مهمه. گاهی یک index یا تغییر در روش د نویسی کل مشکلات را حل میکنه. من پروژه وب در ایران ندیدم که MySQL جوابگو نباشه. ولی خیلی از شرکت ها ترکیبی از MySQL و Sqlite استفاده میکنند بسته به نوع اطلاعاتشون.

siamak_rp
چهارشنبه 03 دی 1393, 04:31 صبح
یکی از بهترین دیتابیس های متن باز ( و البته رایگان ) postgreSQL هست که از لحاظ سرعت از اوراکل با اختلاف کمی عقبه، yahoo هم از postgres استفاده میکنه البته با کلی تغییراتی که خودشون دادن.
اگه بخوای با mysql مقایسه بکنی از لحاظ سرعت و کارایی نمیتونی ایراد به mysql بگیری ولی تو transaction کارایی postgres خیلی بهتره.
اگه فک میکنی پروژه خیلی بزرگ میشه برو سراغ postgres اگه نه که فرقی نداره.

hamid-nic
چهارشنبه 03 دی 1393, 08:58 صبح
سلام دو تا سوال کلیشه ای بپرسم ؟ :متفکر:
1- چرا از ms sql server با php استفاده نمیشه ؟ (اکثراً پیشنهاد میکنند با mysql استفاده بشه .) دیگه با وجود pdo هیچ مشکلی در این زمینه نیست که . پس چرا نهی می کنند ؟
2- این mysql حجم واقعی یا حداکثر حجمی که میتونه جواب بده و مشکلی پیش نیاد چقدره ؟ چندتا رکورده ؟ (منظورم استفاده تجربی دوستان در پروژه های حرفه ای شونه نه رفرنس های موجود)

MMSHFE
چهارشنبه 03 دی 1393, 09:22 صبح
1- چون MS SQL Server فقط روی سرورهای ویندوز نصب میشه و هیچ آدم عاقلی نمیاد PHP رو روی سرورهای نا امن و کند و پرهزینه ویندوز اجرا کنه و این سرورها بدرد همون ASP.NET میخورن :چشمک:
2- من توی یکی از پروژه ها برای تست حدود 2 میلیارد رکورد توی دیتابیس با مقادیر تصادفی وارد کردم و پروژه رو اجرا کردم و مشکلی نداشت. البته Dedicated Server بود و با مشخصات CPU زئون و 16 گیگابایت RAM و کانفیگ دستی (سفارشی سازی شده توسط خودمون) و البته رعایت اصول استانداردسازی دیتابیس مثل نرمالسازی و ایندکس گذاری و استفاده از انجین مناسب (بخصوص ایجاد جداول موقت در حافظه با انجین MEMORY در مواقعی که نیاز به انجام کارهای زیادی روی داده ها بود).

beh3000
چهارشنبه 03 دی 1393, 09:33 صبح
1- چون MS SQL Server فقط روی سرورهای ویندوز نصب میشه و هیچ آدم عاقلی نمیاد PHP رو روی سرورهای نا امن و کند و پرهزینه ویندوز اجرا کنه و این سرورها بدرد همون ASP.NET میخورن :چشمک:
2- من توی یکی از پروژه ها برای تست حدود 2 میلیارد رکورد توی دیتابیس با مقادیر تصادفی وارد کردم و پروژه رو اجرا کردم و مشکلی نداشت. البته Dedicated Server بود و با مشخصات CPU زئون و 16 گیگابایت RAM و کانفیگ دستی (سفارشی سازی شده توسط خودمون) و البته رعایت اصول استانداردسازی دیتابیس مثل نرمالسازی و ایندکس گذاری و استفاده از انجین مناسب (بخصوص ایجاد جداول موقت در حافظه با انجین MEMORY در مواقعی که نیاز به انجام کارهای زیادی روی داده ها بود).


استاد اگه امکانش هست اون بانک اطلاعاتی با 2 میلیارد رکورد رو export بگیرین قرار بدید اینجا :چشمک: میدونم یه چیز وحشتناکی میشه ولی اگه انجام بدین که عالیه ...

این دیتا بیسی که گفتین چندتا از فیلدهای جدول رو بصورت text گذاشتین ؟ بعضی از رکوردها رو با داده ی مثلا 200 بایتی تا یک کیلو بایتی مقدار دهی کردین ببینین چجوری میشه ؟

MMSHFE
چهارشنبه 03 دی 1393, 09:39 صبح
الان دسترسی ندارم بهش (پروژه مشتری بود) ولی یادمه همه جور فیلدی داشتیم. حتی بعضی از جداول MyISAM بودن و از FullText هم استفاده کردیم. دقیقاً یادمه که چندتا از رکوردها توی یکسری از فیلدها بالای یکی دو مگابایت متن داشتن (البته متن Lorem Ipsum بود که چندین بار تکثیر شده بود).

hamid-nic
چهارشنبه 03 دی 1393, 10:02 صبح
1- چون MS SQL Server فقط روی سرورهای ویندوز نصب میشه و هیچ آدم عاقلی نمیاد PHP رو روی سرورهای نا امن و کند و پرهزینه ویندوز اجرا کنه و این سرورها بدرد همون ASP.NET میخورن :چشمک:
2- من توی یکی از پروژه ها برای تست حدود 2 میلیارد رکورد توی دیتابیس با مقادیر تصادفی وارد کردم و پروژه رو اجرا کردم و مشکلی نداشت. البته Dedicated Server بود و با مشخصات CPU زئون و 16 گیگابایت RAM و کانفیگ دستی (سفارشی سازی شده توسط خودمون) و البته رعایت اصول استانداردسازی دیتابیس مثل نرمالسازی و ایندکس گذاری و استفاده از انجین مناسب (بخصوص ایجاد جداول موقت در حافظه با انجین MEMORY در مواقعی که نیاز به انجام کارهای زیادی روی داده ها بود).

ممنونم آقای شهرکی من خودم php کار می کنم کاری با asp.net ندارم .:چشمک:
اگه سرور دیتابیس از سرور php جدا باشه چی ؟ یعنی هیچ فرقی بین mssql و mysql از لحاظ قدرت نیست ؟
من تحت ویندوز با دلفی پروژه انجام دادم با mssql با استفاده از sp ها functions ها بخاطر همین این سوالا را می پرسم .

ravand
چهارشنبه 03 دی 1393, 10:06 صبح
من میخواستم برای node.js از
mongodb به جای mysql استفاده کنم. چون تعریفش رو زیاد شنیده بودم. ولی یعنی الان شما میگید برگردم سراغ همون mysql ؟
:متفکر:

Dev.Look24
چهارشنبه 03 دی 1393, 10:15 صبح
الان متعب ترین افراد به محصولات ماکروسافت قبول دارند که windows server کند و پایدار نیست.

MMSHFE
چهارشنبه 03 دی 1393, 10:29 صبح
ببینید SQL Server یکی از خصوصیات اصلیش که باعث میشه سریعتر کار کنه اینه که قاتل RAM سیستمه! وقتی داره کار میکنه میتونید خودتون مصرف حافظه اون رو ببینید. برای مثال، SQL Server در شرایطی که فرضاً مثل MySQL روی یک هاست اشتراکی و با RAM فرضاً 128 مگابایت قراره کار کنید، تفاوت خاصی ازنظر Performance با MySQL نداره (این مورد رو برحسب تجربه شخصی میگم).

مهرداد سیف زاده
چهارشنبه 03 دی 1393, 10:35 صبح
در یک پروژه بزرگ دیدم که چطور mysql تمام داده‌های رو از سرورهای جدا از نقاط مختلف جمع میکرد
روش کار به این صورت بود که هر کدوم از کاربران در نقاط مختلف داده‌های خودشون رو ازطریق شبکه به یک mysql‌میفرستادن این mysql انجینش رو InnoDB گذاشته بودن و دلیل هم این بود که InnoDB در ذخیره خیلی خیلی قویتر هست. در این قسمت کار چون تراکنشها زیاد بود و مدام داده میومد و ذخیره میشد از InnoDB استفاده شده بود
ولی هر چند ساعت یکبار داده‌ها از روی پایگاه داده‌میانی به سرور اصلی mysql که انجین اون myisam بود. دلیل هم این هست که myisam در جستجو و select قویتر هست.
همچنین برای کانفیگ و بهینه‌سازی mysql چندین کانفیگ وجود داره. این کافیگها بسته به سرعت و قدرت رم و cpu متغیر هست همچنین ابزارهایی که راهنمایی میکنن تا با سخت‌افزار موجود چه کانفیگی بهتر هست
http://mysqltuner.com/

MMSHFE
چهارشنبه 03 دی 1393, 10:42 صبح
من میخواستم برای node.js از
mongodb به جای mysql استفاده کنم. چون تعریفش رو زیاد شنیده بودم. ولی یعنی الان شما میگید برگردم سراغ همون mysql ؟
:متفکر:

تا وقتی که یکی از دو شرط زیر برقراره سراغ NoSQL نباید رفت:
1- ساختار داده های شما به نحوی هست که نمیشه (یا بهینه نیست) در چهارچوب جدول تعریفش کرد. برای مثال، تعداد و طول فیلدهای رکوردها با هم متفاوته.
2- حجم داده های شما به حدی هست که اصطلاحاً بهش میگن Big Data (درموردش توی اینترنت جستجو کنید تا بدونید Big Data به چی میگن).

در غیر این دو حالت، این DBMSها بجای اینکه به شما کمک کنن، سربار اضافه روی سیستم شما میگذارن. درست مثل صحبتهای مشاور اوراکل که میگفت تا وقتی دیتابیس شما واقعاً بزرگ نشده، از اوراکل استفاده نکنید تا بعداً تهمت کند بودن بهش نزنین.

hamid-nic
چهارشنبه 03 دی 1393, 12:36 عصر
آقای شهرکی آیا استفاده از stored procedure ها در mysql به همون اندازه که در mssql باعث افزایش کارایی از هر جهتی میشه برای mysql هم این اتفاق می افته یا نه ؟ تاثیری داره ؟

MMSHFE
چهارشنبه 03 دی 1393, 12:41 عصر
هر تکنیکی اگه به درستی و در جای مناسبش استفاده بشه باعث افزایش کارآیی میشه ولی نه لزوماً از هر جهتی. منظورم اینه که وقتی میشه یکسری کارها که مربوط به دیتابیس هست (حتی محاسباتی و...) رو به خود سرویس MySQL بسپریم، بهتره اسکریپت PHP رو درگیرش نکنیم تا بتونه همزمان درخواستهای بیشتری رو جواب بده. اما اگه توی استفاده از این تکنیک هم زیاده روی کنیم، ممکنه شرایطی پیش بیاد که کارآیی برنامه رو کاهش بده و نتیجه مطلوبی بدست نیاد.

hamid-nic
چهارشنبه 03 دی 1393, 13:24 عصر
هر تکنیکی اگه به درستی و در جای مناسبش استفاده بشه باعث افزایش کارآیی میشه ولی نه لزوماً از هر جهتی. منظورم اینه که وقتی میشه یکسری کارها که مربوط به دیتابیس هست (حتی محاسباتی و...) رو به خود سرویس MySQL بسپریم، بهتره اسکریپت PHP رو درگیرش نکنیم تا بتونه همزمان درخواستهای بیشتری رو جواب بده. اما اگه توی استفاده از این تکنیک هم زیاده روی کنیم، ممکنه شرایطی پیش بیاد که کارآیی برنامه رو کاهش بده و نتیجه مطلوبی بدست نیاد.
پس یعنی به همون اندازه ی mssql تاثیر داره ؟ درسته ؟

prans.info
چهارشنبه 03 دی 1393, 14:06 عصر
نمیدونم چرا وقتی چنین صحبت هایی مطرح میشه من احساس بدی پیدا میکنم ! شما وقتی کاری را شروع نکردین و با mysql به مشکل نخوردین چرا ازش ایراد میگیرین !؟
به هر حال بهتره از MariaDB استفاده کنید اما همون MySQL که پاسخگو خواهد بود. یادمون باشه منابعی هم که در اختیار MySQL قرار میدیم و Config ی که میکنیم توی نتیجه کار خیلی خیلی مهمه. گاهی یک index یا تغییر در روش د نویسی کل مشکلات را حل میکنه. من پروژه وب در ایران ندیدم که MySQL جوابگو نباشه. ولی خیلی از شرکت ها ترکیبی از MySQL و Sqlite استفاده میکنند بسته به نوع اطلاعاتشون.
خب این اولین کارمون با mysql نیست که ، قبلا کار کردیم و وقتی حجم دیتابیس بالا میره به مشکل میخوره و باید منابع رو زود به زود ارتقا داد .

prans.info
چهارشنبه 03 دی 1393, 14:09 عصر
اگه بخوایم از mysql استفاده کنیم به غیر از بحث کش کردن باید یه سری از اطلاعات رو فایل باشه تا جواب بده .
نمیشه که وقتی دیتابیس بزرگ شد یه سری اطلاعات رو ببریم رو فایل که فشار کم بشه :|
اگه قراره با فایل درگیر باشیم پس mysql این وسط چیه ؟
خب تکلیف ما چیه ؟

engmmrj
چهارشنبه 03 دی 1393, 14:38 عصر
1- چون MS SQL Server فقط روی سرورهای ویندوز نصب میشه و هیچ آدم عاقلی نمیاد PHP رو روی سرورهای نا امن و کند و پرهزینه ویندوز اجرا کنه و این سرورها بدرد همون ASP.NET میخورن :چشمک:
2- من توی یکی از پروژه ها برای تست حدود 2 میلیارد رکورد توی دیتابیس با مقادیر تصادفی وارد کردم و پروژه رو اجرا کردم و مشکلی نداشت. البته Dedicated Server بود و با مشخصات CPU زئون و 16 گیگابایت RAM و کانفیگ دستی (سفارشی سازی شده توسط خودمون) و البته رعایت اصول استانداردسازی دیتابیس مثل نرمالسازی و ایندکس گذاری و استفاده از انجین مناسب (بخصوص ایجاد جداول موقت در حافظه با انجین MEMORY در مواقعی که نیاز به انجام کارهای زیادی روی داده ها بود).
روی localhost وقتی table با engine memory میسازی وقتی xampp رو restart میکنی داده جدول مورد نظر پاک میشه ولی سرور که دائم روشن هست چطوری داده ها پاک میشن از رم ؟

MMSHFE
چهارشنبه 03 دی 1393, 18:37 عصر
بعد از اینکه کارتون تمام شد با DROP TABLE جدول موقت رو حذف کنید.

MMSHFE
چهارشنبه 03 دی 1393, 18:40 عصر
پس یعنی به همون اندازه ی mssql تاثیر داره ؟ درسته ؟
بله تأثیر مشابهی داره اگه به شکل مناسب استفاده بشه.

خب این اولین کارمون با mysql نیست که ، قبلا کار کردیم و وقتی حجم دیتابیس بالا میره به مشکل میخوره و باید منابع رو زود به زود ارتقا داد .

اگه بخوایم از mysql استفاده کنیم به غیر از بحث کش کردن باید یه سری از اطلاعات رو فایل باشه تا جواب بده .
نمیشه که وقتی دیتابیس بزرگ شد یه سری اطلاعات رو ببریم رو فایل که فشار کم بشه :|
اگه قراره با فایل درگیر باشیم پس mysql این وسط چیه ؟
خب تکلیف ما چیه ؟

اگه اصول بهینگی و استانداردسازی دیتابیس رو رعایت کنید، حالا حالاها به مشکل برخورد نمیکنید. وقتی سرعت میاد پایین، قبل از اینکه به ابزار شک کنید، به نحوه کار خودتون باید مشکوک بشین چون سایتهای خیلی بزرگتری نسبت به سایتهای عادی هستن که هنوز با MySQL کار میکنن. جایی میخوندم که Facebook همچنان برای مدیریت اطلاعات کاربرانش از MySQL استفاده میکنه. درسته که مسلماً خیلی بهینه سازی کردنش ولی درهرصورت هسته مرکزی همونه و اگه میخواستن از اول همه چیز رو تغییر بدن از یک سیستم بهتر استفاده میکردن.

engmmrj
چهارشنبه 03 دی 1393, 20:36 عصر
بعد از اینکه کارتون تمام شد با DROP TABLE جدول موقت رو حذف کنید.
خوب اگه قرار باشه drop کرد خوب engine innodb میزاریم و بعد drop میکنیم.

MMSHFE
چهارشنبه 03 دی 1393, 21:07 عصر
شما واقعاً سرعت کار با اطلاعات رو توی RAM (انجین MEMORY) با روی هارد دیسک (سایر انجین ها) یکی میدونید؟

engmmrj
چهارشنبه 03 دی 1393, 21:23 عصر
شما واقعاً سرعت کار با اطلاعات رو توی RAM (انجین MEMORY) با روی هارد دیسک (سایر انجین ها) یکی میدونید؟
نه :لبخند:

abolfazl-z
چهارشنبه 03 دی 1393, 21:59 عصر
http://dev.mysql.com/doc/refman/5.7/en/features.html