یکی از مهمترینبخشهایپیادهسازییکاپلیکیشن یا وبسایت، انتخاب پایگاه داده است. پایگاه دادههای زیادی وجود دارند که برنامه نویسان طبق نیازها و اولویتهای سیستمی از آنها استفاده میکنند و ما در این مطلب قصد داریم دو پایگاه داده محبوب را بررسی کنیم. در این مطلب نگاهی به تفاوت MySQL و Mongo DBمیاندازیم.
پایگاه داده چیست ؟
ابتدا بهتر است کمی درباره مفهوم پایگاه داده صحبت کنیم. تصور کنید که دفتر تلفن را بر اساس نام، شماره و سایر اطلاعات افراد پرکردهاید. این دفترچه تلفن یک پایگاه داده محسوب میشود که شامل اطلاعات واردشده است و شما در زمان نیاز، میتوانید بر اساس نامها و یا شمارهها از آن استفاده کنید.
در سیستمهاینرمافزاری حجم بالای اطلاعات نیاز به نگهداری و مرتبسازی دارد تا در صورت لزوم، با پردازش سریع و از راههای مختلف بتوان به آنها دسترسی پیدا کرد. یک پایگاه داده دارای جدولهایی (Table) است که اطلاعات را در سطر و ستونهای خود و منطبق با استانداردهای تعریفشده جای میدهد. ساختار نگهداری از دادهها، در دیتابیسها متفاوت است.
پایگاه دادههای رابطه ای
پایگاه دادهها انواع مختلفی دارند که معروفترین آنها پایگاه دادههای رابطهای (Relational) و پایگاه دادههای NoSQL هستند. دیتابیسهای رابطهای داده را در جدول ذخیره کرده و دادهها از طریق ارجاع به سطر و ستونهای جدول قابلدسترسی هستند.
زبان استاندارد SQL (structured query language) برای کنترل و دسترسی به دادهها، در دیتابیسهای رابطهای بهکار میرود. به همین دلیل به آنها پایگاه دادههای SQL نیز میگویند. در این پایگاه دادهها از جدول، سطر و ستون، کلید اصلی، کلید خارجی، فهرست و غیره برای کار با دادهها استفاده میشود.
پایگاه داده های NoSQL
NoSQLکه مخفف عبارت Not Only SQL DataBase است، انواعی از پایگاه دادهها هستند که در سطحی وسیعتر از پایگاه دادههایSQL کار میکنند و با مدلهای مختلف دادهها مانند کلید – مقدار (Key-Value)، دادههای گرافی، مبتنی بر Document و غیره سروکاردارند. این پایگاه دادهها با مجموعههای عظیمی از دادههایتوزیعشده کار میکنند.
پایگاه داده MySQL چیست ؟
مای اس کیو ال، یکی از محبوبترین سیستمهای مدیریت پایگاه دادههای رابطه ای (Relational SQL Database Management System) است که متن باز بوده و در ساخت بسیاری از اپلیکیشنهای تحت وب به کار میرود. یک RDBMS به شما در موارد زیر کمک میکند:
پایگاه داده رابطه ای خود را با سطر و ستونهای لازم و فهرست مربوطه پیاده سازی کنید.
سطرهای جدولهای مختلف را یکپارچه کنید.
به دادههای پایگاه داده را از طریق دستورات SQL دسترسی داشته و آنها را جمع آوری کنید.
MySQL قدرتمند و سریع است و در پروژههای بزرگ برای کار با مجموعههای عظیم داده، به کار میرود. این سیستم برای هر سیستم عاملی مناسب بوده و زبانهای زیادی مانند PHP و Java را پشتیبانی میکند.
پایگاه داده Mongo DB چیست ؟
مونگو دیبی (Mongo DB) یکی از معروفترین پایگاه داده های No SQL است که ساختار منعطفی دارد و بیشتر در پروژههایی با حجم بالای دادهها استفاده میشود. این پایگاه داده پلتفرمی متن باز و رایگان است و با مدل دادههای (Document - Oriented) کار میکند و در ویندوز، مکینتاش و لینوکس قابل استفاده است.
دادهها درداکیومنتهای مربوطه با فرمت BSON ذخیره میشوند که مانند JSON است اما دادههای بیشتری را حمایت میکند. این مقادیر با دو کلید اولیه (Primary Key) و ثانویه (Secondary Key) مورد استفاده قرار میگیرند. برای آشنایی بیشتر با این پایگاه داده میتوانید مقاله mongo db چیسترا بخوانید.
تفاوت 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 برای اضافه کردن ستون جدید، تمام دیتابیس پیمایش میشود و ممکن است مشکلاتی نیز پیش بیاید.
جمع بندی
هر کدام از این پایگاه دادهها ویژگیها و کاربردهای خود را دارند. تفاوت MySQL و Mongo DB را بررسی کردیم و دانستیم که برای پشتیبانی از سیستمهای قدیمی و پردازشهای چند سطری، پایگاه دادههای رابطه ای مناسب به نظر میرسند. از طرفی ساختار منعطف Mongo DB نیز، به شما امکان ذخیره انواع دادهها را خواهد داد که ممکن است موردنیاز پیاده سازی پروژه باشد. اگر شما هم تجربه کار کردن با دیتابیسهای رابطه ای مانند MySQL و SQLServer یا Mongo DB را دارید نظر خود را با خوانندگان سون لرن در میان بگذارید.
۶ دیدگاه
ماهان۱۱ اسفند ۱۳۹۸، ۰۹:۰۶
ممنون از توضیحتون
فرزاد۰۶ اسفند ۱۳۹۸، ۱۴:۳۴
ممنون از مقاله مفید و خلاصه
محمدرضا۲۲ مهر ۱۳۹۸، ۰۵:۱۶
سلام
ایا در شبکههای اجتماعی بزرگ مثل تلگرام یا اینستا گرام از SQL استفاده میکنند یا NO SQL
ریحانه یزدانی۰۱ آبان ۱۳۹۸، ۰۷:۰۳
سلام
به نیازهای سیستمی و طراحی اپ بستگی داره. مثلا در اینستاگرام تا جایی که من اطلاع دارم از هر دو مدل دیتابیس استفاده میشه. (PostgreSQL و Cassandra).
در رسانه ای مثل لینکدین هم دیتابیسهای NoSQL کاربرد بیشتری دارن.
Amin۲۱ مهر ۱۳۹۸، ۱۸:۱۷
تو تمام سایتها صرفا تعریف و تفاوت و چنین چیزهایی گفته شده که مطلبی تکراریه مطلب شما هم ، اگر میومدین میگفتین این فایل نمونه دیتابیس Mongo DB ست و برای استفاده ازش باید از فلان دیتابیس استفاده کنید خیلی بهتر بود ، من خودم با my sql کار میکنم ولی تا حالا هر چی سرچ کردم هر چی پرسیدم از هر کسی که یه نمونه دیتابیس mongo نشونم بده یا الان من بخوام با چنین دیتابیسی کار کنم از چه نوع هاستی باید استفاده کنم در جواب فقط گفتن این تعریفشه خودشم برو سرچ کن ببین چیه!!!
ریحانه یزدانی۰۱ آبان ۱۳۹۸، ۰۶:۵۶
سلام
ما در این مطلب تئوری به این مسئله پرداختیم و قصد داریم مطالب آموزشی هم آماده کنیم. سرچ کردن که بهترین راهه اما اگر سوالی دارید لطفا واضح بپرسید تا پاسخ رو از مدرسهای مجموعه پیگیری کنیم.