
تفاوت MySQL و Mongo DB چیست؟
"یکی از مهمترین بخشهای پیادهسازی یک اپلیکیشن یا وبسایت، انتخاب پایگاه داده است. پایگاه دادههای زیادی وجود دارند که برنامه نویسان طبق نیازها و اولویتهای سیستمی از آنها استفاده میکنند و ما در این مطلب قصد داریم دو پایگاه داده محبوب را بررسی کنیم. در این مطلب نگاهی به تفاوت MySQL و Mongo DB میاندازیم."
پایگاه داده چیست ؟
ابتدا بهتر است کمی درباره مفهوم پایگاه داده صحبت کنیم. تصور کنید که دفتر تلفن را بر اساس نام، شماره و سایر اطلاعات افراد پرکردهاید. این دفترچه تلفن یک پایگاه داده محسوب میشود که شامل اطلاعات واردشده است و شما در زمان نیاز، میتوانید بر اساس نامها و یا شمارهها از آن استفاده کنید.
در سیستمهای نرمافزاری حجم بالای اطلاعات نیاز به نگهداری و مرتبسازی دارد تا در صورت لزوم، با پردازش سریع و از راههای مختلف بتوان به آنها دسترسی پیدا کرد. یک پایگاه داده دارای جدولهایی (Table) است که اطلاعات را در سطر و ستونهای خود و منطبق با استانداردهای تعریفشده جای میدهد. ساختار نگهداری از دادهها، در دیتابیسها متفاوت است.
پایگاه داده های رابطه ای
پایگاه دادهها انواع مختلفی دارند که معروفترین آنها پایگاه دادههای رابطهای (Relational) و پایگاه دادههای NoSQL هستند. دیتابیسهای رابطهای داده را در جدول ذخیره کرده و دادهها از طریق ارجاع به سطر و ستونهای جدول قابلدسترسی هستند.
زبان استاندارد SQL (structured query language) برای کنترل و دسترسی به دادهها، در دیتابیسهای رابطهای بهکار میرود. به همین دلیل به آنها پایگاه دادههای SQL نیز میگویند. در این پایگاه دادهها از جدول، سطر و ستون، کلید اصلی، کلید خارجی، فهرست و غیره برای کار با دادهها استفاده میشود.
پایگاه داده های NoSQL
NoSQL که مخفف عبارت Not Only SQL DataBase است، انواعی از پایگاه دادهها هستند که در سطحی وسیعتر از پایگاه دادههای SQL کار میکنند و با مدلهای مختلف دادهها مانند کلید – مقدار (Key-Value)، دادههای گرافی، مبتنی بر Document و غیره سروکار دارند. این پایگاه دادهها با مجموعههای عظیمی از دادههای توزیعشده کار میکنند.
دیتابیس MongoDB چیست؟
دیتابیس MongoDB یک پایگاه داده مبتنی بر NoSQL است که به صورت منبع باز برای ذخیره سازی حجم عظیمی از داده های کامپیوتری مورد استفاده برنامه نویسان قرار می گیرد. این سیستم مدیریت دیتابیس (DBMS) از الگوهای داینامیک برای مدیریت داده استفاده می کند؛ به عبارت دیگر برنامه نویس بدون نیاز به تعریف ساختارهایی مانند فیلد، تایپ یا Value می تواند رکوردهای خود را ایجاد کند. البته به خاطر داشته باشید که رکورد در این دیتابیس وجود ندارد و از Document یا همان اسناد به جای آن استفاده می شود.
علاوه بر این، دیتابیس MongoDB امکان ایجاد تغییر در ساختار رکوردها را نیز در اختیار برنامه نویس قرار می دهد. در حقیقت آنها می توانند با اضافه نمودن فیلدهای جدید یا حذف کردن موارد قبلی، ساختار اسناد موجود در این دیتابیس را تغییر دهند.
معایب دیتابیس MongoDB
-
خاصیت ACID (تجزیه ناپذیری، هم خوانی، انزوا و پایایی ) در دیتابیس مانگو دی بی در مقایسه با دیگر سیستم های مدیریت داده رابطه ای (RDBMS) خیلی قدرتمند نیست.
-
تراکنش هایی (Transaction) که از سیستم دیتابیس MongoDB استفاده می کنند بسیار پیچیده هستند.
-
در دیتابیس مانگو دیبی بر خلاف سیستم های RDBMS هیچ شرطی برای ذخیره توابع یا Stored Procedure وجود ندارد بنابراین شما نمی توانید منطق کسب و کار را در پایگاه داده پیاده سازی کنید.
معایب دیتابیس MySQL
-
تراکنش های مربوط به کاتالوگ سیستم (System Catalog) در این دیتابیس مطابق با خاصیت ACID نخواهد بود.
-
خرابی سرور در برخی اوقات می تواند سیستم کاتالوگ را تحت تاثیر قرار داده و آن را از دسترس خارج کند.
-
خاصیت Stored Procedure در این دیتابیس قابل کش (Cacheable) نیست.
-
جداول MySQL که برای رویه ها (Procedures) و تریگرها (Triggers) استفاده می شوند در اکثر اوقات قفل (Pre-locked) هستند.
تفاوت MySQL و Mongo DB چیست ؟
حال که به یک دید کلی از هر دو پایگاه داده دست پیدا کردیم بهتر است تفاوت MySQL و Mongo DB را بررسی کنیم.
mysql سابقه ای 20 ساله دارد و در بسیاری از پرژه های ناسا، پروژه های ارتشی و کمپانی هایی مانند یوتیوب و نتفلیکس استفاده شده است. Mongo DB حدود 10 سال است که معرفی شده و در پروژه های بزرگی مانند توییتر و سونی نیز به کار رفته است.
در mysql ساختار داده ها به شکل جدول است و برای دسترسی به داده ها از دستورات sql استفاده میشود. اما درMongo DB داده ها به شکل اسنادی ذخیره میشوند که میتوانند انواع مختلفی از داده را داشته باشند و توسط کلید می توان به این مقادیر دست پیداکرد. درواقع نوع ذخیره داده ها (Key-Value) است.
اگر ایندکس داده ای پیدا نشود، mysql به طور خودکار تمام جدول را جستجو میکند تا ایندکس مربوطه را پیدا کند. در مونگو دیبی نیز همه اسناد موجود در یک مجموعه جستجو میشوند تا اسناد مرتبط با داده خواسته شده پیدا شود.
انجمن های (Community) این سیستم، بسیار گسترده و در دسترس است. درحالیکه Mongo DB به علت اینکه سابقه کمتری نسبت به MySQL دارد انجمن های پرسش و پاسخ کمتری دارد.
اگر قصد استفاده از دیتابیس های رابطه ای را دارید MySQL گزینه بسیار مناسبی است. اما سیستمهایی که قبلا بر مبنای این دیتابیس ها پیاده سازی شده اند به راحتی قابل انتقال به دیتابیس Mongo DB نیستند. از طرفی مونگو دیبی در مواردی مانند مدیریت محتوا، ایترنت اشیا، اپلیکیشن های موبایل و غیره میتواند گزینه مناسبی باشد.
مونگو دیبی ساختار جدولی ندارد و به نوعی Schema Free است. به همین دلیل اضافه کردن ساختار یا ویژگی های جدید تاثیری روی سایر ساختارها ندارد. درحالیکه در mysql برای اضافه کردن ستون جدید، تمام دیتابیس پیمایش میشود و ممکن است مشکلاتی نیز پیش بیاید.
ارسال دیدگاه