مانگو دی بی چیست؟ + مقایسه با دیتابیسهای مشابه
در جهان امروز، روزبهروز به حجم دادههای سراسر دنیا افزاده میشود و در پی این اتفاق، دیتابیسهای NoSQL از جمله مانگو دی بی بیش از پیش مورد توجه قرار گرفتهاند. اما MongoDB چیست، معماری آن چگونه است و به چه کار میآید؟ در ادامه این مقاله از بلاگ ابر زس به این سوالات پاسخ میدهیم.
MongoDB چیست؟
قبل از آن که بخواهیم جزئیات بیشتری را درباره مانگو دی بی بررسی کنیم، باید ببینیم که MongoDB چیست و چه کاری انجام میدهد. بهطورکلی، MongoDB یک برنامه مدیریت دیتابیس منبعباز و NoSQL است. از NoSQL بهعنوان جایگزین دیتابیسهای سنتی رابطهای (Relational) استفاده میشود و این نوع دیتابیس، برای کار در مجموعههای بزرگی از دادههای توزیع شده، بسیار مناسب است. از MongoDB به عنوان یک دیتابیس NoSQL، برای مدیریت اطلاعات مبتنی بر سند و جهت ذخیره و بازیابی اطلاعات استفاده میشود.
بیشترین کاربرد مانگو دی بی برای ذخیره دادهها در حجم بالا است و این روند به سازمانها کمک میکند تا حجم بالایی از دادهها را با سرعت بالا ذخیره کنند. همچنین میتوان از این پایگاه داده، برای کوئریهای موقت، ایندکس کردن، تعادل بار، اجرای جاوا اسکریپت سمت سرور و … استفاده کرد.
معماری Mongodb بهعنوان یک دیتابیس NoSQL از مجموعهها (Collections) و اسناد (Documents) تشکیل شده؛ درحالیکه دیتابیسهای رابطهای از جداول و ردیفها استفاده میکنند. اسناد در این برنامه از جفتهای کلید-مقدار (key-value) تشکیل شدهاند. مجموعهها معادل جداول در SQL و شامل مجموعههای اسناد هستند. از جمله مزایای این ابزار آن است که از زبانهای برنامهنویسی مختلف مانند C++ ،C ،Ruby ،Python ،Java ،Go ،Swift و C# پشتیبانی میکند.
تاریخچه مانگو دی بی
در سال ۲۰۰۷، «دوایت مریمن» و «الیوت هوروویتز» که در شرکت «DoubleClick» مشغول بودند، با مشکل توسعه و مقیاسپذیری در دیتابیسهای رابطهای سنتی برای ایجاد وباپلیکیشنها مواجه شدند. در آن سالها، «DoubleClick» یک شرکت تبلیغات آنلاین بود که بعدها به تصاحب گوگل در آمد. مریمن و هوروویتز در همان سال، دیتابیس مانگو دی بی را ایجاد کردند و با کمک شرکت «10gen Software» موفق به تجاریسازی مانگو دی بی و سایر نرمافزارهای وابسته به آن شدند. بعدها در سال ۲۰۱۳ نام «10gen Software» به «MongoDB Inc» تغییر کرد. از آن زمان تاکنون MongoDB بهعنوان یک ابزار کاربردی مدیریت دیتابیس استفاده شده و به دلیل ویژگیها و مزایای متنوعی که دارد، توانسته محبوبیت زیادی به دست آورد. در ادامه به شکل دقیقتر میبینیم که MongoDB چیست و با جزئیات آن آشنا میشویم.
بیشتر بخوانید: دیتابیس NoSQL چیست؟
نگاهی به معماری پایگاهداده MongoDB NoSQL
بیایید ببینیم ساختار معماری Mongodb چیست و از چه بخشهایی تشکیل شده است.
بررسی معماری مانگو دی بی کمک میکند تا بهتر با نحوه عملکرد آن آشنا شویم. معماری این برنامه شامل موارد زیر است.
- پایگاهداده (database)
دیتابیس یا پایگاهداده به عبارت ساده یک محفظه داده است. هر یک از دیتابیسها دارای مجموعه فایلهای خاص خود در سیستم فایل با پایگاههای اطلاعاتی متعددی روی سرور مانگو دی بی است.
- اسناد (ِDocument)
هر سند شامل مجموعهای از جفتهای کلید-مقدار (key-value) است. این اسناد با طرحوارههای (scheme) داینامیک همراه است که مزیت اصلی آن، عدم نیاز به داشتن ساختار یا فیلدهای یکسان یک سند در یک مجموعه واحد است. همچنین فیلدهای مشترک در یک سند مجموعه ممکن است شامل انواع مختلفی از دادهها باشند.
- مجموعه (Collection)
یک مجموعه شامل گروهی از اسناد دیتابیس بوده و معادل یک جدول (table) در RDBMS (سیستم مدیریت پایگاه داده رابطهای) است. کل یک مجموعه، در یک دیتابیس واحد وجود دارد. اسناد مختلف در یک مجموعه ممکن است موضوعات مختلفی داشته باشند، اما بیشتر آنها برای رسیدن به یک هدف واحد در نظر گرفته شدهاند.
نحوه عملکرد مانگو دی بی
حالا که میدانیم معماری مانگو دی بی شامل چه بخشهایی است، بهتر میتوانیم نحوه عملکرد آن را بررسی کنیم. در بررسی این که Mongodb چیست دیدیم که این برنامه یک ابزار سرور دیتابیس است که دادهها را در یک پایگاهداده ذخیره میکند. بهعبارتدیگر، MongoDB به شما نرمافزار سروری میدهد که بعد از راهاندازی میتوانید چندین دیتابیس روی آن ایجاد کنید. همانطور که میدانیم، این ابزار یک دیتابیس NoSQL است که دادهها را در مجموعهها و اسناد ذخیره میکند. ارتباط دیتابیس، مجموعهها و اسناد به شکل زیر خواهد بود.
در مانگو دی بی میتوانید چندین دیتابیس و مجموعه ایجاد کنید. هر دیتابیس شامل مجموعهها و هر مجموعه شامل اسناد است که دادههای مختلف را در خود ذخیره میکنند. لزومی ندارد که هر سند با اسناد دیگر مشابه بوده و میتواند انواع مختلفی از دادهها را در خود ذخیره کند. ایجاد اسناد توسط فیلدها انجام میشود. فیلدها جفتهای کلید-مقدار (key-value) هستند که مقدار یا value در آنها میتواند از هر نوع داده BSON مانند double ،string ،boolean و … باشد. دادههایی که در MongoDB ذخیره میشوند، قالب اسناد BSON دارند که فرمت باینری اسناد JSON است.
میتوانید اسناد در MongoDB را به شکل تودرتو (nested) ذخیره کنید. این روند امکان ایجاد ارتباط پیچیده بین دادهها را فراهم کرده و آنها را در یک سند ذخیره میکند که در نهایت، کار با دادهها را در مقایسه با SQL بسیار کارآمدتر میکند. این در حالی است که در دیتابیسهای SQL برای مرتبط کردن دادههای دو جدول به هم، باید از دستورات پیچیده استفاده کنید. همچنین باید اشاره کنیم که حداکثر اندازه اسناد BSON تا ۱۶ مگابایت است.
مهمترین ویژگیهای MongoDB
یکی از مهمترین مزایای برنامه مانگو دی بی داشتن ویژگیها و قابلیتهای متنوع و کاربردی است. برخی از مهمترین ویژگیها عبارتاند از:
دیتابیس Schema-less
یکی از جذابترین ویژگیهای ارائه شده در MongoDB قابلیت دیتابیس Schema-less است. با داشتن این قابلیت، یک مجموعه میتواند انواع مختلفی از اسناد را با تعداد فیلدها، محتوا و اندازههای متفاوت در خود ذخیره کند. این روند درست خلاف دیتابیسهای رابطهای است که اسناد باید به هم شباهت داشته باشند. این ویژگی انعطافپذیری بیشتری را برای دیتابیس فراهم میکند.
Document Oriented
تمام دادهها در MongoDB در اسناد (Document) و در فیلدهای جفتهای کلید-مقدار (key-value) ذخیره میشوند. این شیوه ذخیره نسبت به روش ذخیره در ردیفها و ستونها که در دیتابیسهای RDBMS استفاده میشود، انعطافپذیری بیشتری دارد. هر سند، یک شناسه Object ID منحصربهفرد دارد.
قابلیت ایندکس شدن (Indexing)
ایندکس شدن هر فیلد از اسناد با شاخصهای اولیه و ثانویه در دیتابیس مانگو دی بی باعث میشود تا جستجوی دادهها از مجموعهها سادهتر شده و زمان کمتری را به آن اختصاص دهید. چنانچه دادهها ایندکس نشود، باید هر سند را با کوئری مشخص آن جستجو کنید که به زمان بیشتری نیاز دارد و چندان بهینه نیست.
مقیاسپذیری
مقیاسپذیری افقی به کمک شاردینگ از دیگر ویژگیهای MongoDB است. شاردینگ (Sharding) به معنای توزیع دادهها روی چندین سرور است. روند انجام این کار به این صورت است که حجم بالایی از دادهها با استفاده از کلید shard به بخشهای کوچکتری تقسیم شده و بین شاردهای قرار گرفته در سرورهای فیزیکی توزیع میشوند.
قابلیت Replication
قابلیت Replication موجب افزایش دسترسیپذیری در MongoDB میشود. با ایجاد چندین نسخه از دادهها، کپیها به سرور دیگری ارسال میشود تا در صورت بروز مشکل در یک سرور، امکان بازیابی دادهها از سرورهای دیگر وجود داشته باشد.
ویژگی تجمیع یا Aggregation
امکان انجام عملیات روی دادههای گروهبندیشده و دریافت یک نتیجه یا نتیجه پردازش شده، از طریق قابلیت Aggregation فراهم میشود. این ویژگی مشابه GROUPBY در SQL است.
ارائه عملکرد در سطح بالا
دیتابیس MongoDB به دلیل ویژگیهایی از جمله مقیاسپذیری، ایندکس کردن، Replication و … در مقایسه با سایر دیتابیسها از عملکرد بالایی برخوردار است.
مزایا و معایب MongoDB
با بررسی مزایا و ویژگیهای مثبتی که درباره این ابزار وجود دارد، میتوانیم متوجه شویم که دلیل محبوبیت Mongodb چیست و چرا این برنامه بهعنوان یکی از بهترین دیتابیسهای NoSQL شناخته میشود. علاوه بر تمام مزایا و نقاط قوت، برخی معایب و ضعفهایی هم درباره MongoDB وجود دارد که میتوانیم بررسی کنیم.
مزایای مانگو دی بی
میتوانیم مزایای مانگو دی بی را در موارد زیر خلاصه کنیم.
- طراحی بهصورت یک دیتابیس NoSQL و Schema-less بدون نیاز به طراحی schema
- عدم ارائه عملکرد پیوستن یا join operation
- ارائه انعطافپذیری بالاتر برای فیلدهای موجود در اسناد
- امکان استفاده از دادههای ناهمگون
- ارائه عملکرد باکیفیت بالاتر، سطح بالایی از در دسترسبودن و مقیاسپذیری بیشتر
- طراحی بهصورت یک دیتابیس document oriented و ذخیره دادهها در اسناد BSON
- پشتیبانی از انتقال ACID اسناد چندگانه
- عدم نیاز به تزریق SQL
- امکان ادغام ساده با Big Data Hadoop (یک فریمورک اوپن سورس بر مبنای جاوا جهت مدیریت ذخیره و پردازش حجم بالایی از دادهها برای اپلیکیشنها)
معایب MongoDB چیست
حالا که میدانیم مزایای MongoDB چیست و چرا کاربردهای زیادی دارد، بیایید برخی از مهمترین نقاط ضعف آن را نیز بررسی کنیم.
- نیاز به حافظه بالا برای ذخیره اطلاعات
- محدودیت در حجم فایل اسناد (عدم امکان ذخیره اسناد بزرگتر از ۱۶ مگابایت)
- محدودیت در تودرتو (nested) شدن دادهها (محدودیت تا ۱۰۰ سطح)
- انعطافپذیری کمتر کوئری
- عدم پشتیبانی از تراکنش
با وجود تمام ویژگیهای مثبتی که درباره مانگو دی بیوجود دارد، میبینید که این دیتابیس با برخی معایب هم همراه است. حالا که میدانید معایب MongoDB چیست راحتتر میتوانیم برای استفاده از آن تصمیم بگیرید.
چرا به دیتابیس مانگو دی بی نیاز داریم؟
یکی از بزرگترین مشکلات سیستمهای دیتابیس سنتی، مقیاسپذیری بود که مانگو دی بی بهخوبی از عهده آن برآمده است. ازآنجاییکه کسبوکارها روزبهروز به سیستمهای دیتابیس نیاز بیشتری پیدا میکنند، این سیستمها نیز باید به شکل مداوم ارتقا پیدا کنند. اگر بخواهیم در یک عبارت ساده بررسی کنیم که دلیل برتر MongoDB چیست میتوانیم به مقیاسپذیری استثنایی آن اشاره کنیم. این برنامه، استخراج دادهها را ساده کرده و امکان یکپارچهسازی مداوم و خودکار را فراهم میکند. در کنار تمام این موارد، دلایل دیگری هم برای نیاز به استفاده از MongoDB وجود دارد. برخی از مهمترین دلایل، عبارتاند از:
- عدم از دسترس خارج شد اپلیکیشن، هنگام تغییر مقیاس
- ارائه پردازش در حافظه (in-memory)
- قابلیت جستجوی متن
- پردازش نمودار
- قابلیت replication
- مقرونبهصرفه
برخی از مهمترین دلایلی که موجب میشود کسبوکارها به این سیستم دیتابیس روی آورند را میتوان در موارد زیر خلاصه کرد:
- ترکیب مناسبی از فناوری و داده در مانگو دی بی فراهم شده که یک مزیت رقابتی قابلتوجه در آن ایجاد میکند.
- ازآنجاییکه ریسکهای امنیتی در این برنامه به میزان قابلتوجهی کاهش پیدا کرده، استفاده از MongoDB برای اپلیکیشنهای حیاتی و مهم، مناسب است.
- نسبت زمان به ارزش (TTV) را کاهش میدهد. TTV فاصله زمانی بین انجام خرید نهایی و دریافت محصول یا سرویس توسط مشتری و در نهایت رسیدن مشتری به ارزش تولید شده توسط محصول یا سرویس است. این زمان هرچه کوتاهتر باشد، برای کسبوکار بهتر است.
- با این دیتابیس میتوان اپلیکیشنهایی را ایجاد کرد که امکان ساخت آنها با دیتابیسهای رابطهای سنتی وجود ندارد.
کاربردهای MongoDB چیست؟
دیدیم که مزایا و دلایل استفاده از MongoDB چیست و چرا این برنامه تا این اندازه ترجیح داده میشود. بااینوجود، ممکن است برای شما سوال باشد که این دیتابیس چه کاربردهایی داشته و چه کسبوکارها یا سازمانهایی میتوانند از آن استفاده کنند. در ادامه برخی از مهمترین کاربردهای اساسی مانگو دی بی را بررسی میکنیم.
کاربرد Single view
ارائهدهندگان خدمات مالی، خدمات دولتی، فناوریهای پیشرفته و مشاغل خردهفروشی، از فناوری single view در روند کار خود استفاده میکنند. با استفاده از MongoDB میتوانید بهراحتی و با بودجه کمتر یک single view ایجاد کنید. یک برنامه single view با جمعآوری دادهها از منابع متعدد، آنها را در یک جا ذخیره کرده و یک نمای واحد از آن را ارائه میدهد. مدل documents در مانگو دی بی و ویژگیهای دیگری از جمله یک طرح پویا و زبان کوئری گویا، باعث میشود تا single viewها سادهتر شوند.
استفاده در اینترنت اشیا (IoT)
یکی دیگر از مهمترین کاربردهای MongoDB آن است که استفاده از فناوری اینترنت اشیا را ساده کرده و به افزایش سرعت روند استفاده از آن کمک میکند. مهمترین دلیل این مسئله آن است که انتقال داده با سرعت بالاتر را ممکن کرده و یک فرایند آنالیز بلادرنگ را ارائه میدهد. این ویژگی برای فناوری IoT بسیار مفید است. برخی از شناختهشدهترین شرکتهای دنیا در حوزه اینترنت اشیا، مانند «بوش» و «ترموفیشر» از مانگو دی بیاستفاده میکنند.
تجزیهوتحلیل در لحظه
با استفاده از MongoDB میتوانید هر داده را با سرعت بیشتر و در هر مکان که بخواهید، بهصورت بلادرنگ تجزیهوتحلیل کنید. این فناوری قادر است تا هر نوع دادهای را بدون توجه به ساختار، فرمت یا منبع آن و همچنین بدون در نظر گرفتن میزان تغییرات آن، ذخیره کند. طراحی فوقالعاده و کاربردی مانگو دی بی کمک میکند تا چه در دیتاسنتر و چه در سرور ابری، بدون نیاز به ابزار یا سختافزار خاصی، قابلاجرا باشد.
یکی از ویژگیهای جذاب MongoDB آن است که میتواند بدون توجه به ساختار، هر دادهای را دقیقاً در دیتابیس آنالیز کرده و نتایج را در لحظه ارائه دهد؛ بدون آن که نیاز به هزینه بالا برای ذخیره داده وجود داشته باشد.
کاربرد در پلتفرمهای پرداخت
پلتفرمهای پرداخت برای آن که بتوانند نسبت به رقبای خود عملکرد بهتری داشته باشند، باید تجربه کاربری انعطافپذیر، بیدرنگ و بهبودیافته را به مشتریان خود ارائه دهند. برندها و مشاغل مختلف برای ایجاد یک پلتفرم پرداخت همیشه فعال، در دسترس و البته ایمن، مانگو دی بی را بهعنوان ستون اصلی زیرساختهای پرداخت استفاده میکنند.
کاربردهای Gaming
صنعت بازیهای ویدیویی همواره به دادهها متکی است و به عبارتی، دادهها برای عملکرد بهتر بازیها نقشی مهم و ضروری دارند. تمام جنبههای بازی از پروفایل بازیکن گرفته تا تلهمتری و بورد امتیازات، همگی به دادهها مرتبط است. با استفاده از فرمت دادههای اسناد منعطف در MongoDB میتوانید بهراحتی ظرفیت هر بازیکن را تخمین بزنید. افزودن بسیاری از موارد از جمله دستاوردهای درون بازی، باز کردن قفل مربوط به پیشرفت در مراحل، پول در بازی، سطوح مختلف و … به کمک مانگو دی بی ممکن میشود. شرکتهای معروفی مانند Sega و Faceit از این برنامه دیتابیس برای زیرساخت بازیهای خود استفاده میکنند.
حالا میدانیم برخی از کاربردهای MongoDB چیست و بهتر درک میکنیم که این برنامه دیتابیس دقیقاً میتواند چهکارهایی را برای کسبوکارها و مشاغل مختلف انجام دهد.
مقایسه مانگو دی بی و سایر دیتابیسها
علاوه بر مانگو دی بی دیتابیسهای دیگری نیز وجود دارد که برای ذخیره دادههای مختلف از آنها استفاده میشود. سوالی که در اینجا وجود دارد این است که دلیل محبوبیت MongoDB چیست و چرا نسبت به گزینههای دیگر، کاربرد بیشتری دارد. به همین دلیل، در ادامه این دیتابیس را با موارد دیگر از جمله MySQL و RDBMS و Cassandra مقایسه میکنیم.
مقایسه MongoDB و دیتابیسهای RDBMS
از مهمترین رقبا و جایگزینهای مانگو دی بی، در گروه دیتابیسهای دیتابیس RDBMS (سیستم مدیریت پایگاه داده رابطهای) است. جدول زیر، این دو را مقایسه میکند.
دیتابیس MongoDB | RDBMS |
دیتابیس غیررابطهای و سند محور (document oriented) | دیتابیس رابطهای (Relational) |
مبتنی بر اسناد یا Document | مبتنی بر ردیفها (Row-based) |
مبتنی بر فیلدها | مبتنی بر ستونها |
مبتنی بر مجموعهها و جفتهای کلید-مقدار (key-value) | مبتنی بر جدول |
ارائه کلاینت جاوا اسکریپت برای کوئری | عدم ارائه جاوا اسکریپت برای کوئری |
سادگی نسبی نصب | نصب نهچندان ساده |
عدم تأثیرپذیری در حملات تزریق کد SQL | آسیبپذیر در برابر حملات تزریق SQL |
دارای طرح (Schema) پویا و ایدهآل برای ذخیرهسازی دادههای سلسلهمراتبی | دارای طرحهای از پیش تعریف شده و نامناسب برای ذخیرهسازی دادههای سلسلهمراتبی |
۱۰۰ برابر سریعتر و مقیاس افقی از طریق شاردینگ | امکان مقیاسبندی عمودی با افزایش حافظه رم |
با بررسی این جدول، میتوانید تفاوتهای دقیق این دو دیتابیس را متوجه خواهید شد.
مقایسه MongoDB با دیتابیس MySQL
MySQL نیز از دیگر دیتابیسهایی است که کاربرد گسترده و متعددی داشته و بهعنوان رقیب مانگو دی بی شناخته میشود. اگر میخواهید بدانید که استفاده از کدام یک برای شما مناسبتر است، جدول مقایسه زیر را بررسی کنید.
MongoDB | MySQL |
زبان کوئری جاوا اسکریپت | زبان کوئری ساخت یافته (SQL) |
نشان دادن دادهها بهصورت اسناد JSON | نشان دادن دادهها بهصورت جدول و ردیفها |
عدم نیاز به تعریف طرح (schema) | نیازمند تعریف جداول و ستونها |
عدم پشتیبانی JOIN | با پشتیبانی JOIN |
MongoDB با دسترسیپذیری و مقیاسپذیری بالایی ساخته شده و قابلیتهای replication و sharding را ارائه میدهد. | اگرچه قابلیت replication و sharding مؤثر را ارائه نمیدهد، اما امکان بازیابی دادهها از طریق joinها را فراهم میکند که کاهش تکرار را بهم همراه دارد. |
آسیبپذیری کمتر در برابر حملات به دلیل طراحی برنامه | دارای ریسک حملات تزریق کد SQL |
این جدول بهخوبی موارد تفاوت MongoDB و MySQL را نشان میدهد و به کمک آن میتوانید ببینید که کدام یک برای شما مناسبتر خواهد بود.
MongoDB در مقابل کاساندرا
جدول زیر، نشان میدهد که تفاوتهای Cassandra و MongoDB چیست و هرکدام چه ویژگیهایی دارند.
MongoDB | Cassandra |
یک سیستم دیتابیس رایگان، منبعباز، cross-platform و سند محور | یک سیستم دیتابیس منبعباز، توزیع شده و غیرمتمرکز |
امکان نوشتن به زبانهای مختلف مانند C یا C++ و JavaScript | امکان نوشتن تنها به زبان جاوا |
مبتنی بر اسناد | مبتنی بر ستونها |
دارای تریگرها | بدون تریگر |
دارای ایندکسهای ثانویه | دارای ایندکسهای ثانویه محدود |
جمعبندی
در این مطلب آنچه را که درباره مانگو دی بی و جزئیات معماری و عملکرد آن لازم است بدانید، بررسی کردیم. همچنین دیدیم که کاربرد MongoDB چیست و کدام سازمانها کسبوکارها میتوانند از آن استفاده کنند. مانگو دی بی یک سیستم دیتابیس NoSQL است که برای بسیاری از کاربردها، به دلیل برخی ویژگیهای متفاوتتر، نسبت به دیتابیسهای سنتی رابطهای ترجیح داده میشود. در این مطلب، دلیل این برتری را بررسی کرده و دیدیم که چه تفاوتهایی بین مانگو دی بی با سیستمهای دیتابیس دیگر مانند RDBMS و MySQL و … وجود دارد.