پایگاه‌داده‌ی مانگو دی‌بی (MongoDB) چیست و چگونه کار می‌کند؟

زمان مطالعه: حدود 5 دقیقه / 4 گفتگو

مانگو دی‌بی (MongoDB) یک سیستم مدیریت پایگاه‌داده رایگان و اپن‌سورس است که از یک ساختار سندگرا استفاده می‌کند، این سیستم انواع مختلفی از داده را پشتیبانی می‌کند و یکی از انواع بی‌شمار تکنولوژی پایگاه داده‌ی غیر رابطه‌ای (non-relational) به حساب می‌آید که در اواسط دهه‌ی ۲۰۰۰ تحت عنوان NoSQL پدید آمد.

هدف این بود که از این سیستم در اپلیکیشن‌های مرتبط با داده‌ها و سایر کارهای پردازشی که با اطلاعات سروکار داشتند و مدل‌های رابطه‌ای ثابت پاسخگوی آنها نبودند، استفاده شود، MongoDB به جای اینکه همچون پایگاه‌های داده‌ی رابطه‌ای از جداول و ردیف‌ها استفاده کند، در طراحی خود از مجموعه‌ها و اسناد بهره برده است.

مانگو دی بی چیست؟

نحوه‌ی کار مانگو دی‌بی

رکورد موجود در MongoDB به صورت سند است، ساختار این سند حاوی داده‌هایی است که از دو قسمت field و value تشکیل شده‌اند، اسناد مانگو دی‌بی مشابه با ساختار JSON در جاوا اسکریپت هستند، اما از متغیری با نام Binary JSON استفاده می‌کند که آن را BSON می‌نامند و بدین ترتیب دیتابیس مانگو با استفاده از آن می‌تواند با انواع بیشتری از داده‌ها تطبیق پیدا کند.

فیلدهای موجود در اسناد، به ستون‌های موجود در پایگاه داده‌ی رابطه‌ای وابسته هستند، مقادیر موجود در این اسناد نیز می‌توانند به همان اندازه که انواع داده وجود دارد، متفاوت باشند که طبق راهنمای مانگو دی‌بی می‌توانند شامل اسناد دیگر، آرایه و اسناد آرایه‌ای باشد، شما می‌‌توانید نمونه‌ای از ساختار دستور insert در پایگاه‌داده‌ی مانگو را در قطعه‌کد زیر مشاهده کنید:

db.mycol.insert ( 
     {
         title: 'MongoDB Tutorial', 
         description: 'MongoDB is a NoSQL database',
         by: 'Hamyarit',
         url: 'https://www.hamyarit.com',
         tags: ['mongodb', 'database', 'NoSQL'],
         likes: 100
     }
  )

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

فرمت تبادل داده و ذخیره‌ی اسناد BSON که در مانگو دی‌بی مورد استفاده قرار گرفته است یک شمای دو وجهی از اسنادی که شبیه به JSON هستند ارائه می‌دهد.

نحوه ی کار مانگو دی بی

اشتراک گذاری خودکار، ویژگی کلیدی دیگری است که داده‌های موجود در مجموعه‌ی MongoDB را به پراکنده شدن در چندین سیستم قادر می‌سازد، بدین جهت مقیاس‌پذیری افقی در سیستم پدید می‌آید و حجم اطلاعات پراکنده می‌شود و همچنین ظرفیت پذیرش داده افزایش می‌یابد.

مقیاس‌پذیری (Scalability) به این معناست که در صورت افزایش حجم اطلاعات می‌توان داده‌ها را در کامپیوترهای مختلفی پخش کرد، تا بار پردازشی سیستم کاهش یافته و امکان پردازش حجم عظیمی از داده‌ها توسط دیتابیس فراهم گردد.

مزایا و معایب مانگو دی‌بی

