MongoDB محبوبترین دیتابیس NoSQL بوده که براساس مدل Document Oriented (سند گرا) کار میکند. منظور از دیتابیسهای NoSQL دیتابیسهایی است که غیر رابطهای بوده و براساس مدلهای قدیمی دیتابیس عمل نمیکنند. از این جهت فرایند ذخیره سازی نسبتا متفاوتی را پیش میگیرد و دادهها در شکل متفاوتی ذخیره میشوند. قالب ذخیرهسازی دادهها در MongoDB را BSON مینامند که شباهت نسبی با JSON دارد.
یک مثال از ساختار کلی MongoDB را میتوانید در زیر مشاهده کنید:
{
title: 'roocket',
by: 'Arastoo Abasi',
url: 'https://www.roocket.ir',
type: 'NoSQL'
}
در این مقاله اختصاصی از وبسایت راکت قصد داریم در ارتباط با چیستی MongoDB، تفاوت آن با دیتابیسهای رابطهای و موارد استفاده از آن صحبت کنیم.
MongoDB چیست؟
مونگو دی بی دیتابیس NoSQL است که در سال ۲۰۰۹ به عنوان یک محصول مستقل توسط تیم 10gen توسعه پیدا کرد. مونگو دی بی براساس مجوز GPL منتشر شده و از این رو در دنیای نرمافزار متن باز بعنوان یکی از ابزارهای قدرتمند شناخته میشود.
در واقع مونگو دی بی اصلیترین ابزاری بود که توسعهدهندگان را با دیتابیسهای NoSQL آشنا کرد و بیشترین تجربه اولیه با NoSQL را به خود اختصاص داده است. در بخشهایی از توسعه نرمافزارها نیز مونگو دی بی به عنوان انتخاب اول در نظر گرفته میشود. برای مثال زمانی که مشغول توسعه اپلیکیشن با استفاده از نودجیاس هستید مونگو دی بی انتخاب پیشفرض توسعهدهندگان خواهد بود.
از زمانی که بحثهای مربوط به اپلیکیشنهای بلادرنگ، Big Data و موضوعاتی از این دست اهمیت بالایی پیدا کردند، استفاده از دیتابیسهای غیر رابطهای نیز افزایش پیدا کرد. یکی از اصلیترین دلایل این موضوع بالا بودن قابلیت مقایسپذیری و ایستا نبودن آنها بود. در رابطه با این ویژگی به صورت کامل صحبت خواهیم کرد.
ویژگیهای MongoDB چیست؟
مقیاسپذیری
زمانی که شما یک اپلیکیشن را توسعه میدهید شانس اینکه در آینده نیازمند به ایجاد تغییرات گسترده در بانک اطلاعاتی خود باشید بسیار زیاد است. دیتابیسهای رابطهای مانند MySQL در برابر چنین تغییرات گستردهای بسیار به سختی انعطاف نشان داده و اعمال این تغییرات روی آنها تقریبا غیر ممکن است. اما خاصیت اصلی مونگو دی بی دقیقا از این قسمت شروع میشود. با استفاده از مونگو دی بی شما قابلیت آن را خواهید داشت که کل سیستم دیتابیس خودتان را در چشم بر هم زدنی بروزرسانی کنید و تغییرات گستردهای را در آن اعمال نمایید.
در ساخت اپلیکیشنهای بزرگ این مسئله بسیار اهمیت خواهد داشت چرا که ممکن است دیتابیستان نیازمند تغییرات گسترده بوده و هر زمان ساختار دادهای جدیدی را تقاضا کنید.
سند گرا بودن
در MongoDB همه چیز به صورت مجموعهای از اسناد مختلف ذخیره خواهد شد. در دیتابیسهای رابطهای این موضوع با جداول مختلف انجام میشود. در MongoDB دادهها در مجموعهای از کلید-مقدار ذخیره شده و دیگر خبری از سطر و ستون نخواهد بود. این موضوع در نهایت باعث میشود که میزان انعطافپذیری دیتابیس افزایش پیدا کرده و هر شکلی از داده در محدوده مستقل خود ذخیره شود.
ایندکسینگ
در مونگو دی بی هر فیلد در اسناد حاوی یک شاخص اولیه و اصلی است که در نتیجه منجر به پیدا شدن به سرعت میشود. اگر این مشخصه را از فیلدها بگیریم، فرایند جستجو و پیدا کردن اطلاعات مورد نیاز زمانبر خواهد شد و در نتیجه سرعت کوئری گرفتن به صورت قابل توجهی کاهش پیدا میکند.
تکرار پذیری و دسترسی پذیری بالا
مونگو دی بی روشی مناسب برای حداکثر دسترسی پذیری ارائه داده و آن اشتراک پذیری دیتابیس در بین چندین سرور مختلف است. در این حالت هر بار که تغییری در دیتابیس ایجاد شود، مونگو دی بی میتواند تغییرات را روی نسخههای مختلف خود در سرورهای متفاوت اعمال کرده و در نتیجه زمانی که با مشکلی مانند در دسترس نبودن یک سرور روبرو شوید تمام دادهها از طریق یک سرور دیگر در دسترس خواهد بود.
تفاوتهای RDBMS و MongoDB
در ادامه مقاله بیایید به صورت کلی از تفاوتهای اصلی میان مونگو دی بی و دیتابیسهای رابطهای صحبت کنیم.
- دیتابیسهای رابطهای طراحی Schema منحصر به فردی داشته و از مجموعهای جداول با رابطهای تعریف شده ایجاد میشوند اما مونگو دی بی یک دیتابیس سند گرا و NoSQL است که در آن خبری از رابطه و Schema نیست.
- تعاملات یا Transactionهای پیچیده در MongoDB موجود نبوده و دلیل اصلی این موضوع نیز نبود قابلیت join در آن است.
- MongoDB ساختار سندگرا بسیار منعطف و مقیاسپذیر دارد. برای مثال یک سند میتواند شامل دو فیلد باشد در حالی که اسناد دیگر میتوانند ساختار متفاوتی داشته و فیلدهای متفاوتی داشته باشند.
- از آنجایی که ساختار Indexing در مونگو دی بی به خوبی رعایت میشود، در زمان بازیابی اطلاعات، سرعت عمل بسیار بیشتری نسبت به دیتابیسهای رابطهای دارد.
تفاوتهای بسیار بیشتری را میتوان در ارتباط با این دسته از دیتابیسها قائل شد اما این موارد جزو کلیدیترین تفاوتها است.
چه زمانی از MongoDB استفاده میشود؟
در زمینه توسعه اپلیکیشنهای زیر همواره دیتابیسهای غیر رابطهای و علل خصوص MongoDB به دیتابیسهای رابطهای ترجیح داده شده و خروجی بهتری تولید میکنند.
- Big Data: اگر با حجم عظیمی از داده روبرو هستید و میخواهید این موارد را به خوبی مدیریت کنید بهتر است بجای استفاده از دیتابیسهای رابطهای از MongoDB استفاده کنید. در این دسته از اپلیکیشنها ناسازگاری بین فیلدهای مختلف بسیار زیاد بوده و در نتیجه دیتابیسهای رابطهای با این ناسازگاریها نمیتوانند به خوبی انعطاف از خود نشان دهند. مونگو دی بی راهکارهای بسیار زیادی برای مدیریت این حالت را در خود داشته و در نتیجه میتواند کاربردیتر عمل کند.
- Real Time Application: اپلیکیشنهای بلادرنگ مانند اپلیکیشنهای گفتگو همواره دادهها را از کاربر دریافت کرده و از این رو نمیتوانند قول سازگاری بالایی را بدهند. از طرفی دیگر تنوع دادههایی که در این اپلیکیشنها ارسال میشوند بسیار زیاد بوده و دیتابیسهای رابطهای نمیتوانند به خوبی پاسخگوی این حالت باشند. به همین دلیل پیشنهاد میشود که در صورت برخورد با این دسته از اپلیکیشنها از دیتابیسهای غیر رابطهای استفاده شود.
- Unstable Schema: زمانی که شما از ساختار اصلی دیتابیس آگاهی ندارید و نمیدانید که آیا صد در صد چیزی که میخواهید چیست استفاده از دیتابیسهای رابطهای میتواند دردسرآفرین باشد چرا که این دسته از دیتابیسها با تغییرات به سختی برخورد کرده و در نتیجه مشکلات عدیدی را ایجاد میکنند. اما دیتابیس NoSQL میتواند خود را با هر تغییری سازگار نشان دهد.
- Distributed Data: زمانی که امر توزیعپذیری برایتان از اهمیت بالایی برخوردار است در نتیجه نیازمند ایجاد حالتی برای توزیعپذیری دیتابیس در بین سرورهای مختلف را خواهید داشت. پیادهسازی چنین حالتی در دیتابیس رابطهای دردسرساز بوده و در نتیجه بهتر است سراغ MongoDB بروید.
در پایان
مونگو دی بی به نسبت دیتابیسهای رابطهای تکنولوژی بسیار جدیدی محسوب شده و در نتیجه برای توسعه اپلیکیشنهای جدید باید حتما نیم نگاهی به آنها نیز داشته باشید. در این شرایط شما ابتدا کار نیاز دارید که به خوبی با این دیتابیسها آشنایی داشته باشید. برای این امر میتوانید از دوره آموزشی «آموزش MongoDB» استفاده کنید.
دیدگاه و پرسش
برای ارسال دیدگاه لازم است وارد شده یا ثبتنام کنید
ورود یا ثبتنامدر حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید