MongoDB چیست؟ — راهنمای شروع با دیتابیس مانگو دی بی
با افزایش حجم دادهها در سراسر دنیا، گرایش به میزان زیادی به سمت استفاده از «بانکهای اطلاعاتی غیر رابطهای» (Non-Relational Database) یا همان پایگاه دادههای NoSQL سوق پیدا کرده است. کسب و کارها و سازمانها به دنبال روشهای جدیدی برای مدیریت سیل عظیم دادهها هستند و به استفاده از ابزارها و سیستمهای جایگزین مدیریت پایگاه دادهها گرایش پیدا کردهاند. این ابزارها و سیستمهای جایگزین، نسبت به سیستمهای پایگاه داده سنتی «رابطهای» متفاوت هستند. اینجاست که سخن از MongoDB به میان میآید. در این مقاله به این سوال پاسخ داده شده است که MongoDB چیست و کاربردهای دیتابیس مانگو دی بی چه هستند؟ علاوه بر این به بسیاری از دیگر سوالها و مباحث پیرامون MongoDB نیز پرداخته شده است تا بتوان از این مقاله به عنوان نقطه شروع یادگیری دیتابیس مانگو دی بی استفاده کرد.
MongoDB چیست ؟
MongoDB یک سیستم پایگاه داده متن باز است که از یک مدل داده و زبان پرس و جوی غیر ساختاری (Non-Structured) استفاده میکند. در حال حاضر، MongoDB یکی از قویترین بانکهای اطلاعاتی و سیستمهای NoSQL به حساب میآید. پایگاههای داده NoSQL برای کار با مجموعه دادههای بزرگ و دادههای توزیعیافته بسیار مفید و کاربردی است.
MongoDB هم نوعی از سیستم پایگاه داده NoSQL است که برای ذخیرهسازی دادههای حجیم (مدیریت کلان داده) مورد استفاده قرار میگیرد. این پایگاه داده از انواع مختلف دادهها پشتیبانی میکند. پایگاه داده MongoDB ابزاری است که میتواند اطلاعات سند-محور (Document-Based) را مدیریت کند و ذخیرهسازی و بیرون کشیدن اطلاعات را عهدهدار شود. به جای استفاده از جدولها و سطرها در سیستمهای سنتی پایگاه داده رابطهای، MongoDB از کالکشنها (Collection|گردآورد) و داکیومنتها (Document) استفاده میکند.
پیش از ادامه این مبحث لازم است یادآور شویم که میتوانید MongoDB را با استفاده از مجموعه آموزش مونگو دی بی فرادرس یاد بگیرید.
داکیومنتها جُفتهای کلید-مقدار را شامل میشوند که واحدهای داده بنیادی در MongoDB به حساب میآیند. کالکشنها مجموعههایی از داکیومنتها و توابع را شامل میشوند که معادل جدولهای پایگاه دادههای رابطهای هستند. از MongoDB در کاربردهای کلان داده (بیگ دیتا) و سایر حوزههای مربوط به پردازش دادهها استفاده میشود. MongoDB بیشتر برای مدیریت دادههایی مناسب است که به خوبی با یک مدل انعطافناپذیر رابطهای سازگار نیستند.
MongoDB در اواسط دهه ۸۰ شمسی (۲۰۰۰ میلادی) مطرح و شناخته شده است. سازمانهای تجاری میتوانند از MongoDB برای کوئریهای موردی (ad-hoc)، اندیسگذاری، متعادلسازی بار ترافیکی (Load Balancing)، انبوهش (Aggregation)، اجرای جاوا اسکریپت در سمت سرور و سایر قابلیتها استفاده کنند.
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 است؟
منظور از NoSQL بودن MongoDB چیست ؟
اینکه MongoDB یک ابزار NoSQL به حساب میآید، یعنی در این سیستم مدیریت پایگاه داده از سطرها و ستونهای رایج مورد استفاده در سیستمهای بانک اطلاعاتی رابطهای استفاده نمیشود. MongoDB دارای معماری است که در آن از کالکشنها و داکیومنتها استفاده میشود.
واحد پایه دادهها در این نوع از پایگاه داده شامل مجموعههایی دوتایی کلید-مقدار میشود. در MongoDB این امکان برای سندها وجود دارد که فیلدها و ساختارهای مختلفی داشته باشند. در پایگاه داده MongoDB از یک قالب ذخیرهسازی سندمحور به نام BSON استفاده میشود که نوع دودویی (باینری) سندهای جیسون (JSON) به حساب میآید.
مدل دادهای که MongoDB از آن تبعیت میکند، یک مدل داده بسیار منعطف است که امکان تلفیق و ذخیرهسازی دادهها را با نوعهای چندمتغیره بدون نیاز به کنار گذاشتن امکانات قدرتمند اندیسگذاری، دسترسی به دادهها و قواعد بصریسازی فراهم میسازد. وقتی که قصد ویرایش طرحوارهها (شماها) به صورت پویا وجود داشته باشد، هیچ نیازی به غیرفعال کردن سیستم (زمان خاموشی |Downtime) وجود ندارد. این یعنی میتوان به جای صرف وقت زیاد روی آمادهسازی دادهها برای پایگاه داده، بیشتر روی کارکرد بهتر دادهها تمرکز داشت.
مثال پایگاه داده سند در MongoDB
در ادامه مثالی از یک پایگاه داده سند در MongoDB آمده است:
1{_id:
2name: “Thomson”,
3Age: 22,
4Address: {{street: “124 church street”,
5 city: “brooklyn”,
6 state: “NY”,
7 zip: “13400”,
8 country: “US”}}
9}
برای آشنایی بیشتر با پایگاه داده MongoDB، بهتر است در ادامه مقاله «MongoDB چیست» به طور مختصر به تاریخچه پایگاه داده مانگو دی بی پرداخته شود.
تاریخچه پایگاه داده MongoDB چیست ؟
دوایت مریمان (Dwight Merriman)، الیوت هورویتز (Eliot Horowitz) و کوین رایان (Kevin Ryan) پایگاه داده MongoDB را در سال ۱۳۸۵ (۲۰۰۷ میلادی) خلق کردهاند.
با هدف ارائه راهکاری برای مشکلات مقیاسپذیری و انعطافپذیری که در DoubleClick با آن مواجه بودند، آنها تصمیم گرفتند که یک پایگاه داده بسازند. در این زمان بود که MongoDB به وجود آمد. در ادامه، برخی از موارد مهم در خصوص تاریخچه MongoDB فهرست شدهاند:
- MongoDB ابتدا توسط 10gen Software در سال ۱۳۸۵ به عنوان بخشی از مجموعه پیشنهادی راهکارهای پلتفرم به عنوان خدمت توسعه داده شد.
- شرکت 10gen Software در سال ۱۳۸۷ خط مشی خود را به رویکرد متنباز به همراه پشتیبانی تجاری و سایر خدمات قابل ارائه تغییر داد.
- این شرکت در سال ۱۳۹۱ به MongoDB Inc. تغییر نام داد.
- در سال ۱۳۹۵ شرکت MongoDB به یک کسب و کار سهامی عام تبدیل شد.
- در مهرماه ۱۳۹۸ شرکت MongoDB همکاری و شراکت خود را با شرکت Alibaba Cloud اعلام کرد تا بتواند راهکار «MongoDB به عنوان خدمت» (MongoDB-as-a-Service) را به مشتریان خود عرضه کند. مشتریان میتوانند به خدمات مدیریت شده Alibaba از طریق هر یک از مراکز داده جهانی این شرکت دسترسی پیدا کنند.
معمولاً یکی از سوالات رایج و پرجستجویی که به همراه سوال «MongoDB چیست» به وجود میآید، پیرامون مزایا و نقاط مثبت این سیستم پایگاه داده مطرح میشود. بنابراین در ادامه به شرح مزایای MongoDB پرداخته شده است.
مزایا و معایب MongoDB چه هستند؟
در این بخش به شرح هر یک از مزایا و معایب MongoDB پرداخته شده است. ابتدا به مزایای این سیستم پایگاه داده پرداخته میشود.
مزایای MongoDB چیست ؟
شناخته شدن MongoDB به عنوان یکی از بهترین پایگاه دادههای NoSQL توسط اهل فناوری، بدون دلیل نیست و به سبب مزایایی است که این سیستم پایگاه داده فراهم میکند. در این بخش به شش جنبه مختلف مزایای MongoDB پرداخته شده است.
۱. پلتفرم توزیع شده داده ها
از طریق مراکز داده توزیع شده و فضای ابری، امکان اجرا و استفاده از MongoDB به گونهای فراهم میشود که بتوان به سطح جدیدی از دسترسپذیری و مقیاسپذیری رسید.
با حذف شدن زمان خاموشی و بدون نیاز به تغییر اپلیکیشن خود، مقیاس MongoDB به لحاظ حجم دادهها و توان عملیاتی (نرخ گذردهی) به طور ارتجاعی قابل انطباق است. این فناوری، انعطافپذیری کافی را برای مراکز داده مختلف به همراه انسجام مطلوب فراهم میآورد.
۲. امکان توسعه سریع و تکرارپذیر
با استفاده از MongoDB، ملزومات کسب و کار دیگر تحویل موفقیتآمیز پروژه را در یک سازمان تحت تاثیر قرار نخواهند داد. یک مدل داده انعطافپذیر به همراه طرحبندی پویا، رابط گرافیکی قدرتمند و ابزارهای خط فرمان، کار ساخت و تغییر برنامههای کاربردی را بسیار سرعت بخشیده است. تامین ذخیره خودکار در مانگو دی بی، امکان ادغام، یکپارچهسازی و تحویل مداوم را برای عملیات مولد فراهم میسازد. طرحوارههای رابطهای ایستا و عملیات پیچیده RDBMS اکنون به گذشته اختصاص دارند.
۳. مدل داده منعطف
MongoDB دادهها را در داکیومنتهای منعطف مشابه قالب JSON ذخیره میکند که باعث ساده شدن فرآیند افزایش دوام و تلفیق دادهها میشود. اشیاء موجود در کدهای اپلیکیشن به مدل سند محور نگاشته میشوند که در پی آن، کار با دادهها بسیار آسان خواهد شد.
با استفاده از پایگاه داده MongoDB ، بررسیهای نظارتی، دسترسی به دادهها، انبوهش پیشرفته و قابلیت اندیسگذاری توسعهیافته به هیچ عنوان تحت تاثیر قرار نخواهند گرفت. بدون نیاز به زمان خاموشی، میتوان طرحواره را به صورت پویا ویرایش کرد. با توجه به این قابلیت انعطافپذیری، نگرانی برنامه نویسان در خصوص تغییر دادهها بسیار کاهش پیدا میکند.
۴. کاهش هزینه کلی مالکیت
با استفاده از MongoDB، برنامه نویسان اپلیکیشن میتوانند وظایف خود را بهتر انجام دهند. همچنین، به واسطه سرویس ابری اطلس (Atlas) برای MongoDB، اعضای تیم عملیات هم میتوانند وظایف محوله را به خوبی اجرا کنند. بنابراین، با بهینه شدن کارها و همچنین به دلیل قابل اجرا بودن MongoDB روی اکثر سختافزارهای رایج، ارزان و در دسترس، هزینهها به میزان زیادی کمتر میشوند. هزینههای مربوط به استفاده تجاری از فناوری مانگو دی بی بر اساس تقاضا، به میزان استفاده، با عضویت سالانه و به همراه پشتیبانی ۲۴ ساعته ارائه میشوند.
۵. مجموعه قابلیتها و ویژگیهای ادغام شده
از MongoDB میتوان به دلیل امکان تجزیه-تحلیل و بصریسازی دادهها، خط لولههای جریان داده مبتنی بر رویداد، جستجوی متنی و مکانی، پردازش گراف و همچنین عملکرد درون-حافظهای انواع مختلفی از کاربردهای زمان واقعی استفاده کرد.
برای اینکه بتوان از طریق RDBMS به این قابلیتها دست یافت، نیاز به فناوریهای پیچیده اضافه و همچنین الزامات ادغامسازی مجزا وجود خواهد داشت.
۶. تعهد بلند مدت
توسعه فناوری MongoDB بسیار شگفتآور است و تعداد زیادی از شرکتهای تجاری، زیرساختهای خود را به این فناوری انتقال دادهاند. مانگو دی بی تا کنون بیش از ۳۰ میلیون بار دانلود شده است و بیش از ۵۰۰۰ مشتری از خدمات این فناوری در سطح سازمانی استفاده میکنند.
امکان پشتیبانی از زبان SQL در مانگو دی بی وجود ندارد. شیوه پرس و جو و کوئری زدن MongoDB روی داکیومنتها پویا است، چراکه این سیستم مدیریت دیتابیس مبتنی بر اسناد (داکیومنت) عمل میکند و میتواند به اندازه SQL کارایی داشته باشد. تنظیم مقیاس مانگو دی بی ساده است و نیازی به تبدیل یا نگاشت اشیای اپلیکیشن به اشیای پایگاه داده وجود ندارد. MongoDB حافظه داخلی را برای فراهمسازی دسترسی سریعتر به دادهها و ذخیرهسازی مجموعه کاری مستقر میکند.
معایب MongoDB چیست؟
با وجود کاراییها و فواید بسیار، پایگاه داده مانگو دی بی معایبی هم دارد که در ادامه فهرست شدهاند:
- در پایگاه داده MongoDB از حافظه زیادی برای ذخیرهسازی دادهها استفاده میشود.
- برای اندازه داکیومنت در MongoDB محدودیت وجود دارد (حداکثر ۱۶ مگابایت).
- در مانگو دی بی هیچ پشتیبانی برای تراکنش وجود ندارد.
معماری پایگاه داده NoSQL مانگو دی بی چیست ؟
اجزای اصلی معماری پایگاه داده MongoDB شامل موارد زیر میشوند:
- پایگاه داده (Database)
- کالکشن (Collection)
- داکیومنت (Document)
حال در ادامه به شرح مختصر هر یک از اجزای معماری پایگاه داده مانگو دی بی پرداخته شده است.
پایگاه داده در معماری MongoDB چیست ؟
به بیان ساده، پایگاه داده در معماری MongoDB را میتوان نگهدارنده فیزیکی برای دادهها نامید. هر یک از پایگاههای داده، مجموعه فایلهای مربوط به خودشان را در سیستم فایل دارند و به همراه چندین پایگاه داده موجود در یک سرور MongoDB واحد قرار میگیرند.
Collection در معماری مانگو دی بی چیست ؟
در MongoDB، گروهی از داکیومنتهای پایگاه داده را میتوان کالکشن (Collection) نامید. معادل کالکشن در سیستم مدیریت پایگاه داده رابطهای (RDBMS)، همان «جدول» (Table) است. تمام کالکشن در داخل یک پایگاه داده واحد قرار میگیرد.
برای کالکشنها، هیچ طرحوارهای (شمایی) وجود ندارد. در داخل کالکشن، داکیومنتهای مختلف میتوانند فیلدهای مختلفی داشته باشند، اما غالباً داکیومنتهای موجود در یک کالکشن دارای هدف یکسانی هستند یا برای رسیدن به هدف نهایی مشترکی در آن قرار گرفتهاند.
Document در معماری MongoDB چیست ؟
مجموعهای از جفتهای کلید-مقدار را میتوان به عنوان یک داکیومنت (Document | سند) در نظر گرفت. داکیومنتها با طرحوارههای پویا (Dynamic Schema) مرتبط هستند. مزیت داشتن طرحوارههای پویا این است که یک داکیومنت در یک کالکشن واحد ناچار نیست که همان ساختار یا فیلدهای مشترک را داشته باشد. همچنین، نوع فیلدهای مشترک در یک داکیومنت کالکشن میتوانند متفاوت باشند.
اکنون زمان آن فرا رسیده است تا برای درک بهتر پاسخ سوال «MongoDB چیست» به مقایسه این سیستم پایگاه داده با سایر سیستمها و روشهای مدیریت بانکهای اطلاعاتی پرداخته شود.
مقایسه MongoDB با سایر سیستم های پایگاه داده
در این بخش از مقاله «MongoDB چیست» مقایسه MongoDB با پایگاه دادههای مختلفی مثل پایگاه دادههای رابطهای، MySQL و Cassandra انجام شده است.
مقایسه MongoDB با سیستم های مدیریت پایگاه داده رابطه ای RDBMS
میتوان پایگاه داده NoSQL مانگو دی بی را مستقیماً با پایگاه دادههای 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 با کاساندرا
همانند موارد قبلی، مقایسه مانگو دی بی و کاساندرا در جدول زیر انجام شده است:
Cassandra | MongoDB |
سیستم پایگاه داده متن باز، توزیع شده و غیرمتمرکز است. | سیستم پایگاه داده رایگان، متن باز، چندپلتفرمی و مبتنی بر سند است. |
تنها میتوان آن را در جاوا نوشت. | میتوان آن را به زبانهای C++ ،C و جاوا اسکریپت پیاده سازی کرد. |
ستون محور است. | سند محور است. |
فاقد Triggerها است. | دارای Triggerها است. |
اندیسهای محدود شده ثانویه داراد. | اندیسهای ثانویه دارد. |
یکی دیگر از مواردی که در خصوص سوال «MongoDB چیست» مطرح میشود، ویژگیهای پایگاه داده مانگو دی بی است. بنابراین در ادامه به طور خلاصه به شرح و ارائه فهرستی از ویژگیهای MongoDB پرداخته شده است.
ویژگی های MongoDB چه هستند؟
در این بخش، برخی از ویژگیهای مهم و کلیدی سیستم پایگاه داده MongoDB به اختصار فهرست شدهاند:
- کوئریها: MongoDB از کوئریهای موردی (ad-hoc) پشتیبانی میکند.
- پشتیبانی از اندیس: هر فیلدی در سند (داکیونت) مانگو دی بی را میتوان اندیسگذاری کرد.
- همانندسازی (Replication): مانگو دی بی از همانندسازی یا تکرار Master-Slave پشتیبانی میکند. این سیستم پایگاه داده اپلیکیشنهای بومی را برای نگهداری چندین نسخه از دادهها به کار میگیرد. جلوگیری از بروز زمان خاموشی پایگاه داده یکی از ویژگیهای مجموعه نسخههای جایگزین (Replica) به حساب میآید، چرا که این سیستم پایگاه داده یک شارد (Shard) خودترمیم کننده دارد.
- سرورهای چندگانه: پایگاه داده MongoDB میتواند روی چندین سرور اجرا شود. نمونههای تکراری از دادهها برای محافظت از آنها در صورت وقوع مشکلات سختافزاری ایجاد میشوند.
- پارتیشنبندی خودکار پایگاه داده (Auto-Sharding): این پروسه، دادهها را بین چندین پارتیشن فیزیکی به نام «شارد» (Shard) توزیع میکند. با توجه به امکان شاردبندی، MongoDB دارای قابلیت توازن بار خودکار است.
- MapReduce: مانگو دی بی از قابلیت MapReduce و ابزارهای تجمعی (Aggregation) پشتیبانی میکند.
- رسیدگی به خرابی: در MongoDB، برطرف کردن موارد خرابی ساده است. تعداد زیادی از نسخههای جایگزین (یا همان Replicaها)، محاظت افزوده و دسترسپذیری دادهها را در مقابل بروز زمانهای خاموشی در اثر خرابی رکها، چندین خرابی در دستگاهها و خرابیهای مرکز داده یا حتی بروز مشکل در بخشهایی از شبکه را به دنبال دارند.
- GridFS: در مانگو دی بی میتوان بدون پیچیده کردن پشته خود، هر فایلی را با هر اندازهای ذخیرهسازی کرد. قابلیت GridFS فایلها را به بخشهای کوچکتر تقسیم میکند.
- پایگاه دادههای بدون طرحواره (Schema-Less): مانگو دی بی پایگاه دادهای بدون شِما یا بدون طرحواره به حساب میآید که به زبان C++ نوشته شده است.
- ذخیرهسازی مبتنی بر سند: در MongoDB از قالب BSON استفاده میشود که قالبی شیبه به JSON است.
- روالها (Procedures): جاوا اسکریپت برای MongoDB عملکرد مطلوبی دارد و پایگاه داده مانگو دی بی از این زبان به جای روالها استفاده میکند.
علت نیاز به مانگو دی بی چیست ؟
فناوری NoSQL به کار گرفته شده در MongoDB باعث شده است که امکان غلبه بر یکی از بزرگترین مشکلات و معایب سیستمهای سنتی پایگاه دادههای رابطهای یعنی همان «مقیاسپذیری» (Scalability) به وجود بیاید. با نیازهای همیشه در حال تحول کسب و کارهای تجاری، سیستمهای پایگاه داده آنها هم نیاز به بروزرسانی پیدا میکنند.
MongoDB امکان تنظیم مقیاس را به طرز استثنایی فراهم کرده است. مانگو دی بی فرآیند دریافت دادهها را بسیار سادهتر و همچنین امکان یکپارچهسازی خودکار و پیوسته را نیز فراهم کرده است. در کنار این مزایا، دلایل متعدد دیگری هم برای نیاز به استفاده از MongoDB وجود دارند که برخی از آنها در ادامه فهرست شدهاند:
- هنگام تنظیم مقیاس برنامه، در صورت استفاده از MongoDB هیچ نیازی به داشتن زمان خاموشی وجود نخواهد داشت.
- MongoDB پردازش داخل حافظه هم انجام میدهد.
- امکان جستجوی متن در پایگاه داده مانگو دی بی وجود دارد.
- قابلیت پردازش گراف نیز در MongoDB ارائه شده است.
- امکان کپیبرداری سراسری (Global Replication) در مانگو دی بی وجود دارد.
- استفاده از MongoDB دارای صرفه اقتصادی است.
علاوه بر این، کسب و کارهای تجاری به میزان زیادی در حال رسیدن به این حقیقت هستند که MongoDB برای نیازمندیهای تجاری یکی از بهترین گزینهها به حساب میآید. دلایل این مسئله در ادامه فهرست شدهاند:
- با استفاده از MongoDB میتوان به درستی فناوری را با دادهها ترکیب کرد و در امر رقابت به برتری دست یافت.
- مانگو دی بی برای کاربردهای حیاتی بسیار مناسب است؛ چرا که به میزان قابل توجهی خطرات و ریسکها را کاهش میدهد.
- MongoDB به میزان زیادی نسبت زمان به ارزش را بهبود میدهد و باعث میشود که هزینه کلی مالکیت بسیار کاهش پیدا کند.
- به وسیله پایگاه داده مانگو دی بی میتوان کاربردهایی را توسعه داد که پیادهسازی آنها به وسیله پایگاه دادههای سنتی امکانپذیر نیست.
دستورهای پراستفاده در آموزش MongoD
در این بخش با هدف آشنایی ابتدایی با دستورات مانگو دی بی و نحوه استفاده از این نوع پایگاه داده برای شروع، برخی از دستورهای پراستفاده و پایه MongoDB آموزش داده شدهاند.
ساخت دیتابیس در MongoDB
دیتابیس مانگو دی بی هیچگونه متُد یا تابعی برای ایجاد پایگاه داده ندارد. در mongoDB، پایگاه داده به صورت خودکار زمانی ایجاد میشود که مقادیری برای اولین بار در کالکشن تعریف شده، ذخیره شوند. با استفاده از دستور زیر میتوان یک پایگاه داده با نام «database_name» را در صورت عدم وجود چنین پایگاه دادهای ایجاد و انتخاب کرد:
1Use Database_name
حذف پایگاه داده در MongoDB
دستور زیر نیز برای حذف یک پایگاه داده به همراه تمام فایلهای مرتبط با آن مورد استفاده قرار میگیرد. این دستور روی پایگاه داده انتخاب شده فعلی موثر خواهد بود.
1db.dropDatabase()
ایجاد کالکشن در MongoDB
در MongoDB از دستور زیر برای ایجاد یک کالکشن استفاده میشود. معمولاً این کار لازم نیست، چرا که MongoDB کالکشنها را به طور خودکار زمانی ایجاد میکند که تعدادی داکیومنت درج (Insert) شده باشند:
1db.createCollection(name, options)
آرگومان name در اعلان فوق، از نوع رشتهای است و نام کالکشنی را مشخص میکند که قرار است ایجاد شود. در آرگومان Options هم نوع داکیومنت اندازه حافظه و اندیسدهی کالکشن را مشخص میکند و یک پارامتر اختیاری به حساب میآید.
نمایش کالکشن ها در MongoDB
زمانی که دستور زیر در MongoDB اجرا میشود، تمام کالکشنها در سرور نمایش داده خواهند شد. در شل (Shell) میتوان دستور زیر را برای این منظور وارد کرد:
1db.getCollectionNames()
عملگر $in در MongoDB چیست ؟
عملگر $in در MongoDB، داکیومنتهایی را انتخاب میکند که در آنها مقدار یک فیلد با مقدار آرایه مشخص شده برابر است. برای استفاده از عبارت ،$in باید از قالب زیر استفاده کرد:
1{ field: { $in: [<value1>, <value2>, … <valueN> ] } }
انعکاس یا Projection در مانگو دی بی چیست؟
اغلب به جای کل پایگاه داده، تنها نیاز به بخشهای خاصی از پایگاه داده وجود دارد. متُد Find() تمام فیلدهای یک داکیومنت را نمایش میدهد. لازم است فهرستی از فیلدها با مقدار ۰ یا ۱ تنظیم شود. عدد ۱ برای نمایش فیلد و صفر هم برای مخفی کردن آن استفاده میشود.
به این وسیله، اطمینان حاصل میشود که تنها فیلدهایی با مقدار ۱ انتخاب شدهاند. در میان مثالهای کوئری MongoDB، یک مثال وجود دارد که مطابق کوئری زیر، انعکاس را تعریف میکند:
1db.COLLECTION_NAME.find({},{KEY:1})
عملگر تاریخ یا Date در MongoDB
از دستور زیر برای مشخص کردن زمان استفاده میشود.
1Date()
2New Date()
خط اول دستور فوق، تاریخ فعلی را باز میگرداند و خط دوم نیز برای بازگرداندن تاریخ زمان حال به عنوان یک «شی تاریخ» (Date Object) استفاده میشود.
عملگر $not در MongoDB
$not یک عملیات منطقی NOT را در <عبارت-عملگر> مشخص شده انجام میدهد و تنها آن دسته از داکیومنتهایی را انتخاب میکند که با <عبارت-عملگر> همخوانی ندارند. این شامل داکیومنتهایی میشود که شامل فیلد مربوطه نمیشوند.
1{ field: { $not: { <operator-expression> } } }
دستورات حذف در مانگو دی بی
موارد زیر دستوراتی هستند که مربوط به قابلیتهای حذف در مانگو دی بی میشوند:
1collection.remove()
2db.collection.deleteOne()
3db.collection.deletemany()
دستوری که در خط اول قطعه کد بالا ملاحظه میشود، تنها داکیومنتی را حذف میکند که با فیلتر اعمال شده مطابقت دارد. دستور خط دوم تنها به میزان یک داکیومنت را حتی در صورتی حذف میکند که بیش از یک داکیومنت در دستور مربوطه انتخاب شده باشند. دستور خط آخر نیز تمام داکیومنتهای دارای مطابقت با فیلترگذاری انجام شده را حذف میکند.
دستور Where در مانگو دی بی
برای ارجاع یک رشته که دارای یک عبارت جاوا اسکریپت است یا ارجاع یک تابع کامل جاوا اسکریپت برای کوئری زدن در سیستم، میتوان از عملگر Where به صورت زیر استفاده کرد:
1 $where
دستور forEach در مانگو دی بی
تابع جاوا اسکریپت روی هر داکیومنت از نشانگر (Cursor) همزمان با تکرار نشانگر اعمال میشود:
1cursor.forEach(function)
چه زمانی میتوان از پایگاه داده NoSQL مانگو دی بی استفاده کرد؟
پایگاه داده NoSQL مانگو دی بی را میتوان به میزان گستردهای برای کاربردهای «کلان داده» (بیگ دیتا) و اپلیکیشنهای Hadoop جهت کار با دادههای بزرگ NoSQL که بخش اعظم کلان داده را در بر میگیرد، مورد استفاده قرار داد. MongoDB و SQL همگی فناوریهای مربوط به سیستمهای پایگاه داده به حساب میآیند، اما آنچه آنها را متمایز میسازد، کارایی و بهینگی آنها در جهان امروزی است.
همچنین، میتوان MongoDB را برای تجزیه-تحلیل شبکههای اجتماعی و جریان دادههای اپلیکیشنهای موبایل نیز استفاده کرد. قالب چنین دادههایی همگی غیر ساختارمند به حساب میآیند. پایگاه داده NoSQL مانگو دی بی در مدیریت محتوا، تولید و ارائه آن نیز به میزان گستردهای استفاده میشود. دیگر زمینههای کاربردی MongoDB نیز شامل مدیریت دادههای کاربران و مراکز داده میشوند.
چه شرکت هایی در حال استفاده از MongoDB هستند؟
در حال حاضر، MongoDB توسط تعداد قابل ملاحظهای از سازمانهای تجاری در حوزه IT برای برنامههای کاربردی یا سیستمهای ذخیرهسازی دادهها به کار گرفته میشود. طبق تحقیقات و بررسیهای انجام شده روی مانگو دی بی، بیش از ۴ هزار شرکت تجاری تایید کردهاند که از MongoDB برای مدیریت پایگاه داده خود استفاده میکنند.
در ادامه برخی از شرکتهایی فهرست شدهاند که در حال استفاده از MongoDB هستند:
- IBM Uber
- لیفت
- اینترکام
- سیتریکس
- Delivery Hero
- توییتر
- InVision
- HTC
- T-Mobile
- LaunchDarkly
- سونی
- سایر موارد
موارد استفاده و کاربردهای MongoDB چه هستند؟
در این بخش توضیحات لازم پیرامون هر یک از کاربردهای MongoDB ارائه شده است. ابتدا بهتر است هر یک از این کاربردها به اختصار فهرست شوند:
- ایجاد نمای واحد
- اینترنت اشیا
- تجزیه-تحلیل زمان واقعی
- خدمات پرداخت
- بازیهای کامپیوتری
ایجاد نمای واحد
میتوان به سرعت و به سادگی یک نمای واحد (Single View) را با هزینه کم در MongoDB ایجاد کرد. یک اپلیکیشن تک نمایی، دادهها را از منابع بسیاری جمعآوری و آنها را در یک مخزن مرکزی ذخیره میکند تا یک نمای واحد از همه چیز فراهم شود. MongoDB با مدل داکیومنت، طرحوارههای پویا و زبان کوئری واضح و رسایی که دارد، کار ایجاد نماهای واحد را تبدیل به فرآیندی ساده و آسان کرده است. ایجاد نمای واحد با مانگو دی بی در حوزههای خدمات مالی، دولتی، فناوریهای پیشرفته و فروشگاهداری بسیار کاربرد دارد.
اینترنت اشیا
مانگو دی بی میتواند در زمینه اینترنت اشیا (IoT) بسیار کاربردی و مفید باشد. MongoDB امکان «جذب دادهها» (Data Ingestion) را با سرعت بالا ارائه میدهد و تجزیه-تحلیل زمان واقعی را فراهم میسازد که همگی برای استفاده در حوزه اینترنت اشیا بسیار مفید هستند. شرکتهایی مثل Bosch و Thermofisher برای کاربردهای اینترنت اشیا از MongoDB استفاده میکنند.
تجزیه و تحلیل زمان واقعی
با MongoDB میتوان هر دادهای را در هر کجا و به صورت لحظهای با سرعت بالا تجزیه و تحلیل کرد. مانگو دی بی میتواند هر نوع دادهای را ذخیره کند و این کار را فارق از ساختار، قالب یا منبع و فارق از این مسئله انجام دهد که دادهها چقدر سریع تغییر میکنند.
MongoDB به گونهای طراحی شده است که بتوان با استفاده از سخت افزار رایج و ارزان قیمت هم از آن استفاده کرد. چه در مرکز داده و چه در فضای ابری و بدون نیاز به امکانات سخت افزاری و نرم افزاری اضافهتر، میتوان مانگو دی بی را به کار گرفت.
MongoDB میتواند در داخل همان پایگاه داده، هر نوع دادهای را با هر ساختاری تجزیه و تحلیل کند و بدون نیاز به استفاده از توان محاسباتی گران قیمت انبارههای داده، نتایج آنی ارائه دهد. مثلاً در یک شهر میتوان با استفاده از MongoDB دادههای مختلف را از سازمانهای دریافت و آنها را تجزیه-تحلیل کرد تا بتواند شرایطی مثل موقعیت مکانی اتوبوسها، تماسهای اضطراری و حتی توییتها را بهتر درک کرد و به آنها بهتر واکنش نشان داد.
خدمات پرداخت
برای پیشی گرفتن در عرصه رقابت، پلتفرمهای پرداخت باید تجربه کاربری منعطف، لحظهای و با کیفیتی را ارائه دهند. غولهای صنعت از برندهای بزرگ تجاری گرفته تا سازمانها و کسب و کارهای مختلف، از MongoDB به عنوان پشتوانه زیرساخت پرداخت همیشهفعال، همیشهایمن و همیشه در دسترس خود استفاده میکنند.
بازی های کامپیوتری
بازیهای کامپیوتری همواره به میزان زیادی به دادهها وابسته بودهاند. وجود دادهها برای عملکرد بهتر بازیها بسیار ضروری هستند. MongoDB در جنبههای مختلفی از پروفایلهای بازیکنان گرفته تا اندازهگیری مسافت (دورسنجی) و مطابقت با تابلوهای امتیازی در بازیهای رایانهای کاربرد دارد. قالب داده انعطافپذیر داکیومنت در MongoDB امکان تخمین زدن گنجایش یک بازیکن را به راحتی فراهم میکند.
همچنین میتوان امکانات و قابلیتهای افزودهای مثل دستاوردها، باز کردن قفل (آنلاک کردن) امکانات مبتنی بر میزان پیشرفت، پول داخل بازی، کلاسهای مربوط به ابزارها و وسایل جدید در بازی و بسیاری از موارد دیگر را به آیتمهای پروفایل بازیکنان اضافه کرد. در لایه داده میتوان از اقدامات امنیتی با درجه سازمانی برای حفظ ایمنی بازیکنان استفاده کرد. شرکتهایی مثل Sega و Faceit قابلیتهای مطلوب بازیسازی در MongoDB را به کار میگیرند.
آموزش نصب MongoDB در ویندوز ۱۰
اکنون زمان آن فرا رسیده است تا به آموزش نصب MongoDB در ویندوز ۱۰ پرداخته شود.
برای نصب دیتابیس مانگو دی بی در ویندوز ۱۰ باید گامهایی را دنبال کرد که در ادامه این بخش شرح داده شدهاند.
گام اول نصب MongoDB در ویندوز ۱۰
در مرحله اول باید به صفحه اصلی وب سایت رسمی MongoDB مراجعه و سپس روی گزینه Products و سپس Community Server کلیک کرد. لازم به ذکر است که احتمال دارد وب سایت مانگو دی بی با آیپی ایران باز نشود که در این صورت باید آیپی تغییر پیدا کند.
گام دوم نصب MongoDB در ویندوز ۱۰ : دانلود مانگو دی بی
در صفحه مربوط به دانلود نسخه Community Server مانگو دی بی، ابتدا باید اطمینان حاصل شود که مشخصات نسخه دانلودی در سمت راست صفحه با مشخصات سیستم ما مطابقت داشته باشد.
سپس باید روی گزینه Download کلیک کرد. فایل دانلود در حدود ۳۰۰ مگابایت حجم دارد.
گام سوم نصب MongoDB در ویندوز ۱۰
در این مرحله باید فایل دانلود شده را روی سیستم نصب کرد. در صورت عدم تغییر مسیر دانلود، این فایل را میتوان در شاخه Downloads ویندوز ۱۰ یافت. برای نصب MongoDB در ویندوز ۱۰، باید فایل دانلود شده را اجرا و مراحل نصب را طی کرد. در اولین صفحهای که پس از اجرای فایل نصب ظاهر میشود، باید روی گزینه Next کلیک کرد.
پس از کلیک کردن روی گزینه Next، در صفحه بعدی، باید گزینه موافقت با توافقنامه را کلیک کرد و به مرحله بعد رفت. در صفحه بعدی هم دو گزینه وجود دارد. اولین گزینه با نام «Complete»، مربوط به نصب کامل MongoDB است. گزینه دوم هم مربوط به نصب شخصیسازی شده آن میشود. بهتر است گزینه اول را انتخاب کرد.
گام چهارم نصب MongoDB در ویندوز ۱۰
با کلیک کردن روی گزینه Complete، مرحله بعدی مربوط به پیکربندی سرویس میشود. در این مرحله باید تنظیمات گزینشی لازم را برای پیکربندی MongoDB به عنوان یک سرویس انجام داد.
با فعال کردن گزینه «Install MongoDB as a Service»، این نرم افزار به عنوان یک سرویس ویندوز نصب خواهد شد و در صورت برداشتن تیک این گزینه، فقط MongoDB نصب خواهد شد و این نرم افزار به عنوان یک سرویس ویندوز نصب نخواهد شد.
نصب MongoDB به عنوان سرویس ویندوز دو حالت مختلف دارد:
- Run the service as Network Service user (اجرای سرویس به عنوان یک کاربر سرویس شبکه): این گزینه حالت پیشفرض انتخاب شده است. این گزینه در واقع حساب کاربری ویندوزی است که در ویندوز به صورت داخلی وجود دارد.
- Run the service as a local or domain user (اجرای سرویس به عنوان یک کاربر محلی یا کاربر دامنه)
- برای یک حساب کاربری محلی موجود، باید یک علامت نقطه را برای دامنه حساب مشخص کرد و نام حساب کاربری و رمز عبور آن نیز باید مشخص شود.
- برای یک کاربر دامنه موجود، باید دامنه حساب، نام حساب کاربری و رمز عبور آن را مشخص کرد.
- گزینه «Service Name»: این گزینه مربوط به مشخص کردن نام سرویس میشود. نام پیشفرض، MongoDB است. در صورتی که پیش از این سرویسی با نام مشخص شده وجود داشته باشد، باید نام دیگری را انتخاب کرد.
- گزینه «Data Directory»: این قسمت نیز برای مشخص کردن شاخه دادهها است که با «--dbpath» تناظر دارد. در صورتی که چنین شاخهای وجود نداشته باشد، نصب کننده شاخه مربوطه را ایجاد خواهد کرد و اجازه دسترسی به شاخه را برای کاربر سرویس فعال میکند.
- گزینه «Log Directory»: این گزینه مربوط به مشخص کردن محل ذخیره فایلهای گزارش (لاگ) است که به «--logpath» مربوط میشود. در صورتی که این شاخه وجود نداشته باشد، نصب کننده آن را ایجاد خواهد کرد و اجازه دسترسی به آن را برای کاربر سرویس فعال میکند.
پس از انجام تنظیمات مربوط به این بخش، برای ورود به مرحله بعدی نصب MongoDB در ویندوز گزینه Next را کلیک کرد.
گام پنجم نصب MongoDB در ویندوز ۱۰
گام پنجم نصب MongoDB در ویندوز ۱۰ مربوط به نصب رابط گرافیکی MongoDB Compass میشود. پیشتر در این مقاله توضیحات لازم پیرامون چیستی Compass ارائه شدند.
این مرحله اختیاری است و در صورت عدم تمایل میتوان تیک گزینه «Install MongoDB Compass» را غیرفعال کرد.
پس از کلیک کردن روی next، در مرحله بعدی باید روی گزینه Install کلیک کرد و به این ترتیب مانگو دی بی به همراه رابط Compass روی سیستم نصب میشود. برای خاتمه نصب در مرحله آخر باید روی گزینه Finish کلیک کرد.
چه افرادی باید آموزش MongoDB را دنبال کنند؟
بهطورکلی افراد زیر میتوانند به عنوان مخاطبان اصلی یادگیری MongoDB به حساب آیند:
- توسعه دهندگان نرم افزار
- معماران نرم افزار
- سرپرستان پروژههای نرم افزاری (ادمینها)
- متخصصان بانکهای اطلاعاتی و افراد حرفهای در زمینه تجزیه و تحلیل (Analytics)
- ادمینهای سیستم و متخخصان تحقیقات
حال در ادامه مقاله «MongoDB چیست» باید به معرفی یک دوره آموزشی کاربردی پرداخته شود تا علاقهمندانی که قصد یادگیری بیشتر و به کار بردن این پایگاه داده را در یک پروژه به صورت عملی دارند، بتوانند از آن استفاده کنند.
فیلم آموزش نود جی اس، انگولار و مونگو دی بی – پیاده سازی احراز هویت کاربر با Angular، Node.js و MongoDB
در این دوره آموزشی از ترکیب انگولار، نود جیاس و مونگودیبی استفاده شده و یک سایت ساده برای ورود کاربر ایجاد شده است. در ابتدا مفاهیم مقدماتی مورد نیاز ارائه شدهاند و سپس چگونگی ساخت مسیرها، تشخیص ربات، متریال، اعتبارسنجی مسیرها، نحوه اتصال Node.js به Angular و همچنین نحوه اتصال نودجیاس به MongoDB شرح داده شده است. در این دوره آموزشی، نحوه ساخت وب سایتی ساده و کوچک اما قدرتمند آموزش داده میشود. این فرادرس ۵ فصل را شامل میشود و بیش از ۵ ساعت محتوای ویدیویی دارد، مدرس آن هم دکتر محمدحسین نجات است.
- برای مشاهده فیلم آموزش نود جی اس، انگولار و مونگو دی بی + اینجا کلیک کنید.
بسیاری از صاحبان کسب و کارها علاوه سوال «MongoDB چیست» این سوال نیز در ذهنشان نقش میبندد که آیا استفاده از مانگو دی بی میتواند به رشد کسب و کارشان کمک کند؟
نقش MongoDB در رشد یک کسب و کار چیست؟
برخی از حقایق پیرامون سیستم پایگاه داده MongoDB به شرح زیرند:
- MongoDB پر استفادهترین سیستم پایگاه داده NoSQL به حساب میآید.
- یک ادمین پایگاه داده مانگو دی بی میتواند درآمد بسیار بالایی داشته باشد.
- انتظار میرود ارزش بازار Hadoop و NoSQL رشد چشمگیری در سالهای پیش رو داشته باشد.
جمعبندی
در این مقاله به این سوال رایج پاسخ داده شد که MongoDB چیست ؟ مانگو دی بی یک پایگاه داده NoSQL بسیار کاربردی است که برخی از بزرگترین سازمانهای تجاری جهان آن را بهکار گرفتهاند. در خصوص بعضی از قویترین ویژگیهای MongoDB، این سیستم پایگاه داده مجموعهای از ویژگیها و قابلیتهایی را برای سازمانهای تجاری جهت تحلیل دادههای بدون ساختار ارائه میکند که تا کنون به هیچ عنوان دیده نشدهاند.
به همین دلیل، آن دسته از افراد حرفهای که واجد شرایط هستند و در خصوص مباحث پایه و سطوح پیشرفته ابزارهای MongoDB مهارت لازم را دارند، بدون شک باید انتظار رشدی سریع و بزرگ را در مسیر حرفهای خود داشته باشند. با توجه به طبیعت قابل انعطاف و مقیاسپذیر پایگاه داده MongoDB، میتوان از آن در حوزههای مختلفی مثل شبکههای اجتماعی، ویدیو و سایر موارد استفاده کرد.
بسیار عالی ممنون از شما
خیلی ممون