مروری کلی بر MongoDB

مروری کلی بر MongoDB
آفلاین
user-avatar
عرفان حشمتی
26 اسفند 1399, خواندن در 8 دقیقه

امروزه در دنیا داده‌های زیادی برای ذخیره و جستجو وجود دارد. از تراکنش‌های بانکی گرفته تا ارسال پیام در شبکه‌های اجتماعی، همه این داده‌ها باید در جایی ذخیره شوند. در اینجا سیستم مدیریت پایگاه داده وارد میدان می‌شود که امکان ذخیره و بازیابی داده‌ها را به طور کارآمد برای ما امکان پذیر می‌کند. در میان سیستم‌های مدیریت پایگاه داده بی شماری که امروز وجود دارد، MongoDB یکی از سیستم‌های متن باز است. این سیستم به دلیل ارائه ویژگی‌های بی شمار به کاربران خود معروف است و همچنین از انواع مختلف داده پشتیبانی می‌کند. این یک فناوری پایگاه داده غیر رابطه‌ای است که در اواسط دهه 2000 رایج شد.

 تاریخچه 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 هستید، می‌توانید این دوره را فرا بگیرید.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو