زمان مطالعه: 7 دقیقه
با افزایش حجم دادهها در سراسر دنیا، کسب و کارها به دنبال روشهای جدیدی برای مدیریت این سیل عظیم دادهها و اطلاعات هستند. در گذشته برای مدیریت دادهها بیشتر از روشهای سلسله مراتبی یا شبکهای استفاده میشد. اما امروزه پایگاه دادههای رابطهای (SQL) و پایگاه دادههای غیر رابطهای (NoSQL) بیشتر از سایر موارد مورد استفاده قرار میگیرد. یکی از این پایگاههای داده غیر رابطهای، سیستم Mongo است که پرمخاطبترین پایگاه داده در مجموعه NoSQL به شمار میرود. همراه ما باشید تا به شما بگوییم MongoDB چیست و چه کاربردهایی دارد.
بیایید قبل از پاسخ به سوال MongoDB چیست، کمی راجع به پایگاه داده رابطهای (SQL) و غیر رابطهای (NoSQL) صحبت کنیم.
پایگاه داده SQL چیست؟
SQL فرم کوتاه عبارت Structured Query Language و به معنی زبان پرس و جوی ساختار یافته است. SQL محبوبترین و پرکاربردترین زبان برای کار با پایگاه داده به شمار میرود که به زبان برنامه نویسی خاصی محدود نمیشود. به این معنی که اکثر برنامه نویسان برای ارتباط با پایگاه داده به این زبان نیاز دارند.
وظیفه SQL یا پایگاه داده رابطهای، شکل دهی به دادهها در یک ساختار منظم به منظور ارتباط بهتر و دقیقتر با سایر دادههاست.
پایگاه داده NoSQL چیست؟
NoSQL، مخفف عبارت Not Only SQL و نوعی DataBase است که به صورت رابطهای عمل نمیکند. این پایگاه داده با حجم عظیمی از دادههای توزیع شده سر و کار دارد و جایگزینی برای پایگاههای رابطهای به شمار میرود.
مطلب DBMS را بخوانید تا به طور کامل با سیستم مدیریت پایگاه داده و ویژگیهای آن آشنا شوید.
MongoDB چیست؟
MongoDB یک سیستم مدیریت پایگاه داده رایگان و منبع باز است که از یک ساختار سندگرا استفاده میکند. این سیستم یکی از انواع بی شمار تکنولوژی پایگاه داده غیر رابطهای (non-relational) به حساب میآید که به عنوان یکی از برنامههای پایگاه داده NoSQL طبقه بندی میشود.
هدف این بود که MongoDB در اپلیکیشنهای مرتبط با دادهها و سایر کارهای پردازشی که با اطلاعات سر و کار داشتند و مدلهای رابطهای برای آنها مناسب نبودند، مورد استفاده قرار گیرد. این سیستم به جای اینکه مانند پایگاههای رابطهای از جداول مختلف استفاده کند، طراحی خود را بر مبنای مجموعه دادهها و اسناد انجام میدهد. در واقع، مونگو دیبی، شامل مجموعهای از مقادیر است که به صورت سندهایی با اندازههای مختلف، انواع متنوعی از دادهها را در خود جای دادهاند. MongoDB با این ویژگی میتواند دادههایی با ساختارهای پیچیده مانند دادههای سلسله مراتبی را در خود ذخیره کند.
میتوانید MongoDB رابه عنوان یکی از پرمخاطبترین پایگاههای داده در مجموعه NoSQL در نظر بگیرید. این پایگاه داده یک مدل منعطف، پویا و سندگرا ارائه میکند که قابلیت مقیاس پذیری بالایی دارد و در سیستمهای کلان داده (Big Data) به شدت مورد نیاز است.
تاریخچه MongoDB چیست؟
سایت Wikipedia تاریخچه mongodb را به صورت زیر بیان میکند:
شرکت نرم افزاری 10gen توسعه MongoDB را در سال 2007 به عنوان جزئی از یک پلتفرم برنامه ریزی شده به عنوان نوعی محصول خدماتی آغاز کرد. در سال 2009، این شرکت به یک مدل توسعه منبع باز تغییر یافت و خدماتی مانند پشتیبانی تجاری ارائه داد. در سال 2013، شرکت 10gen نام خود را به MongoDB تغییر داد و در سال 2017 به یک شرکت سهامی عام تبدیل شد. همکاری MongoDB با شرکت خدمات وب Alibaba Cloud در سال 2019، باعث شد که این شرکت بتواند به مشتریان خود راه حل MongoDB-as-a-a-service ارائه دهد.
ویژگیهای MongoDB چیست؟
این پایگاه داده برای تقسیم دادهها و مدیریت موثرتر آنها از سیستم Sharding استفاده میکند. در واقع، دیتابیس را به چند زیر بخش تقسیم میکند تا روند پاسخ دهی به درخواستهایی که از سمت سرور میآید، سریعتر و راحتتر انجام شود.
پایگاه داده Mongo، به دلیل مستند گرا بودن، در مقایسه با دیتابیسهای رابطهای، انعطاف پذیرتر و مقیاس پذیرتر است و میتواند بسیاری از نیازهای کسب و کار شما را برطرف کند.
در سیستم MongoDB ، دادهها با دو کلید اولیه و ثانویه قابل دسترسی هستند. علاوه بر این، هر فیلدی قابلیت کلید شدن را دارد. این امر زمان دسترسی به دادهها و پردازش آنها را بسیار سریعتر میکند.
یکی دیگر از خصوصیات MongoDB ، وجود سیستم همانند سازی (Replication) است. به این صورت که از یک داده به عنوان داده اصلی، تعدادی کپی تهیه شده و در سایر بخشهای سیستم پایگاه داده ذخیره میشود. در صورت آسیب دیدن یا از بین رفتن داده اصلی، دادههای کپی شده به عنوان داده جایگزین مورد استفاده قرار میگیرند.
نحوه کارکرد MongoDB چگونه است؟
اکنون میدانیم MongoDB چیست و چه ویژگیهایی دارد. در این بخش به شما خواهیم گفت این پایگاه داده چگونه کار میکند. رکوردهایی که سیستم MongoDB از آنها استفاده میکند، از اسنادی تشکیل شده که حاوی ساختار دادههای متشکل از field و value هستند. هر چند اسناد MongoDB مشابه ساختار JSON در جاوا اسکریپت است اما از متغیری به نام Binary JSON استفاده میکند که آن را BSON مینامند. به این ترتیب، MongoDB میتواند با انواع بیشتری از دادهها منطبق شود.
فیلدهای موجود در اسناد به ستونهای موجود در پایگاه داده رابطهای وابسته هستند. به همان اندازه که انواع داده وجود دارد مقادیر موجود در این اسناد نیز میتواند متفاوت باشد.
اسنادی که باید به عنوان یک شناساگر خاص، کلید اولیه MongoDB را تشکیل دهند، واحد پایه آن به شمار میروند. مجموعهها شامل گروهی از اسناد و عملیات هستند که معادل جداول موجود در پایگاههای داده رابطهای به حساب میآیند. هر چند که مجموعهها میتوانند حاوی هر نوع اطلاعاتی باشند، اما دادههای موجود در یک مجموعه نمیتواند در پایگاه دادههای مختلف منتشر شود.
پوسته Mongo یکی از اجزای استاندارد از توزیعهای منبع باز MongoDB است. وقتی MongoDB نصب شد، کاربران پوسته Mongo را به نمونههای در حال اجرای Mongo DB متصل میکنند. پوسته mongo به عنوان یک رابط تعاملی جاوا اسکریپت برای MongoDB عمل میکند و به کاربران امکان میدهد تا ضمن جستجو و به روز رسانی دادهها، عملیات اداری را نیز انجام دهند.
اکنون یک نمایش دو وجهی (binary) از اسناد JSON با فرمت ذخیره سازی اسناد و تبادل داده BSON ارائه میشود. یکی دیگر از ویژگیهای کلیدی، اشتراک گذاری خودکار است که این امکان را فراهم میکند تا دادههای موجود در مجموعه MongoDB در چندین سیستم پراکنده شوند. به این ترتیب مقیاس پذیری افقی در سیستم ایجاد شده و ظرفیت پذیرش دادهها افزایش پیدا میکند.
خوب است بدانید مقیاس پذیری به این معناست که در صورت افزایش حجم دادهها و اطلاعات، میتوانید آنها را در سیستمهای کامپیوتری مختلف پخش کنید، تا علاوه بر کاهش بار پردازشی یک سیستم، امکان پردازش حجم عظیمی از دادهها توسط دیتابیس فراهم شود.
مزایا و معایب MongoDB چیست؟
ملاحظه کردید که MongoDB یکی از محبوبترین و پرکاربردترین دیتابیسهای NoSQL است. اما استفاده از آن مانند بسیاری از DataBase های دیگر با مزایا و معیبی همراه است. در ادامه ابتدا به بررسی مزایا و سپس به بیان معایب این پایگاه داده میپردازیم.
مزایای MongoDB
- MongoDB مانند سایر پایگاههای داده NoSQL به طرحها و مدلهای از پیش تعریف شده نیاز ندارد و هر نوع دادهای را ذخیره میکند. به این ترتیب، برای کاربران انعطاف پذیری لازم جهت ساخت هر تعداد فیلد در یک سند فراهم میشود. بنابراین، سنجش پایگاههای داده Mongo در مقایسه با پایگاههای داده ارتباطی آسانتر است.
- یکی از مزایای استفاده از اسناد این است که این اجزا با استفاده از چندین زبان برنامه نویسی، انواع دادههای اصلی را ترسیم میکنند. همچنین وجود اسناد جاسازی شده درون پایگاه داده، نیاز به اتصال به DataBase را کاهش داده و میتواند در کاهش هزینهها موثر باشد.
- همان طور که اشاره کردیم، توانایی مقیاس پذیری افقی یکی از مهمترین ویژگیهای MongoDB است که آن را به یک پایگاه کارآمد و مفید برای شرکتهایی تبدیل میکند که برنامههای کلان داده را اجرا میکنند.
- ویژگی اشتراک گذاری، به پایگاه داده Mongo اجازه میدهد تا دادهها را در میان مجموعهای از سیستمها توزیع کند.
- MongoDB از تعدادی موتور ذخیره سازی پشتیبانی میکند. به این صورت که با ارائه API های موتور ذخیره سازی قابل اتصال، به کاربران امکان میدهد تا موتورهای ذخیره سازی خود را برای MongoDB توسعه دهند.
- مدل MongoDB به توسعه دهندگان کمک میکند تا با روش بصری با دادهها کار کنند. همچنین با ارائه حداکثر انعطاف پذیری، ضمن سازگاری و ایجاد تغیرات سریع، برای حمایت از وسیعترین انواع دادهها و روابط نیز مورد استفاده قرار میگیرد.
- با وجود معماری سیستمهای هوشمند توزیع شده در MongoDB ، توسعه دهندگان میتوانند اطلاعاتی که برنامهها و کاربران به آنها نیاز دارند را در اختیار آنها قرار دهند.
- پایگاه داده Mongo، سطوح در دسترس بودن، انسداد کار و مقیاس پذیری را فراهم میکند.
- این پایگاه داده در همه جا از Mainframe گرفته تا فضای ابر عمومی قابل اجراست. به بیان دیگر برای اجرا در هر نقطه کاملا آزاد است.
معایب MongoDB
- از آنجا که MongoDB دارای استراتژی FailOver است، کاربران تنها یک گره اصلی را در خوشه MongoDB نصب میکنند. در صورتی که گره اصلی خوب کار نکند، گره فرعی به طور خودکار جایگزین گره اصلی میشود.
- هر چند که این تغییر وضعیت، تداوم و پایداری برنامه را تضمین میکند، اما به صورت سریع اتفاق نمیافتد. در واقع صورت گرفتن آن شاید بیش از یک دقیقه زمان ببرد. در مقابل، پایگاه داده Cassandra NoSQL از چندین گره اصلی پشتیبانی میکند تا در صورتی که یکی از آنها به خوبی کار نکرد، گره دیگر وارد عمل شود، تا یک زیرساخت با قابلیت دسترسی بالا برای پایگاه داده موجود باشد.
- گره اصلی MongoDB ، سرعت نوشته شدن داده بر روی پایگاه داده را محدود میکند. چرا که نوشته شدن داده باید بر روی گره اصلی ثبت شود و نوشته شدن اطلاعات جدید بر روی پایگاه داده. با توجه به این موضوع، ظرفیت گره اصلی محدود خواهد بود.
- مشکل دیگر این است که فرآیند احراز هویت کاربر به صورت پیش فرض در پایگاه داده Mongo فعال نیست، هر چند این موضوع، نشانهای از محبوبیت این فناوری در بین توسعه دهندگان به شمار میرود. با این حال، هکرهای مخرب، بسیاری از سیستمهای غیر ایمن MongoDB را از طریق حملات باج گیرانه هدف قرار دادهاند. این اتفاق باعث شده بخشی به تنظیمات پیش فرض اضافه شود تا در صورتی که کسی غیر از مدیر پایگاه داده، به شبکهها دسترسی پیدا کرد، دسترسی او فورا قطع شود.
و در انتها…
همان طور ملاحظه کردید، MongoDB یکی از پایگاههای داده NoSQL است که انواع مختلفی از دادهها را پشتیبانی میکند و معمولا در سطوح بالای توسعه نرم افزار و برنامه نویسی مورد استفاده قرار میگیرد. امروز ضمن پاسخ به سوال MongoDB چیست، ویژگیها، نحوه کارکرد، مزایا و معایب این پایگاه داده را نیز بررسی کردیم.