# پایگاه‌های داده > NoSQL >  مشاوره انتخاب جایگزین برای MySQL

## barnamenevisaz

من به تازگی می خواهم یک موتو جستجو گر درست کنم ...
با فلوچارت و کلی فکر اومدم به این نتیجه رسیدم که همه دیتا ها درون یک فیلد قرار بگیره و اطلاعات را با نظم بندی فشرده کنم . فقط بخش کش رو در سیستم نمی گذارم که دیتابیس سنگین نشه ...
***خلاصه اول به فکر مای اس کیو ال افتادم
من چند cms پرقدرت با mysql درست کردم ...
اما خواستم این دیتابیس را تست قدرت کنم
با حلقه ی for آمدم 160000 رکورد 56 کیلو بایتی را به دیتابیس در یک ساعت اضافه کردم
8.3 گیگ پر شد ..
در 9 فایل ...
*** تو سرعت وقتی یک رکورد را که در پرایمری کی زدم مثلا id=65600 در ظرف 0.01 ثانیه آورد ولی برای جستجو  با متد های دیگر نظیر لایک و .. و همچین در فیلدهای دیگر , پنل phpmyadmin نتوانست دوام بیاورد و 750 ثانیه به طول انجامید و در نهایت داده ی جستجو شده را به اشتباه فقط چند مورد آورد در حالی که در همین جدول با 20000 رکورد به خوبی عمل میکرد . هیچ فرقی هم در جستجوی من نبود و داده های هم تنظیم شده و یکسان بود البته با ... بگذریم ***

در تنظیمات کش اس کیو ال و ... مربوطه را بالا آوردم اما چنگی به دل نزد
خواستم شیر کنم و در هارد اکسترنال داده های اسکیوال را بریزم و اونو در شبکه بیارم تا از دو کامپیوترم برای پردازش استفاده بشه اما همونی بود که بود و تغییر نکرد ...

**************************************************  ***********

خلاصه از mysql برای جستجو های پیچیده و بزرگ نمیشه استفاده کرد ...

من دنبال یک دیتابیس راحت میگیردم
=====که مثل mysql خودش دستورهای انجام شده را نشان بده و من نیاز نباشه دستور های حذف و آپ دیت و ساخت و ذخیره و جستجو و ... را من حفظ کنم و خود دیتا بیس به من همه را بگه ...=====

نمی دونم متوجه منظورم شده اید

یعنی در php برای اون تابع تعریف کرده باشند ...

و من لقمه ی آماده را در mysql_query بزارم
چیزی شبیه mysql_query در زبان php باشه ....

.........................

من دیگه نمی خوام روی mysql کارکنم چون اگه موتور جستجوی من بخواد بره سایتی نظیر تبیان تابناک آفتاب همشهری دنیای اقصاد و ... را بخونه و لینک های هر صفحه را خودکار index بکنه در عرض یک روز شاید 100000000 رکود داشته باشه ...

----------


## مبین رنجبر

سپاس از طرح این سوال.خدمت شما عرض کنم که همانطور که خودتون هم اشاره کردید دیتابیس های رابطه ای برای یک سری از کارها ساخته نشدند.
شما برای گذر از یک دیتابیس رابطه ای به غیر رابطه ای چند نکته را باید مدنظر قرار بدهید.یکی از دلایل را ذکر کردید که تعداد رکورد ها در یک روز به 100 میلیارد میرسه ( که البته در دنیای دیتابیس های غیررابطه ای و جنبش NoSQL این مقدار ، اصلا مقدار زیادی نیست و میشود به راحتی مدیریت کرد.در بعضی از مسائل تعداد سطرهای اطلاعات به 100 میلیارد در یک صدم ثانیه میرسه و حتی خیلی خیلی بیشتر ).

و اما دلیل دومی که باید مدنظر قرار بدهید ساختار و اسکیمای داده ها هست.شما فرمودید که همه دیتا ها درون یک فیلد.ساختار داده هاتون زیاد هم پیچیده نیست که نشود آن را مدیریت کرد.

خوب تا اینجا دیدیم که معیار گذر اینها بودند و البته خیلی هم میتواند بیشتر باشد که در تاپیک های دیگر این انجمن توضیح داده ام.




> من دنبال یک دیتابیس راحت میگیردم
> =====که مثل mysql خودش دستورهای انجام شده را نشان بده و من نیاز نباشه دستور های حذف و آپ دیت و ساخت و ذخیره و جستجو و ... را من حفظ کنم و خود دیتا بیس به من همه را بگه ...=====
> 
> نمی دونم متوجه منظورم شده اید
> 
> یعنی در php برای اون تابع تعریف کرده باشند ...
> 
> و من لقمه ی آماده را در mysql_query بزارم
> چیزی شبیه mysql_query در زبان php باشه ....


من منظور شما رو در پاراگراف بالا متوجه نشدم.

----------


## barnamenevisaz

با تشکر از پاسخ خوب شما :






> من دنبال یک دیتابیس راحت میگیردم
> =====که مثل mysql خودش دستورهای انجام شده را نشان بده و من نیاز نباشه دستور های حذف و آپ دیت و ساخت و ذخیره و جستجو و ... را من حفظ کنم و خود دیتا بیس به من همه را بگه ...=====
> 
> نمی دونم متوجه منظورم شده اید
> 
> یعنی در php برای اون تابع تعریف کرده باشند ...
> 
> و من لقمه ی آماده را در mysql_query بزارم
> چیزی شبیه mysql_query در زبان php باشه .... من منظور شما رو در پاراگراف بالا متوجه نشدم.


من هیچ یک از دستورات mysql را در ذهن خود حفظ نکردم و فقط اتصال آن با php و کار با mysql_query  کارم را راه می انداخت ...
چون در phpmyadmin هر کاری می کردم . کد اون کار را به من می گفت و دیگه کلید کار را به دست من میداد به همراه بهینه سازی واگر برنامهای مثل phpmyadmin برای *CouchDB هم phpmyCouch باشه :)
تا به شکل هوشمندانه هم بهینه شده ی یک کار را به من بده هم دستور صحیح و درست اون کار مثل گرفتم 1000 رکورد که به ده تا ده تا از آی دی 50 به 1050 نشان بده و این کد را به چند شکل می توان نوشت اما بهرین حالت را به من بده*   ...

بالای صفحه ... در زمان انجام کار , و من هم مستقیما آن کد را در mysql_query قرار میدادم و روی اون دستور تغییراتی میدادم تا بتوانم هر بلایی که روی دیتابیس بخواهم انجام بدهم , انجام بدهم ... :)
اما اگه می خواستم تک تک دستورات این دیتابیس را از  جایی بگیرم با کلی غلط همراه بود که باید می فهمیدم اون غلط چی هست مثلا  جای . از , استفاده میکردند که وقتی در php my admin میرفتم به صورت صحیح  اون کد را به من میداد و تازه بهترین کد بهینه را در phpmyadmin می توانستم  پیدا کنم و نیاز به دانش بهینه سازی در دیتابیس نبود ... :)

به نظر من هیچ دیتا بیسی همیشه مورد استفاده قرار نمی گیره و عمری داره . به نظر من عمر mysql  تا کمتر از 10 سال دیگه تمام میشه
پس من چرا چیزی که هر 25 سال چرخه عمرش تمام میشه را حفظ کنم .... در حالی که من بدون حفظ کردن هم می توانم %100 کارهایم را با دیتا بیس انجام بدهم !!!


---------- من به دیتابیسی نیاز دارم که کار با آن بسیار راحت باشه مثلباشه و با زبان php دستورات مربوط به آن دیتابیس را انتقال داد   و پنل مدیریت php روی اون دیتابیس ساخته شده باشه که دستورات بهینه شده را  به من نشان بده تا اینکه خودم بهینه کنم و اشتباهی باشه ----------

