MongoDB یکی از مهمترین دیتابیسهای غیررابطهای یا NoSQL در دنیا است که توسط بسیاری از توسعه دهندگان و شرکتهای نرم افزاری مورد استفاده قرار میگیرد. بسیاری از توسعه دهندگان Node.js و حتی Python از این دیتابیس به عنوان اصلیترین تکنولوژی مدیریت دیتابیس استفاده میکنند.
در این مطلب از وبسایت راکت ما قصد داریم به صورت کلی با دیتابیس MongoDB، ساختار و تاریخچه آن آشنا شویم.
همچنین اگر به یادگیری MongoDB علاقه دارید میتوانید دوره آموزش MongoDB را مشاهده کنید تا به صورت کامل با این تکنولوژی آشنا شوید.
تاریخچه MongoDB
10gen یک سازمان مستقر در نیویورک؛ MongoDB را در سال 2007 توسعه داد. نام MongoDB از کلمه Humongous برای پشتیبانی از مفهوم کار با مقدار زیادی داده به دست آمد. سال 2009 بود که MongoDB به عنوان یک نرمافزار متن باز به طور رسمی منتشر شد. بعدا در سال 2013 این شرکت به MongoDB Inc تغییر نام یافت.
در اکتبر 2017 این شرکت با نماد MDB به سهامی عام دست یافت. از زمان انتشار آن به عنوان یک سیستم مدیریت پایگاه داده متن باز در سال 2009، این سیستم به عنوان برترین سیستم مدیریت پایگاه داده NoSQL در جهان تبدیل شده است. امروزه شرکتهای Metlife ،IBM ،Twitter ،Zendesk ، Forbes، آزمایشگاه فیزیک CERN، نیویورک تایمز، گوگل و سایر شرکتهای مطرح از آن استفاده میکنند.
مقدمهای بر MongoDB
MongoDB یک DBMS متن باز است؛ یعنی یک سیستم مدیریت پایگاه داده که از انواع مختلف داده پشتیبانی میکند. به دلیل عملکرد بالا، مقیاس پذیری و در دسترس بودن شناخته شده است. این سیستم با استفاده از زبان C++ ساخته شده است و همچنین تفاوت زیادی با پایگاه دادههای رابطهای دارد. MongoDB مبتنی بر یک مدل پایگاه داده مستند گرا است و پرکاربردترین پایگاه داده NoSQL در جهان محسوب میشود.
بهره گیری از DOM به کار با دادههای بزرگ و سایر کارهای پردازش کمک میکند، این امر در یک مدل رابطهای خوب پیش نمیرود. برخلاف سایر پایگاههای داده رابطهای که از جداول و سطرها برای ذخیره داده استفاده میکنند، این سیستم دادهها را با استفاده از ساختار JSON در اسناد ذخیره میکند. این کار انعطاف پذیرتر و ساده تر صورت میگیرد. به طور خلاصه در اینجا با اصول مفاهیم MongoDB آشنا خواهید شد.
معماری پایگاه داده MongoDB NoSQL
بیایید معماری MongoDB و عملکردهای آن را بررسی کنیم. این موضوع حول محورهایی است که برخی از آنها عبارتند از:
Documents: یک رکورد از مجموعه MongoDB را میتوان به عنوان یک سند نام برد. اسناد همه نامها و مقادیر فیلدها را شامل میشوند و با الگوهای داینامیکی مرتبط هستند. به لطف بهره گیری از ساختار داینامیک آن، لازم نیست که سند یک مجموعه واحد دارای فیلدهای یکسان باشد.
Collection: اصطلاحی است که برای مجموعه اسناد MongoDB استفاده میشود. این عبارت معادل جدولهای RDMS مانند Oracle و MySQL است. اسناد متعددی میتواند در هر کالکشن وجود داشته باشد و هر سندی میتواند فیلدهای مختلفی را شامل شود. همچنین چندین کالکشن میتواند در یک پایگاه داده وجود داشته باشد.
Database: میتوان از آن به عنوان کانتینر کالکشنها یاد کرد. هر پایگاه داده مجموعهای از فایلهای خاص خود را دارد و چندین پایگاه داده میتوانند در یک سرور MongoDB وجود داشته باشند.
id_: این فیلدی است که برای هر سند MongoDB مورد نیاز است و نشان دهنده یک مقدار منحصر به فرد میباشد. اگر یک سند جدید بدون فیلد id_ ایجاد کنید، MongoDB آن را به صورت خودکار اضافه میکند و مانند یک کلید اصلی است.
JSON: مخفف JavaScript Object Notation میباشد که یک قالب متنی ساده برای خواندن و بیان دادههای ساخت یافته است. علاوه بر این، بسیاری از زبانهای برنامه نویسی از JSON پشتیبانی میکنند.
Fields: این نشان دهنده ستونی از پایگاه دادههای رابطهای است و یک سند میتواند شامل یک یا چند فیلد باشد. این فیلد با "id field_" متفاوت است، زیرا "id field_" برای شناسایی کامل اسناد در یک کالکشن استفاده میشود در حالی که "field "ممکن است مجموعهای از دادهها را در سند نشان دهد.
علاوه بر این در Mongo DB میتوانیم دادهها را هم به صورت آفلاین و هم به صورت آنلاین ذخیره کنیم. دادههای آفلاین را میتوان توسط Hadoop یا Enterprise Data Warehouse (EWD) مدیریت کرد. در حالی که دادههای آنلاین توسط MongoDB یا RDBMS مدیریت میشوند.
پلتفرمهای MongoDB
اگرچه از سیستمعاملهای مختلفی پشتیبانی میکند، اما سیستمعاملهای توصیه شده عبارتند از:
- Amazon Linux
- Debian 8
- RHEL/CentOS 6.2+
- SLES 1.2
- Ubuntu LTS 16.04
- Windows Server 2012 R2
چرا باید از MongoDB استفاده کرد؟
MongoDB یک پایگاه داده مبتنی بر داکیومنت است که به شما امکان میدهد تمام اطلاعات را فقط در یک داکیومنت ذخیره کنید. همچنین میتواند به شرکتها کمک کند تا دادههای بزرگ را ذخیره کنند. این بسیار انعطافپذیر است و چابکی را برای توسعه سریع برنامه شما فراهم میکند. علاوه بر این، چندین ویژگی پایگاه داده رابطهای مانند نمایه سازی نیز در دسترس هستند. همچنین در صورت خراب شدن سرور یک تمهید حفاظتی خودکار ارائه میشود.
MongoDB از موتورهای ذخیره سازی بی شمار و کوئریهای موقت پشتیبانی میکند؛ یعنی شما میتوانید بر اساس فیلد، عبارت منظم و کوئریها عمل جستجو را انجام دهید. علاوه بر این sharding در دسترس است، این روشی است که برای توزیع و تقسیم دادهها در محدوده خاصی استفاده میشود و میتواند در shardهای مختلف واقع در سرورهای مختلف ذخیره شود. این کار به رسیدگی کردن و مدیریت کوئریها کمک زیادی میکند.
محدودیتهای MongoDB
این سیستم علی رغم داشتن مزایای بسیار، نقاط ضعف اندکی هم دارد. استراتژی خرابی اتوماتیک آن به کاربران امکان میدهد تا یک master node در MongoDB راه اندازی کنند. اگر گره اصلی خراب شود، گره slave به طور خودکار به master تبدیل میشود. هرچند این عمل آنی نیست و معمولا یک یا دو دقیقه طول میکشد. افزودن دادهها به پایگاه داده نیز توسط ظرفیت گره اصلی محدود میشود.
برخی از اشکالات دیگر این است که از طریق استفاده از محدودیتهای کلید خارجی، یکپارچگی کامل در ارجاع فراهم نمیشود و مصرف داده بالا میرود. به غیر از این، محدودیتهای دیگری نیز وجود دارد که به تجربه کاربران برمیگردد. مانند اجرای برخی عملیات که ممکن است کل پایگاه داده شما را قفل کند و شما باید چندین مورد را به صورت دستی به روز کنید.
آیا مبتدی هستید؟ پس این نکات را به ذهن خود بسپارید!
اگر برای اولین بار از MongoDB استفاده میکنید، نکاتی که در زیر ذکر شده میتوانند با ارائه ایدههایی در مورد MongoDB به شما کمک کنند.
- این یک پایگاه داده مستند گرا است؛ به این معنی که به جای سطرها و جداول باید با داکیومنتها و کالکشنها کار کنید.
- جایگزینی برای MySQL نیست، در واقع ممکن است از آنها در کنار هم استفاده کنید.
- سرور آن رایگان است و در مک، ویندوز، لینوکس و سولاریس قابل دسترس میباشد.
- ممکن است هنگام دسترسی به اسناد خاصی که مرتبا بازدید کردهاید، سرعت بالایی داشته باشید. این اتفاق میافتد زیرا مواردی که اخیرا در حافظه RAM به آنها دسترسی پیدا شده، ذخیره میکند.
- MongoDB از چندین موتور مانندWired Tiger ، MMAP v1 و in-memory storage engine پشتیبانی میکند.
- از تراکنشهای چند داکیومنتی پشتیبانی نمیکند.
- برای جلوگیری از اتلاف دادهها در صورت خرابیهای فاجعه بار، باید پشتیبان گیری به موقع انجام شود.
- برای افزایش ظرفیت خواندن یا نوشتن ممکن است از sharding استفاده کنید اما sharding زودرس میتواند عملکرد را پایین بیاورد.
جمع بندی
محدودیتهای MongoDB هرچه باشد، با مزایایی که دارد آنها را تحت الشعاع قرار میدهد. MongoDB برای شرکتهایی که به پایگاه دادههای عظیم با ذخیره داده schema-less نیاز دارند بسیار کاربردی و ضروری است. برای ایجاد پلتفرمهای تجزیه و تحلیل، سیستمهای مدیریت محتوا، پلتفرمهای وبلاگ نویسی و مواردی از این دست عالی عمل میکند. همچنین میتواند در ساخت درگاههای تجارت الکترونیکی، فضای ذخیره سازی متا دیتا و برنامههای مبتنی بر مکان مفید واقع شود.
بنابراین این مروری کلی بر یکی از پرطرفدارترین پایگاه دادههای NoSQL در جهان بود. در ضمن اگر علاقه مند به یادگیری بیشتر MongoDB هستید، میتوانید این دوره را فرا بگیرید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید