آموزش تکنولوژی MEAN

MEAN Framework for Web Developers
جمعه, ۶ آذر ۱۳۹۴، ۰۱:۴۴ ق.ظ

آموزش Mongo DB قسمت چهارم

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

   تا به امروز ما سعی کردیم شما را با Mongo DB آشنا کنیم و نحوه نصب و دستورات پر کاربرد و کلی را به شما عزیزان آموزش بدم.

اما از این قسمت به بعد می خواهم دستورات مهم و خدمتتان آموزش بدهم. نحوه آموزشی که من می خواهم شروع کنم به صورت پروژه محور می باشد. یعنی الان یه سناریو برای خودمون تعیین می کنیم و شروع می کنیم به انجام آن  و با چالش های آن روبه رو می شیم و آن ها رو هم رد می کنیم.

سنارویی که می خواهم با هم انجام دهیم :

می خواهیم اطلاعات یک بایگانی را در پایگاه داده خودمون ذخیره کنیم. خوب بایگانی که ما میشناسیم برای سازمانی است که روزی 100 هزار پرونده جدید ثبت می شود و اسناد مختلفی برای ثبت دارد.

خوب ما می تونیم برای اینکار از بانک های RDMBS استفاده کنیم و آن را طوری طراحی کنیم که سندهای مختلف را بتوانیم درونش ثبت کنیم. اما خدا نکنه که بخواهید یه گزارش از سیستم بگیرید می خواهید گریه کنید از پس مجبورید join  بزنید. اما در بانک های NoSql نیاز به این کار ندارید. یعنی حتی نیاز به طراحی کامل بانک اطلاعاتی ندارید. فقط کافیه مجموعه های خود را بسازید. شاید شما هم مثل من چندین سال هست که با  SQL کار کرده اید و این طور فکر کردن و پیاده سازی آن براتون سخت باشه. چون ما عادت کردیم که یه جدول پایه باید داشته باشیم و یه جدول که با اون در رابطه باشه و .... . اما مهم ترین ویژگی بانک های NoSql در این است. بیشتر از این وقت و نمی گیرم و میرم برای شروع کار.

 

اطلاعات سرویس ها  :

