مونگو دیبی
مونگودیبی (به انگلیسی MogoDB) یک پایگاه دادهٔ مستقل از بستر است که بر خلاف پایگاهدادههای معمول که بر پایهٔ جدول و پایگاه دادههای رابطهای (relational database) پیادهسازی میشوند، مبتنی بر سند (document-oriented) پیادهسازی شده و با استفاده از یک قالب پویای شبیه JSON به یکپارچهسازی دادهها میپردازد. مونگودیبی این قالب را BSON میخواند که در انواع خاصی از کاربردها، سریعتر از پایگاهدادههای رابطهای معمول عمل میکند.
لازم به ذکر است که مونگودیبی جزو پایگاهدادههای NoSQL دستهبندی میشود.
محتویات
تاریخچه
مونگودیبی نخستین بار در ۲۰۰۷ توسّط شرکت MongoDB inc ساخته و توسعه داده شد. این شرکت از سال ۲۰۰۹ به مدل توسعهٔ آزاد روی آورد و از طریق پشتیبانی خدمات خود برای شرکتها، کسب درآمد میکند.
مونگودیبی با استفاده از زبانهای برنامهنویسی سی، سیپلاسپلاس و جاوااسکریپت نوشته شده است.
تاکنون مونگودیبی توسّط مراکز و شرکتهای بزرگی چون لینکدن، سورسفورج، ایبی، فوراسکوئر، نیویورک تایمز و… به خدمت گرفته شده است. به علاوه مونگودیبی معروفترین پایگاه دادهها NoSQL محسوب میشود.
ویژگیها
تفاوت اصلی مونگودیبی با پایگاهدادههای معمول در نوع نگهداری دادهها و رابطهٔ میان آنهاست. مونگودیبی به جای این که از جدولها برای نگهداری دادههای خود استفاده کند، از چندین سند ساده برای این کار استفاده میکند. برای مثال به جای این که اطّلاعات نویسنده و عنوان و قیمت را درجدولهای متمایز مربوط به هم نگهداری کنیم، در مونگودیبی همهٔ اطّلاعات در یک سند نگهداری میشود.
همچنین مونگو قابلیت بالایی در مجموعههای تکراری دارد، مجموعهٔ تکراری مجموعهای است که شامل بیش از دو نسخه از یک داده باشد. معمولاً از این قابلیت به این صورت استفاده میشود که یک عضو اصلی، تمامی اعمال مربوط به خواندن و نوشتن را انجام میدهد و عضوهای دیگر، از عضو اصلی رونوشت تهیه میکنند. درصورتی که عضو اصلی در انجام کار خود ناکام بماند، دیگر عضوها طی یک فرآیند رأیگیری، یکی از عضوها را به عنوان عضو اصلی انتخاب میکنند تا عملیات عضو اصلی را انجام دهد.
مونگو از سیستم sharding برای پخش کردن بار پردازشی سامانه استفاده میکند که موجب میشود هنگام بروز خطای سخت افزاری، سامانه با مشکل مواجه نشده و به کار خود ادامه دهد. از دیگر ویژگیهای مونگو میتوان به مجموعههای پوش اشاره کرد. این مجموعهها اندازههای ثابتی دارند و زمانی که مجموعه به اندازهٔ مورد نظر رسید، مانند یک فهرست دایرهای عمل میکند. مونگو همچنین از کاهش نگاشت پشتیبانی میکند.
مزایا
- استفاده از ساختار سندمحور که باعث میشود اطّلاعات مربوط به یک نمونه، در سند آن و با استفاده از قالبی شبیه JSON ذخیره شوند.
- ساختار هر شی مشخّص است.
- مونگودیبی از ساختارهای پیچیده به دور است.
- استفاده از حافظهٔ داخلی دستگاه برای ذخیرهسازی کارها که موجب دسترسی سریعتر به دادهها میشود.
معایب
- نمایهگذاری فیلدها به دلیل استفاده از درخت دودویی، موجب اشغال فضای نسبتاً زیادی از حافظهٔ سامانه میشود.
- اندازهٔ هر سند به دلیل تغییرپذیری احتمالی در آینده، از ابتدا بسیار بالا درنظر گرفته شده و در مواردی که یک سند با اطّلاعات کم هم داشته باشیم، حجم زیادی فضا اشغال میشود.
- مونگو از تراکنشها پشتیبانی نمیکند.
- در برخی موارد، انعطافپذیری پرسوجو در مونگو از رقبای مبتنی بر Sql آن کمتر است.