خواندم monogoDB همانند mysql چیزی شبیه mysql_query نداره و کار با api راه می اندازه  ... که باید خود تعریف کنیم  وگرنه mysql_query هم   فانکشن یا api هست اما api خود زبان php , نه ایجاد شده ... . فانکشن هم همان api است اما api یک فانکشن  نیست یک اصطلاح برای صدا زدن یک دستور برای ساده شدن اجرای آن دستور ها روی  یک دستور است . که اگر این حرفم تعجب آمیز بود دلیل حرف خودم را خواهم گفت  ... 
همه nosql ها : برای اتصال باید به وسیله ی اینکلود و صدا زدم یک فانکشن باشه (که در این صورت , سرعت پردازش درصدی پایین میاد اگه اینکلود بارون بشه !!! و در هر صفحه یک اینکلود و با یک بار صدا زدن فانکش همراه باشه)

اگه در زبان پی اچ پی نیاز api برای اتصاد به دیتابیس نباشه خیلی سرعت بالامیره ..
برای این مهمه ....
چون پردازش با php گرفته میشه

 Cassandra . *CouchDB* یا monogoDB
کدام در زبان phpتعریف شده هست ...

----------


## cups_of_java

برای هر 3تای این NOSQLها کلاینت PHP هست و کلن توی NoSQL ها کمتر مشکل Overhead اتصال به Database دارید و سرعت بالاست.
MongoDB پروتکل خودش رو TCP داره
CouchDB هم HTTP هست و بسیار سریع (RESTFULL هستش)
در مورد Cassandra هم فکر می کنم مثل Mongo پروتکل خودشو داشته باشه.

Couchdb چون Http بیس هست کار کردن باهاش بسیار سریع هست، ما تو پروژه های بزرگی ازش استفاده کردیم. اما نمی دونم نیاز های شما دقیقن باهاش جور در میاد یا نه
من نوشته های شما رو خوب متوجه نمیشم، احساس می کنم خوب توضیح نمی دید یا اینکه خوب نمی دونید چطوری باید بگید.

اگر بهتر توضیح بدید حرف هاتون رو  شاید بتونم بیشتر روشنتون کنم، احساس می کنم یه جاهایی رو درک درستی از موضوع ندارید شما!

----------


## مبین رنجبر

با سپاس از پاسخ دوستمون،

باید عرض کنم شما نباید وابسته به محیط باشید که اگر phpmyadmin به Futon (محیط مدیریتی CouchDB) تغییر پیدا کرد دیگر نتوانید از اون استفاده کنید.phpmyadmin و به طور کل برای کسانی هست که از دستورات sql کاملا آگاهی دارند و به علت سرعت کار باید از این محیط استفاده کنند.ما در دنیای نرم افزار مثالی میزنیم اون هم اینه که ِDrag & Dropist نباشید یعنی اینکه قبل از اینکه اجزای آماده رو مورد استفاده قرار بدید از کد اون کاملا اطلاع داشته باشید.

هر دیتابیس محیط مدیریتی مختص به خودش رو داره.

این موضوع رو که عمر یک چیز بلاخره تموم میشه خودش یک بحث جدا رو میطلبه که من نمیخوام ورود کنم.شما وقتی اساس کار دیتابیس های رابطه ای که SQL هست رو بدونید برای شما چه فرقی میکنه از MySQL استقاده کنید یا SQL Server . من همینجا میتونم بهتون بگم اگر SQL نمیدونید به هیچ وجه نمیتونید با دیتابیس هی خانواده NoSQL کار کنید.دیتابیس MongoDB که عمومی ترین عضو این خانواده است با استفاده از ترمینال میشه اون رو مدیریت کرد و کوچکترین دستور باید حتما نوشته شود.

همه دیتابیس ها برای خودشون واسطی دارند که در دیتابیس های رابطه ای عموما Driver هستند و در غیررابطه ای ها هم در بعضی مواقع Driver و در بعضی api . شما بلاخره برای ارتباط کدتون با دیتابیس باید یک سری دستورات اتصال رو به کار ببرید ، چه این دستورات خارجی باشند که با include یا using یا import اون رو متصل کنید ، چه خودتون دستی کدهارو بنویسید.پس این موضوع گریزناپذیره.

به نظر من CouchDB میتونه انتخاب بهتری باشه ولی باز هم عرض میکنم که شما هنوز چیزی از نوع داده ها و ساختارشون نگفتید.

----------


## barnamenevisaz

ممنونم از پاسخ خوب شما

بله من منظورم را خیلی بد میرسونم . البته خودم چنین نمی بینم اما دیگران و دوستانم هم همین مسئله را میگویند ... :) 

یکی از علایق من داشتن رابط کاربری شیوا و قدرت مند هست (البته ساده)
من تا الان اصلا دیتا بیسی نصب نکردم از نوع nosql که با محیط آن آشنا باشم
و  چجوری بگم ترس داشتم :) ترس از این که کلی وقت بزارم برای اینکه کار با  اون را یاد بگیرم و خوب مسلط بشوم بعد ببینم هیچ بدردم نمی خوره و جایی نمی  شه ازش استفاده کرد . جز در همین موتور جستجو 
و کارهای بزرگ که هر  برنامه نویس در عمرش سه چهار برابر بیشتر پیش نمیاد . من تا الان شاید 20  پروژه برای خودم انجام دادم ... پیچیده ترین آنها هم تا الان حدود 10000 خط  کدنویسی کردم ... . 
چون همه برای عموم هست که کار باید با mysql صورت  بگیره ... . مثل وردپرس . etchat .شیرترانیکس. و بیشتر انجمن سازها . که  همه  و همه از mysql به خاطر رواج در بازار هاستیگ مجبورند از آن استفاده  بکنند ...
که البته اگه برای پروژه های کوچک چنین کاری بخواهم انجام دهم  واقعا همین طور هم خواهم بود ... و نمیشه از چیزی دیگر استفاده کرد ... . 
الان  شاید فیس نما که در رتبه آلکسا فکر کنم رتبه 3 در ایران را دارد و از نظر  سرور واقعا قدرتمند هست و مدیرش به من گفته که ماهانه 3 میلیون تومان  هزینه  می کند . اما سرعت بارگذاری صفحات برای گرفتن اطلاعات از سرور به  شدت پایین هست . چرا ؟ / چون mysql راه حل نیست و گرنه سرعت سرور و  بارگذاری تصاویر و ... بالا هست ... gtmetrix.com . و این مدرکی بر قدرت  سرور فیسنماست ...
چون اگر کسی اسکریپتی ساده درست کند خب اون اسکریپت  برای افرادی هست که زیاد حوصله ی کار با فضای مجازی را ندارند و در نتیجه  نمی خواهند یک سرور اختصاصی با پیکر بندی شخصی داشته باشند و درخواست داشتن  دیتابیس مورد نیاز خودشون ....

اما کار من نیاز دارد به یک سیستم بسیار پر سرعت
و الان می خواهم روی یکی کار کنم ...
Couchdb  گزینه ی مناسبی نخواهد بود , من الان به سایت سازنده رفتم دیدم فقط نسخه  ویندوز داره و اون هم 32 بیتی !!! خب یعنی اگر روی 64 بیتی هم نصب بشه با  تنها 4 گیگ رم سرور کار خواهد کرد ... . بعد از لینوکس هم برای کار خودش  استفاده نمی کنه (پشتیبانی نمیکنه) ... . به نظر من لینوکس سرعت بالایی  داره در محاسبات نه در گرافیک / دلیل هم , یک نرم افزار طراحی سیستم های  سخت افزاری روی هر دو سیستم عامل که اسمش یادم رفت و سرعت متفاون در پردازش  بین این دو هست .  اما غیر از آن امنیت لینوکس به خاطر اینکه از متن باز  بودنش به دست آورده نمیشه با ویندوز یکی دانست ... 

با این حال من کار باویندوز را راحتر میدونم ... چون یک عمر با اون زندگی کردم D:


وقتی bbc که روزانه 15000000 درخواست را با همین db کنترل میکنه پس سیستم بسیار قدرتمندی باید باشد

مشکل دوم من الان رو نصب هست که به راهنمای این سیستم دسترسی نیست ...

در  mysql من با نصب آپاچی و php و mysql مشکلی نداشتم حتی با wamp و xamp  مشکلم در مدریت و منیت روی این سیستم ها بسیار کمتر هم شد ...

کانفیگ mysql در php با فعال کردن دو دستور همراه بود در php.ini

اما هر سه دیتابیس این مورد را نمی دانم دارند یا ندارند ...

کدام یک آموزش یا راهنمای بیشتری در اینترنت دارد

و کدام راهنمای انگلیسی شیواتری دارند ... (به همراه مثال)

از بین 
cassandra.apache.org (فیس بوک)
couchdb.apache.org 

برای  یک تازه کار در کار با این برنامه ها ... که هنوز حتی چهره ی مدیریت و  استفاده از یک دیتابیس جدید را ندیده کدام بسیار راحت می باشد
اگر سایت خارجی یا ایرانی برای آموزش کامل این دو دیتابیس هم هست خواهشا لینک اون سایت را بفرمایید ...


با تشکر از شما دوستان گلم

-----------------------------------------------------------------------------------------------------

با تشکر هم از دوست عزیز *Lsass.CRC32* 

بسیار درست میفرمایید :



> .شما وقتی اساس کار دیتابیس های رابطه ای که SQL هست رو بدونید برای شما چه  فرقی میکنه از MySQL استقاده کنید یا SQL Server . من همینجا میتونم بهتون  بگم اگر SQL نمیدونید به هیچ وجه نمیتونید با دیتابیس هی خانواده NoSQL  کار کنید.دیتابیس MongoDB که عمومی ترین عضو این خانواده است با استفاده از  ترمینال میشه اون رو مدیریت کرد و کوچکترین دستور باید حتما نوشته شود.


اما خب مگه جز :

اضافه حذف ویرایش ساخت نمایش (محدود کردن از تعدادی رکورد از فلان تا فلا) و سرچ که گاها در دستور نمایش جاسازی میشه در سیستم دیتا بیس چیزی دیگری می تواند داشته باشد . البته میگم من تنها با mysql کار کرده ام و همانند شما روی چندین سیستم کارنکردم که نظری بدهم ... .


داده های من به این شکل خواهد بود :

فیلد 1
فیلتر تگها با preg_replace حذف همه تگها و داده های داخلی تگهای اسکریپت و استایل و حذف فاصله نقطه پاراگراف بیشتر از 3 ... و اضافه کردن تگ تایتل و تگ سایت (نداریم من برای استفاده روی گرفتن آدرس تگی جدید درست کرده ام ) و تگ تاریخ که همه در کنار هم قرار میگیرد
و در نهایت برای نمایش متن به تنهایی متن
عنوان در متنکه جدا میشود در نمایش
و تاریخ آدرس هم همینطور 

فیلد 2 :

جدیدا می خواهم این امکان هم اضافه بکنم 

همه تگها هست جز تگ راهنما و تگ استایل و عنوان

تا اگر صفحه تغییر کرد کابر مشکلی نداشته باشد و داده ی قبلی موجود باشد

..................................................  ............................


البته باز شاید ادقام بشود برای سرعت
ودر نهایت یک فیلده بشود

..................................................  .............................
فیلد بعدی هم فیلد اصلی هست (ID) که تکرار ناپذیره
و برای اینکه خودم بدونم چند بار رکور اضافا کرده (با مجموع حذف کردنها برای پز دادن به رقبا :) )

----------


## مبین رنجبر

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

در مورد CouchDB قبلا تاپیک هایی ایجاد کردم به که طور مختصر به این دیتابیس پرداخته است و از لینک های زیر قابل دسترسی هستند :

معرفی پایگاه داده CouchDB

شروع کار با CouchDB

میزبانی وب پایگاه داده های NoSQL

در مورد ساختاری که از داده هاتون مطرح کردید بهترین گزینه همان مدل رابطه ای است.

----------


## cups_of_java

نمی دونم چطوری بررسی کردید Couchdb رو که به این نتیجه رسیدید اما Couchdb رو اتفاقن کمتر رو ویندوز نصب می کنن و کلن روی Linux نصب میشه. حتی روی OSX هم نصب میشه.
ما روی انواع توزیع های Linux‌ نصبش کردیم.
محیط گرافیکیش اسمش Futon هست و نصبتن راحت و سادست اما اصلن با phpMyAdmin مقایسش نکنید. 

مشکل کندی خیلی از سایت ها صرفن به خاطر DBMS یا MySQL‌ نیست. در خیلی از موارد تصمیمات غلط معماری،‌ گاهی کد نویسی های بد، گاهی عدم پیکربندی مناسب سرور ها و DBMS و ... می تونه تاثیر داشته باشه.
MySQL تو خیلی از سایت های پر ترافیک مثل همین Facebook داره استفاده میشه به صورت Cluster شده و مشکلی از نظر سرعت نداره اگه بلد باشیم چطور ازش استفاده کنیم.

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

----------


## barnamenevisaz

بسیار ممنونم از توجه شما به مطالب بنده

من امروز روی این دیتا بیس کار خواهم کرد ... . اما چند چیز خیلی مهم از متن بسیار مفید شما دستگیرم شد

1. nosql ها برای کارهایی خوبند که تعداد فیلد زیادی داره . و دلیل محبوبیت آنها بخاطر سرعت در موارد ساده نیست ...
2. پس باید طوری برنامه ریزی کرده باشند که مثلا ما فیلد نام و آدرس و تلفن داریم ... اما آنهایی که تلفن وارد نمیکنند مقدار NULL را وارد جدول نمیکند . چون جدولی در کار نیست که فضایی نه چندان زیاد اما فضا اختصاص داده شود ...
3. NULL در no sql نداریم
4. محدویت فیلد نداریم
5. فیلد ها در یک جدول می تواند در هر رکورد یکسان نباشد
6. تعریف نوع DATE DATE/TIME TEXT INT و ... نداریم و این برای سرعت اهمیت دارد

وگرنه از نظر دیگر با sql فرقی ندارد !!!

من واقعا فرق جدول (رابطه ای) با ستونی که میگید نفهمیدم
به نظرم آمد چنین باید باشد

..................................................  ............................

راه حل = در sql سعی کنیم همه چیز در کمتر از 3 فیلد خلاصه بشود و یا از تعدد جدول بجای فیلد استفاده شود تا سرعت بالا برود . و تست سرعت من که sql نتوانست از آن موفق شود به خاطر داشتن 27 فیلد بود برای ثبت تنظیمات کاربران که با  sql میشه همه را در یک فیلد جا داد ...
مثلا زن یا مرد = 0/1
مدیر معاون وزیر = 0/1/2
رنگ نوشته = 000000
تاریخ تولد = 1368/02
در sql بجای چهار فیلد از یک فیلد به شکل
0-1-000000-136802 استفاده بشود تا سرعت حفظ شود
البته فیلد پسورد و نام کاربری و نام رکورد ID که فیلد اصلی هست و تعداد کاراکتر نا معین هست باید جدا باشد
و تا می توانیم از ساختار longtext استفاده بکنیم . البته با رعایت نکات امنیتی تا با افزونه ی http---- نشود هک کرد ... 
..................................................  ..........
همین طور در کار من که یک جسجوگر فعلا ساده هست
..................................................  .........

و چیز دیگری که از کلام شما گرفتم این بود که سرعت sql ها از نوع nosql ها نسبی کم هست نه برابری
پس با بهینه کردن دستورات و متکی کردن دستورات به php تا به sql , باعث سرعت چشم گیری روی دیتاها خواهد شد

واقعا شما استاد خوبی بودید :)


با تشکر از قرار دادن آموزشهای بسیار مفیدتون

----------


## barnamenevisaz

> نمی دونم چطوری بررسی کردید Couchdb رو که به این نتیجه رسیدید اما Couchdb رو اتفاقن کمتر رو ویندوز نصب می کنن و کلن روی Linux نصب میشه. حتی روی OSX هم نصب میشه.
> ما روی انواع توزیع های Linux‌ نصبش کردیم.
> محیط گرافیکیش اسمش Futon هست و نصبتن راحت و سادست اما اصلن با phpMyAdmin مقایسش نکنید. 
> 
> مشکل کندی خیلی از سایت ها صرفن به خاطر DBMS یا MySQL‌ نیست. در خیلی از موارد تصمیمات غلط معماری،‌ گاهی کد نویسی های بد، گاهی عدم پیکربندی مناسب سرور ها و DBMS و ... می تونه تاثیر داشته باشه.
> MySQL تو خیلی از سایت های پر ترافیک مثل همین Facebook داره استفاده میشه به صورت Cluster شده و مشکلی از نظر سرعت نداره اگه بلد باشیم چطور ازش استفاده کنیم.
> 
> نهایتن احساس می کنم شما خیلی به جزییات می پردازی و هنوز دید درستی از موضوع نداری. اگه از بالا بتونی بگی نیازهات چیه و چه محدودیت هایی داری میشه دقیقن راهنماییت کرد که از چی استفاده کنی.
> شاید هم نیاز هات رو درست نمی دونی یا دنبال چیز غیر معقولی باشی اینطور که از نوشته هات معلومه! اگه دوست داری می تونیم کلامی صحبت کنیم.


نتیجه کارم معلوم شد

نصب این دیتابیس Couchdb و کار با آن 
اما برای استفاده تا آنجا که دستگیرم شد همان mysql کار راه اندازه و خوب هم عمل میکنه
فکر کنم تبیان به آن بزرگی و بلاگفا هم از mysql استفاده میکنه
پس حرف شما صحیح است
باید بهینه کار کرد که من نظر خودم را برای بهینه سازی دیتابیس گفتم
اگه مورد تایید شما استادان برنامه نویس باشه دیگه مشکلم از بابت این حل خواهد شد
یعنی فشرده کردن تنظیمات در دیتابیسو  و گرفتن با فانکشن و تجزیه ی آنها روی api ساخته شده توسط فانکش

ممنونم دوست عزیز

----------


## مبین رنجبر

> 1. nosql ها برای کارهایی خوبند که تعداد فیلد زیادی داره . و دلیل محبوبیت آنها بخاطر سرعت در موارد ساده نیست ...
> 2. پس باید طوری برنامه ریزی کرده باشند که مثلا ما فیلد نام و آدرس و تلفن داریم ... اما آنهایی که تلفن وارد نمیکنند مقدار NULL را وارد جدول نمیکند . چون جدولی در کار نیست که فضایی نه چندان زیاد اما فضا اختصاص داده شود ...
> 3. NULL در no sql نداریم
> 4. محدویت فیلد نداریم
> 5. فیلد ها در یک جدول می تواند در هر رکورد یکسان نباشد
> 6. تعریف نوع DATE DATE/TIME TEXT INT و ... نداریم و این برای سرعت اهمیت دارد
> 
> وگرنه از نظر دیگر با sql فرقی ندارد !!!
> 
> ...


این رو در اول بحث عرض کنم که ما در NoSQL اصلا مفاهیم فیلد،رکورد،جدول و ... که مربوط به مدل رابطه ای میشوند رو نداریم.به طور مثال ما مبحث جفت های کلید-مقدار داریم.پس اصلا دلیل نمیشه این جفت کلید-مقدار ها تعدادشون زباد باشه و یا کم خوب باشند یا بد. ولی تقریبا درست متوجه شدید که سرعت اون ها رو باید در مقیاس بالا مشاهده کرد.

ببیند ما در مانگو یا CouchDB به این صورت مقالی که شما زدید در مورد نام،آدرس و تلفن رو ذخیره میکنیم.