مانگو دی‌بی همچون سایر پایگاه‌های داده‌ی NoSQL به مدل‌های از پیش تعریف شده نیاز ندارد و هرگونه از اطلاعات را ذخیره می‌کند، این کار به کاربران انعطاف لازم جهت ساخت هر تعداد از فیلد در یک سند را می‌دهد و در نتیجه سنجش پایگاه‌های داده‌ی MongoDB در مقایسه با پایگاه‌های داده‌ی ارتباطی آسان‌تر است.

یکی از مزایای استفاده از اسناد این است که این اجزا با استفاده از چندین زبان برنامه‌نویسی، انواع داده‌های اصلی را ترسیم می‌کنند، همچنین داشتن این اسناد که درون پایگاه داده قرار دارند، نیاز برای اتصال پایگاه‌های داده را کاهش می‌دهد که می‌تواند به کاهش هزینه بینجامد.

همانطور که پیش‌تر هم گفتیم ویژگی اصلی MongoDB این است که توانایی مقیاس‌پذیری افقی دارد، این ویژگی، مانگو دی‌بی را به یک پایگاه داده‌ی مفید برای کمپانی‌هایی که اپلیکیشن‌های مرتبط با داده‌های بزرگ را راه اندازی می‌کنند، تبدیل می‌کند.

اگرچه مزایای مانگو دی‌بی بسیارند اما معایبی نیز وجود دارند، از آنجایی که MongoDB دارای استراتژی FailOver است، یک کاربر تنها یک گره‌ی اصلی را در خوشه‌ی مانگو دی‌بی نصب می‌کند، اگر گره‌ی اصلی خوب کار نکند، گره‌ی فرعی به طور خودکار جایگزین گره‌ی اصلی می‌شود.

این تغییر وضعیت، تداوم و پایداری برنامه را تضمین می‌کند اما به صورت آنی صورت نمی‌گیرد و ممکن است صورت گرفتن آن تا یک دقیقه به طول بینجامد، در مقابل پایگاه‌داده‌‌های Cassandra NoSQL از چندین گره اصلی پشتیبانی می‌کند تا در صورتی که یکی از آنها به خوبی کار نکرد، گره‌ی دیگر به جای آن وارد عمل شود تا یک زیرساخت با قابلیت دسترسی بالا برای پایگاه داده موجود باشد.

گره اصلی مانگو دی‌بی همچنین سرعت نوشته شدن داده بر روی پایگاه داده را محدود می‌کند، نوشتن داده باید بر روی گره اصلی ثبت شود و نوشته شدن اطلاعات جدید بر روی پایگاه داده با توجه به ظرفیت این موضوع، گره اصلی محدود می‌شود.

مزایا و معایب مانگو دی بی

مشکل دیگری که ممکن است رخ دهد این است که احراز هویت کاربر به صورت پیش‌فرض در پایگاه‌داده‌ی MongoDB مهیا نشده است که البته این موضوع سبب محبوبیت این تکنولوژی در میان توسعه دهندگان شده، با این حال هکرهای زیرک بسیاری سیستم‌های غیرایمن مانگو دی‌بی را از طریق حملات باج گیرانه مورد هدف قرار داده‌اند، این موضوع سبب شده است تا بخشی به تنظیمات پیش‌فرض اضافه شود تا در صورتی که کسی به جز ادمین پایگاه‌داده به شبکه‌ها دسترسی پیدا کرد، دسترسی او قطع شود.

پلتفرم‌های موجود برای مانگو دی‌بی

پایگاه‌داده‌ی مانگو در نسخه‌های عادی و تجاری موجود است، نسخه‌ی عادی مانگو دی‌بی به صورت رایگان و اپن‌سورس منتشر شده و به راحتی توسط همه قابل استفاده است، در صورتی که نسخه‌ی MongoDB Enterprise Server، دارای امکانات امنیتی اضافه، موتور حافظه‌ی داخلی، امکانات اجرایی و احراز هویت و همچنین قابلیت‌های بررسی است که از طریق سیستم‌عامل‌های مدیریتی پشتیبانی می‌شود و برای تهیه‌ی آن باید مبلغی را بپردازید.

