مقدمه

با افزایش میزان داده‌ها در سراسر جهان، موجی از گرایش‌ها به سوی پایگاه‌های داده غیررابطه‌ای که اصطلاحا به آنها "NoSQL" می‌گویند بوجود آمده است. شرکت‌ها و سازمان‌ها به دنبال روش‌های جدید برای مدیریت سیلی از داده‌ها و ابزارها و سیستم‌های مدیریت پایگاه داده که جایگزین ومتمایز از سیستم‌های پایگاه داده سنتی هستند. در اینجا می‌خواهیم یکی از این پایگاه‌های داده به نام مونگو دی بی((MongoDb را توصیف کنیم.

مونگو چیست؟

به عنوان یک تعریف، MongoDB یک پایگاه‌داده منبع باز است که از یک مدل داده سندگرا و یک زبان پرس‌وجو غیر ساختاریافته استفاده می‌کند. این پایگاه‌داده امروزه یکی از قوی‌ترین سیستم‌های پایگاه‌های داده‌ای است. مونگو از این جهت به عنوان یک ابزار NoSQL محسوب می‌شود زیرا از ردیف‌ها و ستون‌های معمول در پایگاه‌های داده رابطه‌ای استفاده نمی‌کند. معماری مونگو براساس مجموعه‌ها و اسناد ساخته شده است. واحد پایه داده‌ها در این پایگاه داده شامل مجموعه‌ای از جفت‌های کلید و مقدار) Key-Value) می‌باشد. این معماری اجازه می‌دهد اسناد با ستونها و ساختارهای مختلف ساخته شوند. این پایگاه‌داده از نوعی فرمت ذخیره‌سازی اسناد به نام BSON استفاده می‌کند که نوع باینری اسناد به سبک JSON هستند. مدل داده‌ای که مونگو دنبال می‌کند بسیار انعطاف‌پذیر است و به شما اجازه می‌دهد داده‌های چند متغیره را بدون نیاز چندانی به ایندکس‌سازی، دسترسی به داده‌ها و قوانین اعتبار سنجی ترکیب و ذخیره نمایید. برای ایجاد تغییرات پویا در سیستم در خیلی از مواقع نیازی به متوقف کردن کل سیستم نیست. بنابراین تمامی این گزینه‌ها بدین معنی است که شما می‌توانید داده‌های خود را قدرتمندتر سازید تا اینکه بخواهید وقت خود را صرف آماده‌سازی داده برای پایگاه داده کنید.


معماری پایگاه داده NoSQL مونگو

پایگاه داده(Database): در تعریفی ساده می‌توان آن را به عنوان ظرف فیزیکی داده‌ها نامید. هر یک از پایگاه‌های داده دارای مجموعه‌ای از فایل‌های مختص به خود می‌باشند و چندین پایگاه‌داده می‌توانند بر روی یک سرور مونگو وجود داشته باشند.

مجموعه (Collection): گروهی از اسناد پایگاه‌داده یک مجموعه نامیده می‌شوند. معادل مجموعه در پایگاه‌های رابطه‌ای یک جدول است. کل یک مجموعه در یک پایگاه‌داده واحد وجود دارد. درون مجموعه، اسناد مختلف می‍‌توانند فیلدهای متنوعی داشته باشند، اما اغلب اسناد درون یک مجموعه هدف مشابه داشته یا در خدمت یک هدف نهایی هستند.

سند(Document): مجموعه‌ای از جفت‌های کلید-مقدار را می‌توان به عنوان یک سند در نظر گرفت.

 

 

وجه تمایز مونگو نسبت به پایگاه‌های داده رابطه ای

ما می‌توانیم بطور مستقیم پایگاه داده غیر رابطه ای مونگو را با رابطه ای مقایسه کنیم و اصطلاحات متنوع را درهر دو سیستم معادل‌سازی کنیم: جدول در پایگاه رابطه‌ای معادل مجموعه در مونگو است و به ترتیب ستون معادل فیلد، ردیف معادل سند و ترکیب دو یا چند جدول معادل اسناد تعبیه شده است . در جدول زیر معادل‌سازی‌ها به نمایش در آمده است.

 

MongoDB

RDBMS

Document oriented and non-relational database

Relational database

Document based

Row based

Field based

Column based

Collection based and key value pair

Table based

Gives Javascript client for querying

Doesn’t give Javascript for querying

Relatively easy to setup

Comparatively not that easy to setup

It is unaffected by SQL injection

It is quite vulnerable to SQL injection

Ideal for hierarchical data storage

Not good for hierarchical data storage

Has dynamic schema

Contains predefined schema

100 times faster

Through increasing RAM vertical scaling can happen

It is horizontally scalable through sharding

Through increasing RAM vertical scaling can happen



چرا به تکنولوژی مونگو نیازمندیم؟

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

  • در حالی که برنامه در حال مقیاس‍پ‌ذیری می‌باشد نیازی نیست که سیستم خاموش باشد
  • پردازش درون حافظه‌ای
  • جستجوی متن
  • پردازش تصویر
  • تکثیر داده‌ها
  • پایگاه داده مونگو بسیار به صرفه است

علاوه بر این کسب و کارهای گوناگون هر روز بیشتر به این امر اعتقاد پیدا می‌کنند که این پایگاه داده بهتر می‌تواند نیازهای آنها را برطرف نماید. این موارد شامل:

  • مونگو ترکیبی مطمئن از فناوری و داده را برای مزیت رقابتی فراهم می‌کند
  • برای کاربرد در مواقع بحرانی بسیار مناسب است زیرا ریسک را تا حد زیادی کاهش می‌دهد
  • ایجاد ارزش را سرعت بخشیده و هزینه مالکیت را کاهش می‌دهد
  • این پایگاه داده کاربردهایی را ایجاد می‌کند که از طریق پایگاه‌های داده سنتی و رابطه‌ای امکان پذیر نیست