{"_id:1,"name":"YOURNAME","tell":"YOURTELLNUMBER",  "address":"YOURADDRESS"}

به سطر بالا میگن یک سند داده ای.که به طور مثال کلید نام میتواند شکسته شود و شامل نام کوچک و نام خانوادگی هم شود.

مواردی که ذکر کردید هیچکدوم صحیح نیست و یا حداقل در اصول NoSQL نمیگنجه.

در مورد فرق این 2 مدل موارد خیلی رو میشه نام برد ولی میتونید در تاپیک زیر اطلاعات خوبی برای مقایسه این دو مدل دریافت کنید :

 پایگاه های داده ای رابطه ای یا غیر رابطه ای ؟ مسئله این است!

در مورد سرعت هم الزاما اینطور نیست.ما معیار سرعت رو بر حسب مقیاس داده ای در نظر میگیریم.

----------


## cups_of_java

> مواردی که ذکر کردید هیچکدوم صحیح نیست و یا حداقل در اصول NoSQL نمیگنجه.


حتی در مورد جدولی ها هم اینطور که شما گفتی نیازی نیست به فشرده سازی و بحث کارایی پرداخت! یه سری اصول نرم افزاری زیر سوال میره، برنامه غیر مهندسی در میاد.

----------


## barnamenevisaz

بحث جالب شد ؟ (من با دلیل میگم کار من خیلی بهتر از شکل معمول هست "البته  شما در فکر سورت کردن و گرفتن تعداد مدیر و معاون ها هستید که بله در اون  صورت که بخواهیم بفهمیم چند مرد یا زن داریم و یا چند مدیر داریم واسم هر  کدام چیست به مشکل بر میخوریم اما برای اون هم روشی غیر از جستجوی همه داده  ها و گرفتن داده های مورد نظر در زیر شرط که باز روشی جالب نیست اما همه  چیز به این شکل نیست ... مثل رنگ و فونت و قالب انتخابی و ...")
و من  تازه می خواهم در برنامه هایم از این روش استفاده کنم و اون ایده برای اولین  بار به ذهنم آمد خوب حتما نباید چیزی که در لحظه به ذهن بیاید درست باشد .

فعلا که من روی CouchDB دارم کار میکنم . روی 7 ... .
البته تا 2 ساعت پیش :)

تازه وارد این سیستم شدم ... .

اما  شما با مطالب بالا منو به انجام کارم دلسرد کردید ... . فکر می کنم که کار  من به تنهایی نیست که موتور جستجور گر بسازم ... برنامه نویسی اون کاری  نداره ولی بهینه برنامه نوشتن و حرفه ای نوشتن با امیدهای بسیاری که به من  داده اید نشدنی میبینم ... خیلی از این جستجوگر جلو رفته ...****** الان  قشنگ بهش آدرس یکی از سایتهایم را دادم تمام لینکها را گرفت و هرکدام را در  کش کرد و اضافه شد به رکوردهایم ******... 3 فیلد شد تا الان ... اما باید  نیمه کاره رها کنمش , کار من به تنهایی نیست ... . و با هزینه ای که کنار  گذاشتم 3 میلیون حتی نمیشه اجاره یک ماه از این موتور جستجوگر کوچیک خودمو  بدم ... و کسی هم از آن استفاده نخواهد کرد تا وقتی که گوگل هست و هوشمند  هم هست . با تبلیغ پول از دست رفته ام برنمی گرده چون بازدید کننده نخواهد  داشت که تبلیغ کنم و پول بگیرم ... 

2 هفته روش کار کردم و به بن بست رسیدم ...

پیشنهادم  اینکه وقت خودتونو تکی روی یک پروژه ای که افراد زیادی برای آن وقت  گذاشتند و وقتها روی آن گذشته کار نکنید ... . کار بیهوده ای هست ... . 2  هفته چیزی نیست اما خدا رو شکر 2 ماه نشد که فهمیدم این کار کار من نیست  ...

----------

