MongoDB یکی از سیستمهای مدیریت پایگاه داده (DBMS) محبوب است که به صورت گسترده در جهان استفاده میشود. در این مقاله، ما به بررسی کامل MongoDB پرداخته و اطلاعات جامعی در مورد این سیستم مدیریت پایگاه داده ارائه خواهیم داد.
MongoDB یک پایگاه داده NoSQL است که برای ذخیره و مدیریت دادهها استفاده میشود. این سیستم متنباز و داکیومنتی به نام BSON (Binary JSON) را برای ذخیره دادهها استفاده میکند. MongoDB به عنوان یک دیتابیس انعطافپذیر و قابل اطمینان شناخته میشود و بسیاری از برنامهنویسان و توسعهدهندگان در سراسر جهان از آن به عنوان یک ابزار اصلی در پروژههای خود استفاده میکنند.
MongoDB چیست؟
تاریخچه
MongoDB توسط دوایت مریمن و الیوت هوروویتز ایجاد شد که در حین ساختن برنامه های کاربردی وب در DoubleClick، یک شرکت تبلیغاتی آنلاین که اکنون متعلق به شرکت گوگل است، با مشکلات توسعه و مقیاس پذیری با رویکردهای پایگاه داده رابطه ای سنتی مواجه شدند. نام پایگاه داده از این کلمه گرفته شده است. بسیار بزرگ برای نشان دادن ایده پشتیبانی از حجم زیادی از داده ها.
مریمن و هوروویتز در سال 2007 به تشکیل شرکت 10Gen برای تجاری سازی MongoDB و نرم افزارهای مرتبط کمک کردند. این شرکت در سال 2013 به MongoDB Inc تغییر نام داد و در اکتبر 2017 با نماد MDB عمومی شد.
DBMS به عنوان نرم افزار منبع باز در سال 2009 منتشر شد و از آن زمان به روز شده است.
سازمان هایی مانند شرکت بیمه MetLife از MongoDB برای برنامه های کاربردی خدمات مشتری استفاده کرده اند، در حالی که وب سایت های دیگری مانند Craigslist از آن برای بایگانی داده ها استفاده کرده اند. آزمایشگاه فیزیک سرن از آن برای جمع آوری و کشف داده ها استفاده کرده است. علاوه بر این، نیویورک تایمز از MongoDB برای پشتیبانی از یک برنامه فرم سازی برای ارسال عکس استفاده کرده است.
MongoDB یک برنامه مدیریت پایگاه داده NoSQL منبع باز است. NoSQL (نه تنها SQL) به عنوان جایگزینی برای پایگاه داده های سنتی رابطه ای استفاده می شود. پایگاه های داده NoSQL برای کار با مجموعه های بزرگی از داده های توزیع شده کاملاً مفید هستند. MongoDB ابزاری است که می تواند اطلاعات داکیومنت محور را مدیریت کند، اطلاعات را ذخیره یا بازیابی کند.
MongoDB برای ذخیره سازی داده های با حجم بالا استفاده می شود و به سازمان ها کمک می کند تا مقادیر زیادی از داده ها را ذخیره کنند و در عین حال عملکرد سریعی دارند. سازمان ها همچنین از MongoDB برای کوئری های موقت، نمایه سازی، تعادل بار، تجمیع، اجرای جاوا اسکریپت سمت سرور و سایر ویژگی ها استفاده می کنند.
زبان کوئری ساختاریافته (SQL) یک زبان برنامه نویسی استاندارد شده است که برای مدیریت پایگاه داده های رابطه ای استفاده می شود. SQL داده ها را به صورت طرحواره ها و جداول عادی می کند و هر جدول دارای ساختار ثابتی است.
معماری MongoDB به جای استفاده از جداول و ردیف ها مانند پایگاه داده های رابطه ای، به عنوان یک پایگاه داده NoSQL از مجموعه ها و داکیومنت تشکیل شده است. داکیومنت از جفت های key-value- pairs داده MongoDB تشکیل شده اند. مجموعه ها، معادل جداول SQL، حاوی مجموعه های داکیومنتی هستند. MongoDB از بسیاری از زبان های برنامه نویسی مانند C، C++، C#، Go، Java، Python، Ruby و Swift پشتیبانی می کند.
MongoDB چگونه کار می کند؟
محیط های MongoDB یک سرور برای ایجاد پایگاه داده با MongoDB در اختیار کاربران قرار می دهند. MongoDB داده ها را به عنوان رکوردهایی که از مجموعه ها و داکیومنت تشکیل شده اند ذخیره می کند.
داکیومنت حاوی داده هایی هستند که کاربر می خواهد در پایگاه داده MongoDB ذخیره کند. داکیومنت از جفت key و value تشکیل شده اند. آنها واحد اصلی داده در MongoDB هستند. داکیومنت شبیه به نشانه گذاری شی جاوا اسکریپت (JSON) هستند اما از نوعی به نام باینری JSON (BSON) استفاده می کنند. مزیت استفاده از BSON این است که انواع داده های بیشتری را در خود جای می دهد. فیلدهای این داکیومنت مانند ستون های یک پایگاه داده رابطه ای هستند. طبق داکیومنت MongoDB، مقادیر موجود می توانند انواع مختلفی از داده ها، از جمله داکیومنت دیگر، آرایه ها و آرایه های داکیومنت باشند. داکیومنت همچنین یک key اصلی را به عنوان یک شناسه منحصر به فرد ترکیب می کنند. ساختار یک سند با افزودن یا حذف فیلدهای جدید یا موجود تغییر می کند.
مجموعهای از داکیومنت مجموعه نامیده میشوند که به عنوان معادل جداول پایگاه داده رابطهای عمل میکنند. مجموعه ها می توانند حاوی هر نوع داده ای باشند، اما محدودیت این است که داده ها در یک مجموعه نمی توانند در پایگاه های داده مختلف پخش شوند. کاربران MongoDB می توانند چندین پایگاه داده با مجموعه های متعدد ایجاد کنند.
پوسته مونگو یک جزء استاندارد از توزیع های منبع باز MongoDB است. هنگامی که MongoDB نصب شد، کاربران پوسته mongo را به نمونه های در حال اجرا MongoDB خود متصل می کنند. پوسته مونگو به عنوان یک رابط تعاملی جاوا اسکریپت برای MongoDB عمل می کند که به کاربران اجازه می دهد داده ها را کوئری یا به روز کنند و عملیات اداری را انجام دهند.
یک نمایش دودویی از داکیومنت JSON مانند با فرمت ذخیره سازی سند و تبادل داده BSON ارائه می شود. اشتراک گذاری خودکار یکی دیگر از ویژگی های کلیدی است که داده ها را در مجموعه MongoDB قادر می سازد تا در چندین سیستم برای مقیاس پذیری افقی توزیع شود، زیرا حجم داده ها و نیازهای توان عملیاتی افزایش می یابد.
NoSQL DBMS از یک معماری اصلی واحد برای سازگاری داده ها استفاده می کند، با پایگاه های داده ثانویه که کپی هایی از پایگاه داده اولیه را نگهداری می کنند. عملیات به طور خودکار به آن پایگاه داده های ثانویه برای failover خودکار تکرار می شود.
چرا MongoDB استفاده می شود؟
ممکن است یک سازمان بخواهد از MongoDB برای موارد زیر استفاده کند:
ذخیره سازی. MongoDB می تواند حجم داده های بزرگ و بدون ساختار را ذخیره کند و به صورت عمودی و افقی مقیاس پذیر است. ایندکس ها برای بهبود عملکرد جستجو استفاده می شوند. جستجوها نیز توسط فیلد، محدوده و عبارت عبارت انجام می شود.
یکپارچه سازی داده ها. این داده ها را برای برنامه ها، از جمله برای برنامه های ترکیبی و چند ابری، یکپارچه می کند.
توصیف ساختارهای داده پیچیده. پایگاههای داده داکیومنت، جاسازی داکیومنت را برای توصیف ساختارهای تودرتو (یک ساختار در یک ساختار) امکانپذیر میسازد و میتواند تغییرات در دادهها را تحمل کند.
تعادل بار. MongoDB را می توان برای اجرای چندین سرور استفاده کرد.
نصب و راهاندازی MongoDB
نصب MongoDB بر روی سیستم
برای نصب MongoDB بر روی سیستم عامل خود، میتوانید به وبسایت رسمی MongoDB مراجعه کنید و نسخه مناسب برای سیستمتان را دانلود و نصب کنید. پس از نصب، شما میتوانید MongoDB را به صورت محلی روی سیستمتان اجرا کنید.
نصب ماژول MongoDB در JavaScript
برای شروع، شما باید ماژول MongoDB را در برنامهی JavaScript خود نصب کنید. برای انجام این کار، از مدیر بستههای npm یا yarn استفاده کنید. در ترمینال، دستور زیر را اجرا کنید:
npm install mongodb
اتصال به پایگاه داده MongoDB
بعد از نصب ماژول MongoDB، شما میتوانید به پایگاه داده متصل شوید. برای انجام این کار، میتوانید از کد زیر استفاده کنید:
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017'; // آدرس MongoDB
const dbName = 'mydb'; // نام دیتابیس
MongoClient.connect(url, function(err, client) {
if (err) throw err;
console.log("موفقیتآمیز به پایگاه داده متصل شد!");
const db = client.db(dbName);
// در اینجا میتوانید عملیاتهای دیگری انجام دهید
// مانند ایجاد مجموعه داده (collection) و افزودن اسناد
client.close(); // قطع اتصال پس از انجام عملیاتها
});
ایجاد مجموعه داده و افزودن اسناد
حالا که به پایگاه داده متصل شدید، میتوانید مجموعههای دادهای جدید ایجاد کرده و اسناد به آنها اضافه کنید. به عنوان مثال:
const collectionName = 'mycollection'; // نام مجموعه داده
db.createCollection(collectionName, function(err, res) {
if (err) throw err;
console.log(`مجموعه داده "${collectionName}" ایجاد شد!`);
const document = { name: "John", age: 30, city: "New York" };
db.collection(collectionName).insertOne(document, function(err, res) {
if (err) throw err;
console.log("یک سند به مجموعه داده اضافه شد.");
});
});
جستجو در دادهها
برای جستجو در دادهها، میتوانید از دستور find
استفاده کنید. مثلاً:
db.collection(collectionName).find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
});
بهروزرسانی و حذف دادهها
برای بهروزرسانی دادهها از updateOne
و updateMany
و برای حذف دادهها از deleteOne
و deleteMany
استفاده کنید.
این کد به شما یک شروع کلی برای تعامل با MongoDB در برنامههای JavaScript میدهد. شما میتوانید با استفاده از دستورات MongoDB دیگر، دادههای خود را مدیریت کنید و به پروژههای خود انعطافپذیری و قدرت اضافه دهید.
ویژگی های MongoDB
از ویژگی های MongoDB می توان به موارد زیر اشاره کرد:
همانند سازی. مجموعه replica دو یا چند نمونه MongoDB است که برای ارائه دسترسی بالا استفاده می شود. مجموعه های Replica از سرورهای اولیه و ثانویه ساخته شده اند. سرور اصلی MongoDB تمام عملیات خواندن و نوشتن را انجام می دهد، در حالی که نسخه ثانویه یک کپی از داده ها را نگه می دارد. اگر یک ماکت اولیه از کار بیفتد، از ماکت ثانویه استفاده می شود.
مقیاس پذیری. MongoDB از مقیاس بندی عمودی و افقی پشتیبانی می کند. مقیاس بندی عمودی با افزودن توان بیشتر به یک ماشین موجود کار می کند، در حالی که مقیاس بندی افقی با افزودن ماشین های بیشتر به منابع کاربر کار می کند.
تعادل بار. MongoDB تعادل بار را بدون نیاز به یک بار متعادل کننده جداگانه و اختصاصی از طریق مقیاس عمودی یا افقی انجام می دهد.
بدون طرحواره. MongoDB یک پایگاه داده بدون طرح واره است، به این معنی که پایگاه داده می تواند داده ها را بدون نیاز به طرح اولیه مدیریت کند.
ساختار داکیومنتی: MongoDB از فرمت BSON برای ذخیره دادهها استفاده میکند که اساساً یک نسخه باینری از JSON است. این ساختار به توسعهدهندگان اجازه میدهد دادهها را به صورت سلسله مراتب و انعطافپذیر ذخیره کنند.
شیوه استفاده از شمارهگذاری اتوماتیک: MongoDB از یک ویژگی به نام ObjectID
برای شمارهگذاری داکیومنت به صورت اتوماتیک استفاده میکند. این ویژگی به تطبیق و انطباق دادهها کمک میکند.
پشتیبانی از پرسمانهای پیشرفته: MongoDB قدرتمندترین پرسمانها را برای جستجوی دادهها فراهم میکند. این امکان به توسعهدهندگان اجازه میدهد دادههای خود را با سرعت بالا و دقت بیشتری جستجو کنند.
مزایای MongoDB
MongoDB چندین مزیت بالقوه ارائه می دهد:
بدون طرحواره. مانند سایر پایگاه های داده NoSQL، MongoDB به طرحواره های از پیش تعریف شده نیاز ندارد. هر نوع داده ای را ذخیره می کند. این به کاربران انعطافپذیری برای ایجاد هر تعداد فیلد در یک سند میدهد و مقیاسسازی پایگاههای داده MongoDB را در مقایسه با پایگاههای داده رابطهای آسانتر میکند.
سند محور. یکی از مزایای استفاده از داکیومنت این است که این اشیا به انواع داده های بومی در چندین زبان برنامه نویسی نگاشت می شوند. همچنین وجود داکیومنت جاسازی شده نیاز به اتصال به پایگاه داده را کاهش می دهد که می تواند هزینه ها را کاهش دهد.
مقیاس پذیری. یکی از عملکردهای اصلی MongoDB مقیاس پذیری افقی آن است که آن را به یک پایگاه داده مفید برای شرکت هایی تبدیل می کند که برنامه های کلان داده را اجرا می کنند. علاوه بر این، اشتراک گذاری به پایگاه داده اجازه می دهد تا داده ها را در میان مجموعه ای از ماشین ها توزیع کند. MongoDB همچنین از ایجاد zone داده بر اساس یک shared key پشتیبانی می کند.
پشتیبانی شخص ثالث. MongoDB از چندین موتور ذخیره سازی پشتیبانی می کند و API های موتور ذخیره سازی قابل اتصال را ارائه می دهد که به اشخاص ثالث اجازه می دهد موتورهای ذخیره سازی خود را برای MongoDB توسعه دهند.
تجمع. DBMS همچنین دارای قابلیتهای تجمیع داخلی است که به کاربران اجازه میدهد تا کد MapReduce را مستقیماً در پایگاه داده به جای اجرای MapReduce در Hadoop اجرا کنند. MongoDB همچنین شامل سیستم فایل خود به نام GridFS است که شبیه به سیستم فایل توزیع شده Hadoop است. استفاده از سیستم فایل در درجه اول برای ذخیره فایل های بزرگتر از محدودیت اندازه BSON یعنی 16 مگابایت در هر سند است. این شباهت ها به MongoDB اجازه می دهد به جای Hadoop استفاده شود، اگرچه نرم افزار پایگاه داده با Hadoop، Spark و سایر چارچوب های پردازش داده یکپارچه می شود.
معایب MongoDB
اگرچه مزایای ارزشمندی برای MongoDB وجود دارد، اما برخی از معایب آن نیز وجود دارد.
تداوم. کاربر با استراتژی خودکار شکست خود، تنها یک گره اصلی را در یک خوشه MongoDB راه اندازی می کند. اگر Master از کار بیفتد، گره دیگری به طور خودکار به Master جدید تبدیل می شود. این سوئیچ نوید تداوم را می دهد، اما آنی نیست -- ممکن است تا یک دقیقه طول بکشد. در مقایسه، پایگاه داده Cassandra NoSQL از چندین گره اصلی پشتیبانی می کند. اگر یک استاد پایین بیاید، دیگری ایستاده است و یک زیرساخت پایگاه داده بسیار در دسترس ایجاد می کند.
محدودیت ها را بنویسید. گره اصلی MongoDB همچنین سرعت نوشتن داده ها در پایگاه داده را محدود می کند. نوشته های داده ها باید روی Master ثبت شوند و نوشتن اطلاعات جدید در پایگاه داده با ظرفیت آن گره اصلی محدود می شود.
سازگاری داده ها. MongoDB یکپارچگی ارجاعی کامل را از طریق استفاده از محدودیتهای کلید خارجی ارائه نمیکند، که میتواند بر ثبات دادهها تأثیر بگذارد.
امنیت. علاوه بر این، احراز هویت کاربر به طور پیش فرض در پایگاه داده های MongoDB فعال نیست. با این حال، هکرهای مخرب تعداد زیادی از سیستمهای MongoDB ناامن را در حملات هدف قرار دادهاند، که منجر به اضافه شدن یک تنظیم پیشفرض شد که اتصالات شبکه به پایگاههای داده را در صورتی که توسط مدیر پایگاه داده پیکربندی نشده باشند، مسدود میکند.
MongoDB در مقابل RDBMS: چه تفاوت هایی دارند؟
سیستم مدیریت پایگاه داده رابطهای (RDBMS) مجموعهای از برنامهها و قابلیتهایی است که به تیمهای فناوری اطلاعات و سایرین اجازه میدهد تا یک پایگاه داده رابطهای را ایجاد، بهروزرسانی، مدیریت و در غیر این صورت تعامل کنند. RDBMS ها داده ها را در قالب جداول و ردیف ذخیره می کنند. اگرچه ضروری نیست، RDBMS معمولاً از SQL استفاده می کند.
یکی از تفاوت های اصلی بین MongoDB و RDBMS این است که RDBMS یک پایگاه داده رابطه ای است در حالی که MongoDB غیر رابطه ای است. به همین ترتیب، در حالی که اکثر سیستمهای RDBMS از SQL برای مدیریت دادههای ذخیرهشده استفاده میکنند، MongoDB از BSON برای ذخیرهسازی دادهها استفاده میکند - نوعی پایگاه داده NoSQL.
در حالی که RDBMS از جداول و ردیف ها استفاده می کند، MongoDB از داکیومنت و مجموعه ها استفاده می کند. در RDBMS یک جدول - معادل یک مجموعه MongoDB - داده ها را به عنوان ستون و ردیف ذخیره می کند. به همین ترتیب، یک ردیف در RDBMS معادل یک سند MongoDB است اما داده ها را به عنوان اقلام داده های ساختار یافته در یک جدول ذخیره می کند. یک ستون مجموعه ای از مقادیر داده را نشان می دهد که معادل یک فیلد در MongoDB است.
MongoDB همچنین برای ذخیره سازی سلسله مراتبی مناسب تر است.
پلتفرم های MongoDB
MongoDB در نسخه های community و تجاری از طریق MongoDB Inc در دسترس است. MongoDB Community Edition نسخه منبع باز است، در حالی که MongoDB Enterprise Server ویژگی های امنیتی اضافه شده، موتور ذخیره سازی درون حافظه، ویژگی های مدیریت و احراز هویت، و قابلیت های نظارت را از طریق Ops Manager به ارمغان می آورد.
یک رابط کاربری گرافیکی (GUI) به نام MongoDB Compass راهی برای کار با ساختار سند، انجام کوئریها، داده های فهرست و موارد دیگر را در اختیار کاربران قرار می دهد. اتصال MongoDB برای BI به کاربران امکان می دهد پایگاه داده NoSQL را به ابزارهای هوش تجاری خود متصل کنند تا داده ها را تجسم کرده و با استفاده از کوئریهای SQL گزارش ایجاد کنند.
به دنبال دیگر ارائه دهندگان پایگاه داده NoSQL، MongoDB Inc. پایگاه داده ابری را به عنوان سرویسی به نام MongoDB Atlas در سال 2016 راه اندازی کرد. Atlas بر روی AWS، Microsoft Azure و Google Cloud Platform اجرا می شود. بعداً، MongoDB پلتفرمی به نام Stitch را برای توسعه اپلیکیشن در MongoDB Atlas منتشر کرد و قصد دارد آن را به پایگاههای داده داخلی نیز گسترش دهد.
این شرکت همچنین پشتیبانی از تراکنشهای اتمی، سازگاری، جداسازی و دوام (ACID) چند سند را بهعنوان بخشی از MongoDB 4.0 در سال 2018 اضافه کرد. مطابقت با ویژگیهای ACID در چندین سند، انواع بارهای کاری تراکنشهایی را که MongoDB میتواند با دقت تضمین شده انجام دهد، گسترش میدهد. و قابلیت اطمینان
نتیجه
در این مقاله، ما به بررسی کامل MongoDB پرداختیم. از تاریخچه و ویژگیهای کلیدی تا نصب و راهاندازی، ساختار داده، عملیات CRUD، امنیت و مزایا و معایب این دیتابیس گفتیم.