رابط گرافیکی کاربر (GUI) که در مانگو دی‌بی با نام Compass شناخته می‌شود، به کاربران امکان کار با ساختار اسناد، جستجو، مرتب کردن داده‌ها و… را می‌دهد، رابط مانگو دی‌بی که مخصوص هوش تجاری است، به کاربران این امکان را می‌دهد که به پایگاه داده‌ی NoSQL متصل شده تا بتوانند به ابزار هوش تجاری خود دست یافته و از این طریق، داده‌ها را تجسم کرده و با استفاده از کوئری‌های SQL به تولید گزارش بپردازند.

کمپانی پشتیبان مانگو‌ دی‌بی در سال ۲۰۱۶ یک پایگاه داده‌ی ابری را به عنوان یکی از خدمات خود تحت عنوان MongoDB Atlas منتشر کرد، این سرویس در AWS آمازون، سرویس ابری مایکروسافت (Microsoft Azure) و پلتفرم ابری گوگل قابل اجرا است.

مانگو دی‌بی چیست؟

همچنین این کمپانی در نسخه‌ی MongoDB 4.0 که در سال ۲۰۱۸ منتشر شد، بخشی را به پشتیبانی از تبادلات چند سندی ACID اختصاص داد، همانطور که می‌دانید ACID از سرواژه‌ی عبارات Atomicity, Consistency, Isolation, Durability تشکیل شده است. همخوانی ACID با اسناد متعدد، سبب گسترش میزان تبادلات مختلفی می‌شود که مانگو دی‌بی می‌تواند آنها را به درستی و با اطمینان مدیریت کند.

آیا شما نیز تا به‌حال در پروژه‌های خود از پایگاه‌داده‌های NoSQL استفاده کرده‌اید؟ چه تجربه‌ای در خصوص این نوع از دیتابیس‌ها دارید؟ دیدگاه‌ها و تجربیات خود را با ما و سایر کاربران همیار آی‌تی به اشتراک بگذارید.

شما یک گام جلوتر از دیگران باشید! اگر به آی‌تی و تکنولوژی علاقه‌مندید و دوست دارید سریع‌تر در این زمینه پیشرفت کنید، همین حالا به جمع ۲۷۸۳ عضو همیار آی‌تی بپیوندید، دسترسی به تمام آموزش‌های پریمیوم، دریافت جدیدترین آموزش‌های کاربردی مرتبط با آی‌تی و استفاده از مشاوره‌ی رایگان، برخی از مزایای عضویت در سایت هستد، شما نیز به کاربران همیار پیوسته و همین حالا وارد دنیای حرفه‌ای‌ها شوید... من هم می‌خواهم عضو ویژه‌ی همیار شوم

4 گفتگو

در بحث‌‌ پیرامون این مقاله شرکت کنید، سوالات شما توسط کارشناسان همیار آی‌تی پاسخ داده می‌شود...

  1. Avatar سونیا گفت:

    سلام. برای استفاده از این پایگاه داده فقط بلد بودن html و css و جاوا اسکریپت کافیه؟

    1. فرشاد گوهری فرشاد گوهری گفت:

      سلام، خیر شما باید با قوانین این دیتابیس‌ها هم آشنا باشید، البته چون مانگو دی‌بی دستوراتش برپایه‌ی JSON هست اگر جاوا اسکریپت رو بلد باشید خیلی کارتون ساده میشه.

  2. Avatar محمدعلی حسینی گفت:

    سلام، ممنون از آموزش خوبتون، الان یه سوالی برای من پیش اومده، چه وقتایی باید از مانگو دی بی استفاده کنیم؟ منظورم اینه که دیتابیسهای قدیمی بهتر هستن یا دیتابیس mongo db کدومش بهتره؟

    1. فرشاد گوهری فرشاد گوهری گفت:

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