مانگو دی بی (MongoDB) چیست؟
مانگو دی بی یک دیتابیس یا پایگاه داده NoSQL مبتنی بر سند یا داکیومنت است که برای ذخیره سازی اطلاعات در حجم بالا استفاده میشود.
این سرویس به جای استفاده از جداول و ردیفهای دیتابیسهای سنتی، از مجموعهها و اسناد استفاده میکند. این سرویس از جفت دادههای key-value یا با ارزش کلیدی استفاده میکند که به عنوان واحد اصلی دیتا در MongoDB تعریف میشوند. این مجموعهها شامل گروهی از اسناد و توابع هستند که جداول دیتابیس مرتبط در این سرویس را تعریف میکنند. سرویس مانگو دبی بی برای اولین بار در اواسط دهه ۲۰۰۰ به بازار ارائه شد.
ویژگیهای مانگو دی بی
- هر دیتابیس در این سرویس شامل مجموعههایی از اسناد است که اسناد دیگری را در دل خود جا دادهاند. هر سند در این مجموعه میتواند در زمینههای مختلف و متفاوتی دسته بندی شوند. اندازه و محتوای هر سند در این سرویس میتواند با دیگری متفاوت باشد.
- ساختار اسناد درون این سرویس با نحوه ساخت کلاسها و اشیایی که توسط توسعهدهندگان در زبانهای برنامه نویسی مختلف نوشته شده است مطابقت دارد. فعالان حوزه توسعه وب اکثرا میگویند که کلاسهای نوشته شده توسط آنها به صورت سطر و ستون نیستند، بلکه ساختار واضحی از جفتهای key-value هستند.
- ردیفها یا اسنادی که در مانگو دی بی تعریف میشوند، نیازی به یک طرح مشخص از پیش تعیین شده ندارند.
- مدل داده موجود در MongoDB به کاربر اجازه میدهد تا روابط سلسله مراتبی، آرایهها و ساختارهای پیچیده را سادهتر نمایش دهند.
- مقیاس پذیری – محیط سرویس مانگو دی بی بسیار مقیاسپذیر است. شرکتهای مختلف در سراسر دنیا کلاسترهای خود را با داشتن بیش از صد نود یا گره به همراه اسناد درون آن، در دیتابیسهای مانگو دی بی قرار دادهاند.
مثالی برای مانگو دی بی
در ادامه مثالی برای نحوه مدل کردن اسناد و اطلاعات مختلف در MongoDB آوردهایم. در این مثال در قسمت اول توضیحاتی درباره این کدها میدهیم سپس نمونهای از کد را برای شما نوشتهایم.
- قسمت _id منحصرا برای مشخص کردن اسناد در مجموعه آورده شده است.
- آنچه میتوانید به آن توجه داشته باشید این است که سفارش دادهها (شناسه آن، خود محصول و مقدار آن) در RDBMS معمولا در جداول جداگانهای ذخیره میشوند، در حالی که در مانگو دی بی به عنوان یک سند جداسازی شده در خود مجموعه ذخیره میشود. این مسئله تفاوت اصلی نحوه مدل کردن دادهها در مانگو دی بی است. نمونهای از مدل کردن دادهها در این سرویس را در پایین مشاهده میکنید.
{
_id : <ObjectId> ,
CustomerName : Guru99 ,
Order:
{
OrderID : 111
Product : ProductA
Quantity : 5
}
}
اجزای کلیدی معماری MongoDB
در ادامه تعدادی از اجزای کلیدی مورد استفاده در مانگو دی بی را بررسی کردهایم.
1. _ID
این فیلدی است که وجود آن برای هر فایل داکیومنتی در مانگو مورد نیاز است. فیلد _ID یک مقدار و ارزش مشخص در این سرویس را نمایش میدهد. به عبارتی این فیلد به عنوان کلید اصلی فایل داکیومنت شما شناخته میشود. اگر شما یک فایل داکیومنت جدید در مانگو دی بی را بدون فیلد _ID ایجاد کنید، خود این سرویس به طور خودکار این فیلد را ایجاد میکند.
2. Collection
این دستور برای جمع و گروه کردن اسناد مانگو دی بی استفاده میشود. هر مجموعه یا کالکشنی که ایجاد میشود، معادل جدول در هر RDMS دیگری مانند Oracle یا MS SQL است. یک مجموعه در یک دیتابیس مشخص وجود دارد.از طرفی استفاده از هیچ ساختار مشخصی نیز در مجموعهها اجباری نیست.
3. Cursor
این مورد را میتوان به عنوان یک اشارهگر به نتیجه مربوط به یک مجموعه کوئری معرفی کرد. کاربران با استفاده از Cursor میتوانند برای دوباره نشان دادن نتایج اقدام کنند.
4. Database
این مورد مانند RDMS که محفظهای برای جداول است، به عنوان کانتینر یا محفظهای برای مجموعه یا Collectionها است. در مانگو، هر دیتابیس مجموعهای از فایلهای مربوط به خود در سیستم را دریافت میکند. یک سرور مانگو میتواند چندین پایگاه داده یا دیتابیس مختلف را در خود ذخیره کند.
5. Document
یک رکورد یا دیتای ذخیره شده در یک کالکشن در مانگو دی بی، سند یا Document نامیده میشود. هر سند، به واسطه نام فیلد و ارزشهای درون آن تعریف میشود.
6. Field
فیلد به عنوان یک جفت تعریف کننده برای نام و مقدار یک داکیومنت تعریف میشود. یک داکیومنت میتواند تعداد صفر یا بیشتری فیلد مختلف داشته باشد. فیلدها مشابه ستونها در پایگاه داده رابطهای یا relational databases هستند. در نمونهای که در بخش بالاتر نوشتهایم، CustomerID، CustomerName و OrderID نمونهای از فیلدهای مختلف هستند.
چرا از مانگو دی بی استفاده کنیم؟
در ادامه دلایلی را برای استفاده از این سرویس مطرح کردهایم.
- از آنجایی که MongoDB یک دیتابیس NoSQL است، به جای استفاده از دادهها به صورت رابطهای، آنها را در قالب اسناد ذخیره میکند. این موضوع این سرویس را برای بسیاری از شرکتها به سرویسی منعطف تبدیل میکند.
- از دیگر دلایل استفاده از این سرویس وجود کوئریهای موقت در آن است. این سرویس از جستجو بر اساس فیلد، محدوده کوئریها و جستجوی عبارات منظم پشتیبانی میکند.
- قابلیت ایندکس کردن یا نمایه سازی در مانگو از دیگر دلایل استفاده از آن است. شما هر فیلدی در این سرویس را میتوانید ایندکس کنید و برای بهبود عملکرد جستجو از آنها استفاده کنید.
- سرویس مانگو دی بی دسترسی بالایی به مجموعههای رپلیکا دارد. هر مجموعه رپلیکا از دو یا چند نمونه MongoDB تشکیل میشود. هر عضو این مجموعه ممکن است در هر لحظه نقش نمونه اولیه یا ثانویه رپلیکا را ایفا کند.
- MongoDB از مفهوم اشتراک گذاری برای مقیاس افقی با تقسیم دادهها در چند نمونه از مانگو دی بی استفاده میکند. مانگو میتواند روی چندین سرور مختلف اجرا شود و بارگذاری دادهها را متعادل کند تا در صورت خرابی یا ایجاد مشکل در سختافزار، سیستم را فعال نگه دارد.
کلام آخر
در این مقاله سرویس مانگو دی بی را معرفی کردیم. همانطور که خواندیم، این سرویس یکی از بهترین گزینهها برای ذخیره اطلاعات به صورت NoSQL است و کاربری بسیار بالایی نیز دارد. استفاده از این سرویس به شما کمک خواهد کرد تا بتوانید با سرعت و کیفیت قابل توجهی به ذخیره اطلاعات خود بپردازید. از طرفی نقاط مثبت و دلایل استفاده از این سرویس را نیز معرفی کردیم. امیدواریم از خواندن این مقاله نهایت استفاده را برده باشید.