MongoDB یک سیستم دیتابیس Open source است که از یک مدل داده و زبان پرسوجوی غیرساختاری (Non-Structured) استفاده میکند. در حال حاضر، MongoDB یکی از قویترین بانکهای اطلاعاتی و سیستمهای NoSQL بهحساب میآید. پایگاههای داده NoSQL برای کار با مجموعهدادههای بزرگ و دادههای توزیعیافته بسیار مفید و کاربردی است. MongoDB هم نوعی از سیستم دیتابیس NoSQL است که برای ذخیرهسازی دادههای حجیم مورداستفاده قرار میگیرد. این دیتابیس از انواع مختلف دادهها پشتیبانی میکند. دیتابیس MongoDB ابزاری است که میتواند اطلاعاتDocument-Based را مدیریت کند و ذخیرهسازی و بیرونکشیدن اطلاعات را عهدهدار شود. بهجای استفاده از جدولها و سطرها در سیستمهای سنتی دیتابیس رابطهای، MongoDB از کالکشنها و داکیومنتها استفاده میکند.
MongoDB Atlas چیست ؟
MongoDB Atlas راهکار دیتابیس ابری برای کاربردهای جدید بهحساب میآید که در مقیاس جهانی در دسترس است. این شیوههای درجه یک و پایدار خودکارسازی (در MongoDB Atlas)، امکان استقرار MongoDB را در سرویسهای ابری Google Cloud ،AWS و مایکروسافت Azure فراهم کرده است.
علاوه بر این، دسترسپذیری، مقیاسپذیری و سازگاری با قویترین ملزومات امنیت داده و حریم خصوصی در MongoDB Atlas تضمین میشود. MongoDB Cloud یک پلتفرم داده یکپارچه است که شامل دیتابیس ابری سراسری، خدمات جستجو، دریاچه داده و خدمات موبایل و اپلیکیشن میشود.
MongoDB Compass چیست؟
MongoDB Compass یک رابط کاربری گرافیکی قدرتمند است که برای کوئری زدن، جمعآوری و تجزیه – تحلیل دادههای MongoDB در یک محیط بصری مورداستفاده قرار میگیرد. استفاده از MongoDB Compass رایگان و کد منبع این دیتابیس نیز قابلدسترسی است و میتوان آن را روی سیستم عاملهای مک OS، ویندوز و لینوکس اجرا کرد.
برخی از کارهای مختلفی که میتوان با استفاده از Compass انجام داد، در ادامه فهرست شدهاند:
- وارد کردن دادهها
- کوئری زدن روی دادهها
- ایجاد خط لولههای جمعآوری
- اجرای دستورات در پوسته (Shell)
MongoDB یک دیتابیس NoSQL است؟
اینکه MongoDB یک ابزار NoSQL بهحساب میآید، یعنی در این سیستم مدیریت دیتابیس از سطرها و ستونهای رایج مورداستفاده در سیستمهای بانک اطلاعاتی رابطهای استفاده نمیشود. MongoDB دارای معماری است که در آن از کالکشنها و داکیومنتها استفاده میشود. واحد پایه دادهها در این نوع از دیتابیس شامل مجموعههایی دوتایی کلید – مقدار میشود. در MongoDB این امکان برای سندها وجود دارد که فیلدها و ساختارهای مختلفی داشته باشند. در دیتابیس MongoDB از یک قالب ذخیرهسازی سند محور به نام BSON استفاده میشود که نوع دودویی (باینری) سندهای جیسون (JSON) بهحساب میآید.
مدل دادهای که MongoDB از آن تبعیت میکند، یک مدل داده بسیار منعطف است که امکان تلفیق و ذخیرهسازی دادهها را با نوعهای چندمتغیره بدون نیاز به کنارگذاشتن امکانات قدرتمند اندیسگذاری، دسترسی به دادهها و قواعد بصریسازی فراهم میسازد. وقتی که قصد ویرایش طرحوارهها (شماها) بهصورت پویا وجود داشته باشد، هیچ نیازی به غیرفعال کردن سیستم (زمان خاموشی |Downtime) وجود ندارد. این یعنی میتوان به جای صرف وقت زیاد روی آمادهسازی دادهها برای دیتابیس، بیشتر روی کارکرد بهتر دادهها تمرکز داشت.
مزایای MongoDB چیست ؟
شناختهشدن MongoDB بهعنوان یکی از بهترین دیتابیسهای NoSQL توسط اهل فناوری، بدون دلیل نیست و به سبب مزایایی است که این سیستم دیتابیس فراهم میکند. در این بخش به شش جنبه مختلف مزایای MongoDB پرداخته شده است.
پلتفرم توزیع شده دادهها
از طریق مراکز داده توزیع شده و فضای ابری، امکان اجرا و استفاده از MongoDB بهگونهای فراهم میشود که بتوان به سطح جدیدی از دسترسپذیری و مقیاسپذیری رسید. با حذفشدن زمان خاموشی و بدون نیاز به تغییر اپلیکیشن خود، مقیاس MongoDB به لحاظ حجم دادهها و توان عملیاتی (نرخ گذردهی) به طور ارتجاعی قابل انطباق است. این فناوری، انعطافپذیری کافی را برای مراکز داده مختلف به همراه انسجام مطلوب فراهم میآورد.
امکان توسعه سریع و تکرارپذیر
با استفاده از MongoDB، ملزومات کسبوکار دیگر تحویل موفقیتآمیز پروژه را در یک سازمان تحتتأثیر قرار نخواهند داد. یک مدل داده انعطافپذیر به همراه طرحبندی پویا، رابط گرافیکی قدرتمند و ابزارهای خط فرمان، کار ساخت و تغییر برنامههای کاربردی را بسیار سرعت بخشیده است. تأمین ذخیره خودکار در MongoDB، امکان ادغام، یکپارچهسازی و تحویل مداوم را برای عملیات مولد فراهم میسازد. طرحوارههای رابطهای ایستا و عملیات پیچیده RDBMS اکنون به گذشته اختصاص دارند.
مدل داده منعطف
MongoDB دادهها را در داکیومنتهای منعطف مشابه قالب JSON ذخیره میکند که باعث ساده شدن فرایند افزایش دوام و تلفیق دادهها میشود. اشیا موجود در کدهای اپلیکیشن به مدل سند محور نگاشته میشوند که در پی آن، کار با دادهها بسیار آسان خواهد شد. با استفاده از دیتابیس MongoDB ، بررسیهای نظارتی، دسترسی به دادهها، انبوهش پیشرفته و قابلیت اندیسگذاری توسعهیافته بههیچعنوان تحتتأثیر قرار نخواهند گرفت. بدون نیاز به زمان Downtime، میتوان طرحواره را بهصورت پویا ویرایش کرد. باتوجهبه این قابلیت انعطافپذیری، نگرانی برنامهنویسان در خصوص تغییر دادهها بسیار کاهش پیدا میکند.
کاهش هزینه کلی مالکیت
با استفاده از MongoDB، برنامهنویسان اپلیکیشن میتوانند وظایف خود را بهتر انجام دهند. همچنین، بهواسطه سرویس ابری اطلس (Atlas) برای MongoDB، اعضای تیم عملیات هم میتوانند وظایف محوله را بهخوبی اجرا کنند؛ بنابراین، با بهینهشدن کارها و همچنین به دلیل قابلاجرابودن MongoDB روی اکثر سختافزارهای رایج، ارزان و در دسترس، هزینهها به میزان زیادی کمتر میشوند. هزینههای مربوط به استفاده تجاری از فناوری MongoDB بر اساس تقاضا، به میزان استفاده، با عضویت سالانه و به همراه پشتیبانی ۲۴ ساعته ارائه میشوند.
مجموعه قابلیتها و ویژگیهای ادغام شده
از MongoDB میتوان به دلیل امکان تجزیه – تحلیل و بصریسازی دادهها، خط لولههای جریان داده مبتنی بر رویداد، جستجوی متنی و مکانی، پردازش گراف و همچنین عملکرد درون – حافظهای انواع مختلفی از کاربردهای زمان واقعی استفاده کرد. برای اینکه بتوان از طریق RDBMS به این قابلیتها دستیافت، نیاز به فناوریهای پیچیده اضافه و همچنین الزامات ادغامسازی مجزا وجود خواهد داشت.
تعهد بلندمدت
توسعه فناوری MongoDB بسیار شگفتآور است و تعداد زیادی از شرکتهای تجاری، زیرساختهای خود را به این فناوری انتقال دادهاند. MongoDB تا کنون بیش از ۳۰ میلیون بار دانلود شده است و بیش از ۵۰۰۰ مشتری از خدمات این فناوری در سطح سازمانی استفاده میکنند.
امکان پشتیبانی از زبان SQL در MongoDB وجود ندارد. شیوه کوئری زدن MongoDB روی داکیومنتها پویا است، چراکه این سیستم مدیریت دیتابیس مبتنی بر اسناد (داکیومنت) عمل میکند و میتواند بهاندازه SQL کارایی داشته باشد. تنظیم مقیاس MongoDB ساده است و نیازی به تبدیل یا نگاشت اشیای اپلیکیشن به اشیای دیتابیس وجود ندارد. MongoDB حافظه داخلی را برای فراهمسازی دسترسی سریعتر به دادهها و ذخیرهسازی مجموعه کاری مستقر میکند.
معایب MongoDB چیست؟
با وجود کاراییها و فواید بسیار، دیتابیس MongoDB معایبی هم دارد که در ادامه فهرست شدهاند:
- در دیتابیس MongoDB از حافظه زیادی برای ذخیرهسازی دادهها استفاده میشود.
- برای اندازه داکیومنت در MongoDB محدودیت وجود دارد (حداکثر ۱۶ مگابایت).
- در MongoDB هیچ پشتیبانی برای تراکنش وجود ندارد.
- عدم پشتیبانی از Join
- مصرف رم بالا
- محدودیت در Nesting شما نمی توانید اسناد را برای بیش از 100 سطح تودرتو انجام دهید.
معماری دیتابیس NoSQL MongoDB چیست ؟
اجزای اصلی معماری دیتابیس MongoDB شامل موارد زیر میشوند:
- دیتابیس (Database)
- کالکشن (Collection)
- داکیومنت (Document)
حال در ادامه به شرح مختصر هر یک از اجزای معماری دیتابیس MongoDB پرداخته شده است.
به بیان ساده، دیتابیس در معماری MongoDB را میتوان نگهدارنده فیزیکی برای دادهها نامید. هر یک از پایگاههای داده، مجموعه فایلهای مربوط به خودشان را در سیستم فایل دارند و به همراه چندین دیتابیس موجود در یک سرور MongoDB واحد قرار میگیرند.
Collection در معماری MongoDB چیست؟
در MongoDB، گروهی از داکیومنتهای دیتابیس را میتوان کالکشن (Collection) نامید. معادل کالکشن در سیستم مدیریت دیتابیس رابطهای (RDBMS)، همان «جدول» (Table) است. تمام کالکشن در داخل یک دیتابیس واحد قرار میگیرد. برای کالکشنها، هیچ طرحوارهای (شمایی) وجود ندارد. در داخل کالکشن، داکیومنتهای مختلف میتوانند فیلدهای مختلفی داشته باشند، اما غالباً داکیومنتهای موجود در یک کالکشن دارای هدف یکسانی هستند یا برای رسیدن به هدف نهایی مشترکی در آن قرار گرفتهاند.
Document در معماری MongoDB چیست ؟
مجموعهای از جفتهای کلید – مقدار را میتوان بهعنوان یک داکیومنت (Document | سند) در نظر گرفت. داکیومنتها با طرحوارههای پویا (Dynamic Schema) مرتبط هستند. مزیت داشتن طرحوارههای پویا این است که یک داکیومنت در یک کالکشن واحد ناچار نیست که همان ساختار یا فیلدهای مشترک را داشته باشد. همچنین، نوع فیلدهای مشترک در یک داکیومنت کالکشن میتوانند متفاوت باشند.
اکنون زمان آن فرارسیده است تا برای درک بهتر پاسخ سؤال «MongoDB چیست» به مقایسه این سیستم دیتابیس با سایر سیستمها و روشهای مدیریت بانکهای اطلاعاتی پرداخته شود.
مقایسه MongoDB با سایر سیستمهای دیتابیس
میتوان دیتابیس NoSQL MongoDB را مستقیماً با دیتابیسهای RDBMS مقایسه کرد و نگاشت اصطلاحات مختلف در هرکدام را بهراحتی انجام داد:
- جدول در RDBMS یک کالکشن در MongoDB است.
- ستون در RDBMS یک فیلد در MongoDB بهحساب میآید.
- تاپل یا همان سطر در RDBMS یک داکیومنت در MongoDB محسوب میشود.
- پیوند جدول در RDBMS نیز یک داکیومنت تعبیه شده (Embedded) در MongoDB است.
طرحواره معمول در یک دیتابیس رابطهای، تعداد جدولها و رابطه میان جدولها را نشان میدهد. اما در دیتابیس MongoDB از مفهوم رابطه تبعیت نمیشود. در جدول زیر، ۹ تفاوت اساسی میان یک دیتابیس تخصصی NoSQL یعنی MongoDB با سیستم بانک اطلاعاتی رابطهای شرح داده شده است:
دیتابیس رابطهای (RDBMS) | MongoDB |
استفاده از روش رابطهای | سیستم سند محور و غیر رابطهای |
سطر محور | سند محور |
ستون محور | فیلد محور |
جدول محور | مبتنی بر کالکشن و جفتهای کلید – مقدار |
کلاینت جاوا اسکریپت برای کوئری زدن ارائه نمیدهد | برای کوئری زدن کلاینت جاوا اسکریپت ارائه میدهد. |
در مقایسه، راهاندازی آن چندان ساده نیست. | راهاندازی آن نسبتاً آسان است. |
تا حدودی در برابر تزریق SQL آسیبپذیری دارد. | در برابر تزریق SQL تأثیرناپذیر است. |
دارای طرحواره از پیش تعریف شده است و برای ذخیرهسازی سلسلهمراتبی داده مناسب نیست. | برای ذخیرهسازی سلسلهمراتبی دادهها دارای طرحواره پویا است. |
با افزایش RAM، مقیاسبندی عمودی میتواند اتفاق بیافتد | ۱۰۰ برابر سریعتر است و بهصورت افقی از طریق پارتیشنبندی دیتابیس (Sharding) قابل مقیاسبندی است. |
مقایسه MongoDB با MySQL
مقایسه MongoDB با MySQL در قالب جدول زیر انجام شده است.
MySQL | MongoDB |
زبان در آن ساختاریافته است. | زبان در آن جاوا اسکریپت است. |
در آن دادهها در قالب جدولها (سطرها و ستونها) ارائه میشوند. | دادهها در آن بهعنوان سندهای JSON ارائه میشوند. |
تعریف جدولها و ستونها در آن الزامی است. | تعریف طرحواره در آن الزامی نیست. |
از JOIN پشتیبانی میکند. | از JOIN پشتیبانی نمیکند. |
اگرچه ایده MySQL امکان تکرار (Replication) و پارتیشنبندی دیتابیس را فراهم نمیکند، اما به کاربران اجازه میدهد تا دادههای مرتبط را از طریق پیوندها (joinها) بازیابی کنند که این امر باعث میشود تا دونسخهسازی کاهش یابد. | MongoDB با در نظر گرفتن بحث دسترسپذیری و مقیاسپذیری بالا ساخته شده است امکانات مهمی را مثل تکرار و sharding را از همان ابتدا بهصورت پیشفرض در خود دارد. |
خطر حمله تزریق SQL در آن وجود دارد. | باتوجهبه طراحی آن، MongoDB کمتر در خطر حملات قرار دارد. |
مقایسه MongoDB با کاساندرا
همانند موارد قبلی، مقایسه MongoDB و کاساندرا در جدول زیر انجام شده است:
Cassandra | MongoDB |
سیستم دیتابیس Open source، توزیع شده و غیرمتمرکز است. | سیستم دیتابیس رایگان، Open source، چندپلتفرمی و مبتنی بر سند است. |
تنها میتوان آن را در جاوا نوشت. | میتوان آن را به زبانهای C++ ،C و جاوا اسکریپت پیاده سازی کرد. |
ستون محور است. | سند محور است. |
فاقد Triggerها است. | دارای Triggerها است. |
اندیسهای محدود شده ثانویه داراد. | اندیسهای ثانویه دارد. |
یکی دیگر از مواردی که در خصوص سؤال «MongoDB چیست» مطرح میشود، ویژگیهای دیتابیس MongoDB است؛ بنابراین در ادامه به طور خلاصه به شرح و ارائه فهرستی از ویژگیهای MongoDB پرداخته شده است.
مشتریان MongoDB
در حال حاضر، MongoDB توسط تعداد قابل ملاحظهای از سازمانهای تجاری در حوزه IT برای برنامههای کاربردی یا سیستمهای ذخیرهسازی دادهها به کار گرفته میشود. طبق تحقیقات و بررسیهای انجام شده روی MongoDB، بیش از ۴ هزار شرکت تجاری تایید کردهاند که از MongoDB برای مدیریت دیتابیس خود استفاده میکنند. در ادامه برخی از شرکتهایی فهرست شدهاند که در حال استفاده از MongoDB هستند:
- IBM Uber
- لیفت
- اینترکام
- سیتریکس
- Delivery Hero
- توییتر
- InVision
- HTC
- T-Mobile
- LaunchDarkly
- سونی
- و…
کاربردهای MongoDB
در این بخش توضیحات لازم پیرامون هر یک از کاربردهای MongoDB ارائه شده است. ابتدا بهتر است هر یک از این کاربردها به اختصار فهرست شوند:
• ایجاد نمای واحد
• اینترنت اشیا
• تجزیه – تحلیل زمان واقعی
• خدمات پرداخت
• بازیهای کامپیوتری