آنچه در این مقاله میخوانید
MongoDB چیست؟
۲۷ تیر ۱۳۹۹
با گسترش سریع دادهها و نیاز به پردازش و ذخیرهسازی منعطف، دیتابیسهای سنتی رابطهای (RDBMS) دیگر پاسخگوی بسیاری از نیازهای نوین نرمافزاری نیستند. در این میان، دیتابیسهای NoSQL توانستهاند جایگاه ویژهای بهدست آورند. MongoDB یکی از پرکاربردترین و محبوبترین دیتابیسهای NoSQL است که بهدلیل ساختار مبتنی بر داکیومنت، سرعت بالا، مقیاسپذیری افقی و سهولت در مدیریت دادهها، در پروژههای مدرن بهطور گسترده مورد استفاده قرار میگیرد. در این مطلب با ویژگیها، قابلیتها و تفاوتهای MongoDB نسبت به RDBMS آشنا میشوید تا درک بهتری از موارد استفاده این ابزار قدرتمند داشته باشید.
در ادامه خواهید خواند:
- MongoDB چیست و چه تفاوتی با دیتابیسهای رابطهای دارد؟
- تفاوت MongoDB و RDBMS
- قابلیتهای MongoDB
- چه زمانی از MongoDB استفاده کنیم؟
- پشتیبانی MongoDB از زبانهای مختلف
- نصب MongoDB
- چه کسانی از MongoDB استفاده میکنند؟
- جمع بندی

MongoDB چیست و چه تفاوتی با دیتابیسهای رابطهای دارد؟
MongoDB معروفترین دیتابیس NoSQL است که متنباز و براساس داکیومنت (document-oriented) است. NoSQL به این معنا است که این دیتابیس، از نوع دیتابیسهای غیر رابطهای (non-relational) است. به عبارتی ساختار MongoDB همانند دیتابیسهایی که ساختارشان براساس جداول رابطهای است، ایجاد نشده است، اما روشهای کاملا متفاوتی برای ذخیرهسازی و بازیابی دیتا فراهم میکند. این فرمت ذخیرهسازی، BSON
نام دارد (همانند فرمت JSON
).
در زیر مثالی از ساختار یک داکیومنت ذخیرهشده در MongoDB را مشاهده میکنید:
{
title: 'Geeksforgeeks',
by: 'Harshit Gupta',
url: 'https://www.geeksforgeeks.org',
type: 'NoSQL'
}
دیتابیسهای براساس SQL، دادهها را در قالب جداول ذخیره میکند. این دادهها را در مدلهای از پیش تعریف شده ذخیره میکند که برای برنامههای در حال رشد امروزی، مناسب نیستند. برنامههای مدرن و امروزی، بیش از هر زمانی شبکهای و تعاملی هستند. این برنامهها روز به روز دیتاهای بیشتری را ذخیره میکنند، در عین حال نیاز دارند تا به دیتاهای بیشتری دسترسی پیدا کنند.
سیستم مدیریت دیتابیسهای رابطه (Relational Database Management System و یا RDBMS) گزینه مناسبی برای کار با big data، با توجه به طراحی آنها و عدم مقیاسپذیری از نظر افقی (افزودن سرورهای بیشتر)، نیست. اگر دیتابیس بر روی یک سرور اجرا شود، به محدودیت در افزایش مقیاس برخورد خواهد کرد. دیتابیسهای NoSQL مقیاسپذیرتر هستند و کارایی و عملکرد بهتری را فراهم میکنند. MongoDB از دیتابیسهای NoSQL است که میتوان با افزودن سرورهای بیشتر، آن را گسترش داد، همچنین کارآمدی و بهرهوری، با توجه به ساختار براساس داکیومنت، افزایش مییابد.
با هاست ابری MongoDB لیارا، ساخت و مدیریت پایگاه داده را ساده و سریع تجربه کنید.
✅ دیپلوی آنی بدون نیاز به تنظیمات پیچیده✅ امنیت بالا✅ مناسب برای اپلیکیشنهای مقیاسپذیر و real-time
خرید و راهاندازی دیتابیس MongoDB
تفاوت MongoDB و RDBMS
- RDBMS یک اسکیما (schema) یا طرح پایه معمولی دارد که تعداد جداول و رابطه میان آنها را نمایش میدهد، درحالی که MongoDB براساس داکیومنت است. در واقع در آن هیچ مفهومی تحت عنوان طرح پایه و یا رابطه وجود ندارد.
- تراکنشهای پیچیده در MongoDB پشتیبانی نمیشود، زیرا عملیات join پیچیده دردسترس نیستند.
- MongoDB اجازه ایجاد ساختارهای پیچیده و مقیاسپذیر براساس داکیومنت را میدهد. برای مثال، یک داکیومنت در یک کالکشن (collection) میتواند ۲ فیلد داده داشته باشد، درحالی که داکیومنت دیگر در همان کالکشن میتواند ۴ فیلد داده داشته باشد.
- MongoDB به دلیل تکنیکهای موجود در ذخیرهسازی و ایندکسکردن موثر، در مقابل RDBMS سریعتر است.
- یک سری مباحث وجود دارد که در هر دو دیتابیس مطرح است. چیزی که در RDBMS جدول نام دارد، در MongoDB تحت عنوان Collection شناخته میشود. به طور مشابه، یک
tuple
یک داکیومنت و ستون برابر فیلد است. MongoDB فیلد_id
(اگر جداگانه تعریف نشده باشد) را به صورت پیشفرض، برای داکیومنتها ایجاد میکند، این فیلد ۱۲ بایت هگزادسیمال است که یکتابودن یک داکیومنت را تضمین میکند. این فیلد همانند کلید اصلی در RDBMS است.
آموزش نصب MongoDB در اوبونتو
نصب MongoDB در اوبونتو
قابلیتهای MongoDB
- Document Oriented: در MongoDB داده اصلی و کلی را در کمترین تعداد داکیومنت ذخیره میکند، نه مثل RDBMS که آن را به چندین ساختار رابطهای تبدیل میکند. برای مثال، تمامی اطلاعات در رابطه با یک کامپیوتر را در یک داکیومنت، در کالکشنی با نام Computer ذخیره میکند و برای هر بخش به طور جداگانه، یعنی CPU، RAM، HARD DISK و … ساختار رابطهای ایجاد نمیکند.
- Indexing: بدون این قابلیت، دیتابیس برای اجرای هر کوئری مجبور است که هر داکیومنت در کالکشن را اسکن کند تا داکیومنت هماهنگ با کوئری را پیدا کند، که این شیوه خیلی کند است. بنابراین برای یک جستوجوی موثر و کارآمد، این ویژگی بهترین قابلیت است و MongoDB از آن برای پردازش حجم زیادی از دیتا در کمترین زمان استفاده میکند.
- Scalability: میتوان MongoDB را به صورت افقی (افزودن سرورهای بیشتر)، توسط sharding (پارتیشنبندی و تقسیم دیتا میان چندین سرور) گسترش داد. یک داده بسیار بزرگ به بخشهای کوچکتر، توسط shard key، تقسیم میشود، حتی این بخشهای کوچک داده نیز میان سرورهای مختلف پخش میشوند. در ضمن میتوان به یک دیتابیسی که در حال استفاده است، سرورهای بیشتری اضاف کرد.
- Replication and High Availability: دسترسیپذیری دادهها در MongoDB با ایجاد چندین کپی در سرورهای مختلف تضمین میشود. با ایجاد افزونگی دادهها، MongoDB از دیتابیس در مقابل خرابی سختافزاری، محافظت میکند. اگر یک سرور دچار مشکل شود، دادهها را میتوان از سرورهای فعال، که کپیای از داده در آنها وجود دارد، به دست آورد و یا به عبارتی دادههای از دست رفته را بازگردانی کرد.
- Aggregation: عملیاهای تجمیع و یا تراکم دادهها، رکوردهای دادهها را پردازش میکنند و نتایج محاسبه شدهای را ارائه میکنند. همانند عبارت
GROUPBY
در SQL. برخی دیگر از اینگونه عبارتها:sum
،avg
،min
،max
و …
چه زمانی از MongoDB استفاده کنیم؟
استفاده از MongoDB در موارد زیر، نسبت به RDBMS بهتر و مناسبتر است:
- Big Data: اگر حجم زیادی از دادههایی را در اختیار دارید که میخواهید آنها را در جداول ذخیره کنید، قبل از دیتابیسهای RDBMS به MongoDB فکر کنید. MongoDB قابلیتها و راهحلهایی برای پارتیشنبندی یا تقسیم دادهها و shardکردن دیتابیستان ارائه میکند.
- Unstable Schema: اضافهکردن یک ستون جدید در دیتابیسهای RDBMS، بسیار سخت است و نیاز است تا اسکیما دیتابیس را تغییر دهید، درحالی که MongoDB به اسکیما وابسته نیست. اضافهکردن فیلد جدید، بر داکیومنتهای قدیمی اثری نمیگذارد و در عین حال بسیار آسان است.
- Distributed data: از آنجایی که چندین کپی از دادهها در سرورهای مختلف ذخیره شده است، به هنگام خرابی سختافزاری، بازگردانی و ریکاوری دادهها بسیار سریع و امن خواهد بود.
با هاست پایتون لیارا، اجرای اپلیکیشنهای Python را بدون پیچیدگی آغاز کنید.
✅ دیپلوی سریع با پشتیبانی از کتابخانههای محبوب✅ اجرای پایدار در بستر امن و مقیاسپذیر✅ مناسب برای APIها
خرید و راهاندازی هاست Python
پشتیبانی MongoDB از زبانهای مختلف
در حال حاضر MongoDB با ارائه درایور رسمی برای زبانهای زیر، از آنها پشتیبانی میکند:
C
C++
C#
Java
NodeJS
Perl
PHP
Python
Ruby
Scala
Go
Erlan
نصب MongoDB
تنها نیاز دارید که به صفحه دانلود MongoDB مراجعه کنید و سیستمعاملتان را از میان ویندوز، لینوکس، Mac OS X و یا Solaris انتخاب کنید. اطلاعات بیشتر به همراه جزئیات نصب، در وبسایت MongoDB ارائه شده است.
برای ویندوزهای 64 بیتی، گزینههای کمتری وجود دارد. اگز از ویندوز 7 یا 8 و نسخههای جدیدتر استفاده میکنید، Windows 64-bit 2008 R2+
را انتخاب کنید. اگر از ویندوز XP و یا ویستا استفاده میکنید، پس Windows 64-bit 2008 R2+ legacy
را انتخاب کنید.
با هاست Node.js لیارا، اپلیکیشنهای جاوااسکریپتی خود را با نهایت سرعت و پایداری اجرا کنید.
✅ دیپلوی مستقیم از Git یا CLI✅ اجرای امن و مقیاسپذیر برای انواع پروژهها
خرید و راهاندازی هاست Node.js
چه کسانی از MongoDB استفاده میکنند؟
MongoDB یکی از محبوبترین پایگاههای داده NoSQL است که توسط شرکتها و سازمانهای بزرگی در سراسر جهان مورد استفاده قرار میگیرد. شرکتهایی مانند Adobe برای مدیریت حجم بالای دادههای کاربران، eBay برای پردازش سریع اطلاعات در پلتفرم تجارت الکترونیک، و Foursquare برای ذخیرهسازی دادههای مبتنی بر موقعیت مکانی، از MongoDB بهره میبرند. همچنین، Cisco و Ericsson از این دیتابیس در زیرساختهای پیچیده شبکهای خود استفاده میکنند. Shutterfly که یک سرویس ذخیرهسازی و چاپ عکس است، MongoDB را برای مدیریت میلیونها تصویر کاربران بهکار گرفته است. حتی شرکت بازیسازی معروف Electronic Arts (EA) نیز از MongoDB برای ذخیره دادههای کاربران و اجرای سریعتر بازیها استفاده میکند.
استفاده این برندهای مطرح نشاندهنده قدرت، انعطافپذیری و مقیاسپذیری بالای MongoDB در پروژههای متنوع و در مقیاس وسیع است.
با هاست PHP لیارا، اپلیکیشنهای PHP را بدون دردسر اجرا و مدیریت کنید.
✅ پشتیبانی از Composer✅ دیپلوی ساده، اتصال آسان به دیتابیس✅ مناسب برای توسعه سریع
خرید و راهاندازی هاست PHP
جمع بندی
MongoDB با ساختار منعطف و توانایی پردازش سریع دادهها، انتخاب مناسبی برای اپلیکیشنهایی است که با حجم بالایی از دیتا، ساختار متغیر و نیاز به مقیاسپذیری روبهرو هستند. پشتیبانی از زبانهای برنامهنویسی متنوع، قابلیت ایندکسگذاری پیشرفته، امکان توزیع دادهها و ایجاد افزونگی، همگی نشان از طراحی هوشمندانه آن دارند. اگر به دنبال یک دیتابیس قابلاعتماد و مدرن برای توسعه پروژههای بزرگ، تعاملی و دادهمحور هستید، MongoDB میتواند یکی از بهترین گزینهها برای شروع باشد.