Mongo DB چیست👌و چگونه کار میکند؟(آموزش خلاصه)
MongoDB چیست؟ دیتابیسی با سرعت بالا، ویژه فریمورک های جاوااسکریپت، مخصوصا اپلیکیشن های mern stack. در این مقاله کارکردن با این پایگاه داده را یاد میگیریم.
توضیحات کامل
خلاصه:
برای طراحی هر وب اپلیکیشنی، شما نیاز به این دارید که اطلاعات مربوط به اون اپ رو در جایی ذخیره کنید. مثلا سایت شما 20 تا محصول داره. هر کدوم از این محصول ها، بخش های مختلفی مثل تصویر، عنوان، توضیحات، قیمت و... دارن. خوب این اطلاعات باید در جایی ذخیره بشن تا در زمان نیاز، فراخوانی بشن( به کمک بک اند) و در فرانت اند وب اپلیکیشن نمایش داده بشن. به این پایگاه، که برای ذخیره داده ها استفاده میشه، میگیم دیتابیس یا پایگاه داده . مونگو دی بی، یکی از انواع همین پایگاه داده هاست.
کمی در مورد مونگو دی بی
برای طراحی وبسایتهای مرن استک، معمولا از پایگاه داده مانگو استفاده میشه. وب سایت اصلی این دیتابیس، mongodb هست که خدمات رایگان هم ارائه میده. به درد بخورترین خدماتش هم این هست که شما میتونید برای اپلیکیشن های تست یا نمونه کار خودتون، دیگه هزینهای بابت ساخت دیتابیس ندید. 500 مگابایت به صورت رایگان در اختیارتون میزاره و یه لینک بهتون میده که از طریق بک اند، میتونید بهش وصل بشید و سپس به کمک api، این اطلاعات رو بدید به فرانت سایت. این دیتابیس معروف هست به mongo db atlas. این 500 مگ هم که گفتم، برای هر دیتابیس 500 مگ میده. میتونید بیش از 1 دیتابیس توش بسازید.
کار کردن با mongodb atlas و اتصال به دیتابیس
برای کار کردن با این وب سایت، ابتدا واردش میشید. البته vpn هم نیاز هست. اینو بگم خدمتتون که اگه بخواید توی سایت مونگو دی بی بچرخید، vpn نیاز دارید ولی برای استفاده از خود دیتابیس و نمایش اطلاعات موجود در اون، توی سایت خودتون، 95 درصد اوقات بدون vpn اوکیه و بدون vpn اطلاعات رو بهتون میده. برای من پیش اومده که اطلاعات موجود در دیتابیش خود سایت مونگو رو خواستم بگیرم، اطلاعات لود نمیشد و وقتی vpn زدم اوکی شد ولی تعداد دفعاتی که این مشکل پیش اومده، خیلی کم هست. بگدریم...
آموزش amongodb atlas
قبل از توضیح بگم: سایت مونگو خیلی کنده. صبر نیازه که داشته باشید. تغییر یه صفحه به صفحه دیگه ممکنه 40 ثانیه زمان ببره. پس نگران این موضوع نباشید. ( البته سرعت خود دیتابیسش بد نیست، خوبه ولی سایت اصلی، کارکردش یه مقدار کنده.)
1. یه حساب کاربری میسازید.
2. طبق عکس زیر، روی آیکن کلیک کنید. نام تمامی پروژه هایی که ساختید میاد که قطعا چیزی نساختید. روی ساختن پروژه کلیک کنید.
3. طبق تصویر، یه پروژه بسازید و اسم براش انتخاب کنید.
4. نیازه که یه کاربر به پروژه اضافه کنید. به طور پیشفرض اضافه شده اکانت شما به این پروژه؛ پس نیاز نیست که کاری بکنید. فقط روی دکمه create بزنید تا پروژه کامل ساخته بشه.
5. حالا پروژهتون ساخته شده. روی دکمه build a database بزنید. و گزینه FREE و shared رو انتخاب کنید.
دقت کنید. هر سری برای ساختن یه دیتابیس، باید یه پروژه از نو بسازید و این فرایند رو کامل برید. چون این امکان وجود داره که کلا یه پروژه بسازید و 10تا دیتابیس توی همون پروژه بزارید ولی دیتابیس های دوم و سوم و.. پولی هستن.
6. هیچ چیزی رو توی این صفحه نیاز نیست تغییر بدید فقط توی بخش نام دیتابیس که بخش آخر هست، میتونید نام دیتابیستون رو تغییر بدید. به طور پیشفرض cluster-0 هست. تغییرش بدید و کلیک کنید روی create-cluster
7. توی صفحه جدید یه نام کاربری و رمز عبور برای دیتابیستون انتخاب کنید. این اطلاعات رو یه جایی ذخیره کنید چون تو ادامه کار نیاز میشه.
8. اسکرول کنید پایین تر. یه گزینه داره به اسم Add entries to your IP Access List. زیرش هم دو تا فیلد داره. بغل دستش یه دکمه داره به اسم Add My Current IP Address. روی اون کلیک کنید تا آی پیتون ثبت بشه توی این دیتابیس و سایت مونگو دی بی.
9. دکمه finish and close توی پایین صفحه هست. اونو بزنید.
10. یه پاپ آپ باز میشه. دکمه go to db رو بزنید.
11. حالا یه صفحه باز میشه و میگه که دیتابیس در حال ساخته شدن و اطلاعات در حال ثبت هست. صبر کنید. ممکنه تا 3 دقیقه هم طول بکشه.
12. وقتی ساخته شد، با این عکس مواجه میشید. روی connect بزنید تا برید.
13. گزینه دوم یعنی connect your application
14. آدرسی به شما میده. اون آدرس دیتابیستون هست. وصل شید و لذت ببرید.
15. توی آدرس اگر نگاه کنید، یه
بعد از ایمپورت یا وارد کردن دستی اطلاعات به دیتابیس( مثلا اطلاعات محصولات)، امکان ویرایش و حذف هر کدوم از این اطلاعات رو هم دارید.
نکته ای در مورد mongodb atlas
لطفا فقط وبسایت های تست و نمونه کار رو روی این دیتابیس های رایگان امتحان کنید یا بسازید؛ به هیچ وجه وب سایت واقعی رو توی دیتابیس های عمومی تست نکنید و سایت رو، برمبنای اینها، نسازید. چون خیلی از این وبسایت های خدمات رایگان، اطلاعات کاربران خودشون رو توی دارک وب، میفروشند. علاوه بر این، تحریم هم که هستیم. اینام صبح پا میشن، یه چی دیگه رو تحریم میکنن. یهو دیدید کلا سایتتون به فنا رفته. خلاصه حواستون باشه 🙂...
نصب mongodb روی دسکتاپ
اگر بخواید مانگو دی بی رو روی دسکتاپ نصبش کنید، توی سایت اصلی این دیتابیس، لینک دانلود هست و با توجه به سیستم عاملتون، میتونید دانلود و نصب بکنید. البته یه چیزی هم نیاز هست که بگم که قبلا برای مدیریت دیتابیس و کلا داده های مونگو، باید از cmd استفاده میشد ولی الان وقتی میخواید که خود اپ مانگو رو روی سیستمتون نصب کنید، خودش یه اپ دیگه به نام compass رو هم براتون نصب میکنه.
Mongodb compass چیست؟
این کامپس، در واقع یه اپ کنترل کننده واسه همون دیتابیس هست. شما آدرس دیتابیس( چه آنلاین، چه دیتابیس لوکال) رو بهش میدید و وارد محیط مدیریت دیتابیس میشید. محیط مدیریتی کامپس و محیط مدیریتی موجود در وب سایت خود مانگو دی بی، کاملا شبیه هم هستند.
منظور از مدیریت دیتابیس، این هست که مثلا شما میخوای یه محصول رو دستی حذف کنی، یا یه اطلاعاتی رو توش به صورت دستی تغییر بدی یا مثلا میخوای لیست کاربرانی که از فلان تاریخ به بعد توی سایت، ثبتنام کردن رو پیدا کنی( به این عمل میگیم کوئری زدن که یه مقدار کامل تر توی مقاله nodejs چیست توضیحش دادم). اینا مجموعا میشه مدیریت دیتابیس.
البته اپ های دیگه ای هم برای مدیریت دیتابیس هست، برخی بر مبنای کدنویسی مدیریت داده ها رو براتون فراهم میکنند مثل robo3t و برخی هم مثل همین کامپس، برمبنای ui، اگر بخواید بر مبنای کدنویسی، پایگاه داده رو مدیریت بکنید، دستوراتش توی داکیومنت های خود سایت مونگو هست ولی به نظرم الکی به خودتون سختی ندید.
ما طراح ها، عموما از طریق داشبورد مدیر سایت توی فرانت، با بک اند و از طریق بک اند، با دیتابیس ارتباط میگیریم. توی بک اند، اصلا این دستور های مخصوص robo3t، به کار نمیان. مثلا نیازه که یه پست به سایت اضافه کنیم. کد بک اند رو طوری میزنیم که هر وقت یه پست اضافه شد، توی دستهبندی های سایت هم، اون پست اضافه بشه به دسته خاص خودش.
ولی اگه بخوایم دستی از طریق این دستورات یا خود کامپس، پست رو اضافه کنیم، نیازه کار بیشتری انجام بدیم. علاوه بر اون، فرض کنید که یه پست نیست. 100 تا پست هست. بیچاره میشیم. 😬
اگه بخوایم از راه درستش یعنی بک اند، کار رو پیش ببریم، دستور های زیر رو داریم :
Post - update - delete - updateMany - DeleteMany - updateOne - DeleteOne
حالا اگه یه جا یه اطلاعات خاصی رو بخوایم و نشه با داشبورد و بک اند، اوکیش کرد، میریم با کامپس یه لحظه تغییرش میدیم و تمام. پس الکی سراغ db.dropDatabase() و کلی دستور دیگه مخصوص دیتابیس نرید؛ مگر اینکه نیاز واجب داشته باشید.
ساختار mongodb
اگر با وردپرس کار کرده باشید، قطعا دیدید که این سیستم مدیریت محتوا، از mysql به عنوان دیتابیس استفاده میکنه.وقتی از طریق هاست، ساختار اطلاعات موجود در این دیتابیس رو نگاه کنید، این داده ها به صورت جدول جدول، مرتب شدن. مثلا جدول پست ها، جدول یوزر ها و.... اگه مثلا روی جدول پست ها کلیک کنید، به صورت جدول، لیست همه پست ها همراه با اطلاعاتشون رو نمایش میده.
اما mongo db این طور نیست. در جاوااسکریپت، یک نوع داده ای داریم به اسم آبجکت که الگوش key و value هست. توی مانگو ما میایم و به جای جدول، چیزی تعریف میکنیم به اسم کالکشن مثلا کالکشن پست ها، کالکشن یوزرها و.... بعد داخل هر کدوم از این کالکشن ها، به جای جدول، آبجکت تعریف میکنیم. مثلا آبجکت پست 1، آبجکت پست 2 و... . توی دیتابیس مونگو، به این آبجکت ها، میگیم داکیومنت یا سند. چندان هم اسمش مهم نیست. اسمه دیگه.
مزیت های mongo db
آبجکت محور بودن مونگو دی بی
مزیت اصلیای که کار کردن با آبجکت به شما میده، اینه که توی بخش مقدار( value) میتونید هر چیزی بزارید ولی توی جدول آزادی عمل شما کمتره.
آبجکت یا جیسون؟ مسئله این است...
در مورد این که میگم آبجکت، میشه گفت که داکیومنت هایی که شما میسازید،فرمتشون json هست. اگر به داخل یه فایل json نگاه کرده باشید، این فرمت فایل، توش یه آرایه هست که توی این آرایه کلی آبجکت هست یعنی به عبارت دیگه، کالکشن پست های شما میشه یه آرایه و هر کدوم از پست ها میشن یه آبجکت( داکیومنت). یعنی میگیم کالکشنی از داکیومنت ها یا آرایه ای از آبجکت ها مثلا سایت json place holder .
پوشش بیگ دیتاها
یکی دیگه از مزیت هایی که این دیتابیس داره و البته چندان به درد ما طراح های وب اپ نمیخوره، اینه که امکان استفاده از این دیتابیس توی بیگ دیتاها وجود داره. بیشتر هم نیاز نیس توضیح بدم.😉
پوشش فریمورک های جاوااسکریپت
یه کار ویژه ای که این دیتابیس کرده، اینه که شما وقتی زیبایی کار کردن با فریمورک های جاوااسکریپی مثلا react و vue و angular رو بخواید، باید توی جاوااسکریپت، خبره بشید؛ بعد از خوب یاد گرفتن اینا، برای بک اند دیگه نیاز نیست که برید و php یاد بگیرید، بلکه به کمک همون جاوااسکریپت، میتونید توی node js بک اندتون رو بزنید و دیتابیس مورد علاقه بک اندکارهای جاوااسکریپتکار هم، همین مانگو هست نه sql.
یک نکته هم که به نظرم میرسه، اینه که دیتابیس mysql به خاطر استفاده بسیار زیادی که داره( به ویژه به خاطر رایج بودن وردپرس)، باعث شده که به دیتابیس های دیگه، میگن nosql که بنده از همین تریبون اعلام میکنم که نگید آقا، خانم. چه وضعشه. این بنده خدا خودش اسم داره. 😎
اطلاعات کلی در مورد mongo db
این پایگاه داده 2007 ساخته شده، کسی بهش نگاه هم نمیکرد تا اینکه یه سری چیزاش رو بهبود داد و توی بیگ دیتا ازش استفاده شد. استفاده میشد ولی باز نه اونقدرا زیاد. با روی کار اومدن فریمورک های جاوااسکریپت، دیدن که چه جالب، میشه از نود جی اس و این دیتابیس برای بک اند استفاده کرد و خیلی اینا با هم مچ هستن. خلاصه کلی رونق گرفت.