به دوره‌ی کامل و جدید آموزش MongoDB خوش آمدید!

!Welcome to the Complete and New MongoDB Training Course

MongoDB: به دوره ی آموزشی جدید و کامل MongoDB خوش آمده اید! (قسمت 01)

با سلام و خسته نباشید خدمت شما همراهان گرامی روکسو. به دوره جامع آموزشی MongoDB خوش آمدید. ما در این دوره آموزشی به انواع مباحث مختلف در مورد پایگاه داده MongoDB می پردازیم. این مباحث شامل تفاوت آن با MySQL، نحوه انجام عملیات CRUD، برقراری ارتباط بین داده ها در MongoDB و بسیاری از مباحث دیگر است. در طول این دوره پروژه های مختلفی را نیز خواهیم نوشت بنابراین جدا از مباحث تئوری به صورت عملی نیز با آن کار خواهیم کرد. به جرات می توان گفت این دوره یکی از کامل ترین دوره های MongoDB در فضای وب است. بنابراین بهتر است بدون مقدمه وارد این دوره شویم.

سوال اولی که برای همه پیش می آید این است که MongoDB چیست؟ MongoDB نام کمپانی است که پایگاه داده MongoDB را طراحی کرده است. بنابراین نام پایگاه داده و نام کمپانیِ توسعه دهنده آن یکی است. هدف MongoDB از طراحی چنین پایگاه داده ای، ذخیره داده های بسیار حجیم (تعداد) بوده است. در ادامه دوره در مورد این خاصیت MongoDB بیشتر صحبت خواهیم کرد. قبل از این دوره در دوره «پایتون و MongoDB» در سایت روکسو به صورت خلاصه به برخی از قابلیت های MongoDB اشاره کرده بودیم اما در این دوره به صورت اختصاصی و مفصل به سراغ آن خواهیم رفت و خبری از پایتون نیست.

دنیای MongoDB مانند دنیای MySQL دارای دیتابیس های مختلفی است. در دنیای MySQL درون این database ها، جدول (table) هایی را داریم اما در دنیای MongoDB به آن ها کالکشن (collection به معنی مجموعه) می گوییم. بنابراین می توانیم چندین و چند دیتابیس داشته باشیم که درون هر کدام چندین و چند کالکشن وجود دارد. سپس درون هر کالکشن چندین و چند document خواهیم داشت. اگر document ها را دیده باشید می دانید که آن ها در اصل اشیا جاوا اسکریپتی هستند. به عبارت دیگر نحوه ذخیره داده در پایگاه داده MongoDB به همین شکل است (اشیاء JSON). به شیء JSON زیر نگاه کنید:

{
    "name": "Amir",
    "age": 24,
    "skills": {
        "backend": "PHP",
        "frontend": "JavaScript"
    }
}

به کل کد بالا یک document می گوییم. همچنین name: Amir یک key (کلید) یا field (فیلد) است که در آن name اسمِ فیلد (field name) و Amir مقدارِ آن فیلد (field value) می باشد.

در قسمت skills شاهد ذخیره شدن یک شیء جاوا اسکریپتی به عنوان مقدار هستیم! یعنی در دنیای MongoDB می توانیم مقادیر را به صورت تو در تو (nested) ذخیره کنیم. این مسئله یک مزیت بزرگ نسبت به MySQL محسوب می شود به دلیل اینکه در MySQL برای دریافت چند داده مختلف مجبور به استفاده از دستورات پیچیده JOIN هستیم تا داده ها را از چندین جدول مختلف پیدا کنیم اما در MongoDB می توانیم به راحتی تمام موارد مربوط یک داده خاص را در یک شیء جاوا اسکریپتی ذخیره کرده و آن شیء را به طور یکجا دریافت کنیم. البته document بالا تمام حالت های ممکن را نشان نمی دهد؛ ما می توانیم به عنوان مقدار یکی از این key ها،  یک آرایه داشته باشیم که اعضای آن همگی اشیا مختلف جاوا اسکریپتی باشند. بنابراین آزادی کاملی در اداره پایگاه داده خود دارید.

ممکن است شنیده باشید که داده ها در MongoDB به صورت BSON ذخیره می شوند. کلمه BSON از JSON  و binary گرفته شده است. از آنجایی که MongoDB داده های شما را در پشت صحنه تبدیل به داده های باینری (دودویی) می کند، به جای JSON از کلمه BSON استفاده کرده است تا این موضوع را به شما نشان دهد. البته این اتفاقی است که در پس زمینه می افتد و به ما مربوط نمی شود. دلیل تبدیل داده ها به باینری هم بالا بردن سرعت کار با داده هاست (کار با داده ها در حالت باینری بسیار سریع تر است).

نکته جالب دیگری در مورد پایگاه داده MongoDB وجود دارد که آن را از پایگاه داده MySQL متفاوت می کند. پایگاه های داده MongoDB همگی schemaless هستند یعنی ساختار داده ها از قبل در آن ها مشخص نیست. به طور مثال در یک کالکشن واحد، می توانیم چندین و چند نوع داده مختلف با ساختارهای مختلف داشته باشیم اما در MySQL اینطور نیست. اگر قبلاً با پایگاه داده MySQL کار کرده باشید می دانید که ساختار داده های درون جدول در همان ابتدا مشخص می شوند و تغییر دادن ساختار جدول پس از گذشت زمانی مشخص، کار واقعاً سختی است. مزیتِ نداشتن ساختاری از قبل تعریف شده این است که پایگاه داده شما به همراه برنامه رشد می کند و از نظر مقیاس پذیری هیچ مشکلی نخواهید داشت.

به طور کل فلسفه MongoDB و MySQL دقیقا بر خلاف یکدیگر است. به طور مثال در MongoDB روابط بین داده ها یا relations بسیار کمتر از MySQL است، حتی می توانید هیچ ارتباطی بین داده های خود نداشته باشید.  البته ذخیره داده ها بدون ساختار قبلی باعث بی نظمی پایگاه داده شما می شود بنابراین منظور ما از نداشتن ساختارِ قبلی، به هم ریختگی داده ها نیست بلکه منظور آزادی شما به عنوان توسعه دهنده در حین توسعه برنامه است. وظیفه شماست که در نهایتِ کار، ساختاری نسبی را برای برنامه خود در نظر بگیرید تا داده ها را  بر اساس آن ساختار ذخیره کنید (هر برنامه ای نیاز به نظم دارد تا بتواند به شکل بهینه کار کند). تصور کنید که وب سایتی را به مدت یک سال راه اندازی کرده اید. اگر بخواهید داده های کاربران را به شکل دیگری ذخیره کنید و از MySQL استفاده می کنید، مشکلات فراوانی خواهید داشت چرا که ساختار این داده ها از قبل مشخص شده است. مثلا هر کاربر باید نام، ایمیل و تصویر پروفایل داشته باشد. حالا فرضا می خواهید شماره تلفن را هم به این لیست اضافه کنید و ایمیل را از آن حذف کنید. در پایگاه داده MongoDB این کار آنچنان سخت نیست اما در MySQL باید به پایگاه داده بروید و جدول ها را به صورت دستی به هم بریزید.

حالا که آشنایی اولیه ای با MongoDB پیدا کرده اید، بهتر است به سراغ نصب MongoDB برویم.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری دوره جامع آموزش MongoDB توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مقالات مرتبط
آخرین سوالات کاربران
5451218 در 4 سال قبل پرسیده:
ما را دنبال کنید
اینستاگرام روکسو تلگرام روکسو ایمیل و خبرنامه روکسو