اینترنت / اینترانت / MPLS { نام مشترک – نوع سرویس –  شماره قرارداد – تاریخ قرارداد – ظرفیت درخواست شده – دایری {شماره نامه دایری، تاریخ نامه دایری، ظرفیت دایر شده}– مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

فضا { نام مشترک – نوع سرویس – شماره قرارداد – تاریخ قرارداد – فضا(متر) – مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

دکل مخابراتی { نام مشترک – نوع سرویس – شماره قرارداد – تاریخ قرارداد – دکل{نوع، زاویه، ارتفاع، قطر} – مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

مکاتبات روزانه :

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

 

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

         

مجموعه هایی که نیاز داریم :

 اطلاعات سرویس ها – اطلاعات مکاتبات روزانه

(یه نکته خیلی جالب من این کار و در حد یه سازمان دولتی بزرگ انجام دادم و الان حدودا یک ساعتی هست دارم فکر می کنم که به چه مجموعه هایی نیاز هست،این کار را در SQL Server با بیش از 6 جدول انجام دادم در صورتی که در اینجا به دو مجموعه بیشتر نیاز نداریم!)

خوب ما 2 روش برای ساخت مجموعه داریم، یکی اینکه از دستوری که امروز خدمتتان عرض می کنم استفاده کنیم، راه دوم اینه که شما به محض اینکه سندی را ذخیره کنید، اگر آن مجموعه از قبل تعریف نشده باشد، اول آن مجموعه را میسازد بعد آن سند را ذخیره می کند.

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

 

خوب همان طور که در بالا مشاهده می کنید، من اول وارد محیط Mongo DB شده ام، سپس دیدم در چه دیتابیسی هستم که چون دیتابیسی نساخته ام پیش فرض در test هستم و چون هنوز سندی را ذخیره نکرده ام در show dbs آن را نمی بینم. خوب این توضیحات برای آموزش های قبلی بود.در خط آخر دستوری نوشته شده با این مظنون :

>  Db.createcollection(

"نام مجموعه",{capped:Boolean,autoIndexID:Boolean,size:Number,max:Number})

نام مجموعه : نام مجموعه ای است که قرار ساخته شود و تنها فیلد اجباری هنگام ساخت مجموعه است.

Capped : اگر مقدار این ویژگی را برابر با True قرار دهیم، یک مجموعه با طول ثابت برای ما می سازد که اگر اندازه آن به حداکثر برسد، به صورت اتوماتیک داده های جدید را جایگزین قدیمی ترین داده ها می کند.در ضمن اگر مقدار این ویژگی را برابر با True قرار دادید، ویژگی Size را هم باید مقدار دهی کنید.مقدار پیش فرض این ویژگی False است.

AutoIndexID : همانطور که از نام این ویژگی معلوم است بر روی فیلد ID به صورت اتوماتیک Index قرار می دهد. مقدار پیش فرض این ویژگی False است.

Size : حداکثر سایز مجموعه به بایت است.

Max : حداکثر سندهایی که می توان درون یک مجموعه قرار داد.

 

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

 


خوب در اینجا مجموعه ما باهمان ویژگی که ما می خواستیم به ثبت رسید، اما در اینجا یه کار دیگه هم انجام دادیم. یک بانک اطلاعاتی به نام archive ساختم و یعد مجموعه را درون بانکم ساختم. در آموزش های قبلی گفته بودم که با دستور use  می توانید بین بانک های اطلاعاتی سوئیچ کنید، اما در اینجا می بینید که ما با همان دستور use یک بانک اطلاعاتی جدید ساختیم. متوجه شدید چی شد؟ Mongo DB نیازی به تعریف های از قبل نداره! یعنی شما وقتی از دستور use استفاده می کنید، خود Mongo میره ببینه همچین بانکی وجود دارد یا خیر، اگر وجود نداشته باشد آن را می سازد بعد وارد آن بانک می شود.این ویژگی Mongo DB را به خاطر بسپارید چون هم امکان اشتباه دارد هم اینکه خیلی خیلی به کار می آید.الان من اگر دوباره show dbs را اجرا کنم شما بهتر درک می کنید که چه اتفاقی افتاده است .

 

خوب همین کار را برای letter هم انجام می دهیم.

 

از این به بعد می خواهم در هر آموزش یک دستور و به طور کامل توضیح دهم، اگر فکر می کنید این روش آموزش درست نیست و بهتره از روش دیگری استفاده کنم خواهشا در قسمت نظرات بفرمایید تا اون طوری که شما دوست دارید و فکر می کنید بهتر است آموزش بدهم.

خدا نگهدار

 

 



نوشته شده توسط بهزاد خلیلی
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم
آموزش تکنولوژی MEAN

با سلام خدمت شما عزیزان
من بهزاد خلیلی و دوست خوبم حمیدرضا صدیق می خواهیم در این وبلاگ تکنولوژی MEAN را یه فارسی زبانان علاقه مند معرفی کنیم.
فریم ورک MEAN یک فریم ورک کامل (Full Stack) جاوا اسکریپت برای توسعه دهندگان وب است که در سالهای اخیر توانسته در برابر LAMP خودی نشان دهد.

طبقه بندی موضوعی
بایگانی
نویسندگان

آموزش Mongo DB قسمت چهارم

جمعه, ۶ آذر ۱۳۹۴، ۰۱:۴۴ ق.ظ

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

   تا به امروز ما سعی کردیم شما را با Mongo DB آشنا کنیم و نحوه نصب و دستورات پر کاربرد و کلی را به شما عزیزان آموزش بدم.

اما از این قسمت به بعد می خواهم دستورات مهم و خدمتتان آموزش بدهم. نحوه آموزشی که من می خواهم شروع کنم به صورت پروژه محور می باشد. یعنی الان یه سناریو برای خودمون تعیین می کنیم و شروع می کنیم به انجام آن  و با چالش های آن روبه رو می شیم و آن ها رو هم رد می کنیم.

سنارویی که می خواهم با هم انجام دهیم :

می خواهیم اطلاعات یک بایگانی را در پایگاه داده خودمون ذخیره کنیم. خوب بایگانی که ما میشناسیم برای سازمانی است که روزی 100 هزار پرونده جدید ثبت می شود و اسناد مختلفی برای ثبت دارد.

خوب ما می تونیم برای اینکار از بانک های RDMBS استفاده کنیم و آن را طوری طراحی کنیم که سندهای مختلف را بتوانیم درونش ثبت کنیم. اما خدا نکنه که بخواهید یه گزارش از سیستم بگیرید می خواهید گریه کنید از پس مجبورید join  بزنید. اما در بانک های NoSql نیاز به این کار ندارید. یعنی حتی نیاز به طراحی کامل بانک اطلاعاتی ندارید. فقط کافیه مجموعه های خود را بسازید. شاید شما هم مثل من چندین سال هست که با  SQL کار کرده اید و این طور فکر کردن و پیاده سازی آن براتون سخت باشه. چون ما عادت کردیم که یه جدول پایه باید داشته باشیم و یه جدول که با اون در رابطه باشه و .... . اما مهم ترین ویژگی بانک های NoSql در این است. بیشتر از این وقت و نمی گیرم و میرم برای شروع کار.

 

اطلاعات سرویس ها  :

اینترنت / اینترانت / MPLS { نام مشترک – نوع سرویس –  شماره قرارداد – تاریخ قرارداد – ظرفیت درخواست شده – دایری {شماره نامه دایری، تاریخ نامه دایری، ظرفیت دایر شده}– مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

فضا { نام مشترک – نوع سرویس – شماره قرارداد – تاریخ قرارداد – فضا(متر) – مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

دکل مخابراتی { نام مشترک – نوع سرویس – شماره قرارداد – تاریخ قرارداد – دکل{نوع، زاویه، ارتفاع، قطر} – مبلغ قرارداد – مدت زمان اجرای قرارداد – نوع ضمانت نامه – مبلغ ضمانتنامه – استان درخواست شده – شهر درخواست شده }

مکاتبات روزانه :

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

 

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

         

مجموعه هایی که نیاز داریم :

 اطلاعات سرویس ها – اطلاعات مکاتبات روزانه

(یه نکته خیلی جالب من این کار و در حد یه سازمان دولتی بزرگ انجام دادم و الان حدودا یک ساعتی هست دارم فکر می کنم که به چه مجموعه هایی نیاز هست،این کار را در SQL Server با بیش از 6 جدول انجام دادم در صورتی که در اینجا به دو مجموعه بیشتر نیاز نداریم!)

خوب ما 2 روش برای ساخت مجموعه داریم، یکی اینکه از دستوری که امروز خدمتتان عرض می کنم استفاده کنیم، راه دوم اینه که شما به محض اینکه سندی را ذخیره کنید، اگر آن مجموعه از قبل تعریف نشده باشد، اول آن مجموعه را میسازد بعد آن سند را ذخیره می کند.

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

 

خوب همان طور که در بالا مشاهده می کنید، من اول وارد محیط Mongo DB شده ام، سپس دیدم در چه دیتابیسی هستم که چون دیتابیسی نساخته ام پیش فرض در test هستم و چون هنوز سندی را ذخیره نکرده ام در show dbs آن را نمی بینم. خوب این توضیحات برای آموزش های قبلی بود.در خط آخر دستوری نوشته شده با این مظنون :

>  Db.createcollection(

"نام مجموعه",{capped:Boolean,autoIndexID:Boolean,size:Number,max:Number})

نام مجموعه : نام مجموعه ای است که قرار ساخته شود و تنها فیلد اجباری هنگام ساخت مجموعه است.

Capped : اگر مقدار این ویژگی را برابر با True قرار دهیم، یک مجموعه با طول ثابت برای ما می سازد که اگر اندازه آن به حداکثر برسد، به صورت اتوماتیک داده های جدید را جایگزین قدیمی ترین داده ها می کند.در ضمن اگر مقدار این ویژگی را برابر با True قرار دادید، ویژگی Size را هم باید مقدار دهی کنید.مقدار پیش فرض این ویژگی False است.

AutoIndexID : همانطور که از نام این ویژگی معلوم است بر روی فیلد ID به صورت اتوماتیک Index قرار می دهد. مقدار پیش فرض این ویژگی False است.

Size : حداکثر سایز مجموعه به بایت است.

Max : حداکثر سندهایی که می توان درون یک مجموعه قرار داد.

 

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

 


خوب در اینجا مجموعه ما باهمان ویژگی که ما می خواستیم به ثبت رسید، اما در اینجا یه کار دیگه هم انجام دادیم. یک بانک اطلاعاتی به نام archive ساختم و یعد مجموعه را درون بانکم ساختم. در آموزش های قبلی گفته بودم که با دستور use  می توانید بین بانک های اطلاعاتی سوئیچ کنید، اما در اینجا می بینید که ما با همان دستور use یک بانک اطلاعاتی جدید ساختیم. متوجه شدید چی شد؟ Mongo DB نیازی به تعریف های از قبل نداره! یعنی شما وقتی از دستور use استفاده می کنید، خود Mongo میره ببینه همچین بانکی وجود دارد یا خیر، اگر وجود نداشته باشد آن را می سازد بعد وارد آن بانک می شود.این ویژگی Mongo DB را به خاطر بسپارید چون هم امکان اشتباه دارد هم اینکه خیلی خیلی به کار می آید.الان من اگر دوباره show dbs را اجرا کنم شما بهتر درک می کنید که چه اتفاقی افتاده است .

 

خوب همین کار را برای letter هم انجام می دهیم.

 

از این به بعد می خواهم در هر آموزش یک دستور و به طور کامل توضیح دهم، اگر فکر می کنید این روش آموزش درست نیست و بهتره از روش دیگری استفاده کنم خواهشا در قسمت نظرات بفرمایید تا اون طوری که شما دوست دارید و فکر می کنید بهتر است آموزش بدهم.

خدا نگهدار

 

 

۹۴/۰۹/۰۶ موافقین ۴ مخالفین ۰

نظرات  (۲)

۱۰ آذر ۹۴ ، ۲۱:۳۱ محمد مجیبیان
خسته نباشی بهزاد جان،ممنون بابت پست های آموزشی.
پاسخ:
محمد جان از اینکه وقت می ذاری و میای ممنونم، امیدوارم این آموزش ها کمکت کرده باشه.
۰۷ آذر ۹۴ ، ۰۸:۵۸ سینا توکل
سلام، ممنون از آموزش تون به نظر من بر اساس پروژه ملموس تر میشه
پاسخ:
سلام ممنون از توجهتون. تو پستهای جدید سعی بر این شده که با مثال جلو بریم اگر یاز هم گنگ بود اعلام کنین.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی