برنامه نویسان در توسعه وب و اپلیکیشن از پایگاه دادههای مختلفی استفاده میکنند. پایگاه دادههای مبتنی بر SQL و یا NoSQL طبق نیازمندیهای سیستم و اولویت برنامه نویسان کاربردهای مختلفی دارند. در این مطلب به توضیح پایگاه دادهها و انواع آنها میپردازیم. سپس یاد میگیریم که پایگاه داده mongo db چیست و چه کاربردهایی دارد.
پایگاه داده چیست؟
قبل از اینکه بدانیم mongo db چیست بهتر است با مفهوم پایگاه داده و انواع آن آشنا شویم. پایگاه داده به ذخیره و دسته بندی اطلاعات گفته میشود به نحوی که دسترسی، مدیریت و به روزرسانی این اطلاعات راحت باشد. تصور کنید که دفتر تلفن را بر اساس نام، شماره و سایر اطلاعات افراد پر کرده اید. این دفترچه تلفن یک پایگاه داده محسوب میشود که شامل اطلاعات وارد شده است و شما در زمان نیاز، میتوانید بر اساس نامها و یا شمارهها از آن استفاده کنید.
در سیستمهای نرم افزاری حجم بالای اطلاعات نیاز به نگهداری و مرتب سازی دارد تا در صورت لزوم، با پردازش سریع و از راههای مختلف بتوان به آنها دسترسی پیدا کرد. یک پایگاه داده دارای جدول هایی (Table) است که اطلاعات را در سطر و ستونهای خود و منطبق با استانداردهای تعریف شده جای میدهد. ساختار نگهداری از داده ها، در دیتابیسها متفاوت است.
انواع پایگاه داده ها
در گذشته پایگاه دادهها به شکل سلسله مراتبی و یا شبکه ای وجود داشتند. اما امروزه پایگاه دادههای رابطه ای (Relational)،SQL و NoSQL بیشتر مورد استفاده قرار میگیرند. شیوه دسترسی به اطلاعات موجود در این پایگاه دادهها بر اساس نوع آنها متفاوت است. در ادامه به معرفی پایگاه داده های NoSQL می پردازیم و با یکی از مهمترین انواع آن آشنا میشویم.
پایگاه داده NoSQL چیست؟
NoSQL که مخفف عبارت Not Only SQL DataBase است، انواعی از پایگاه دادهها هستند که در سطحی وسیعتر از پایگاه دادههای SQL کار میکنند و با مدلهای مختلف دادهها مانند کلید – مقدار (Key-Value)، دادههای گرافی، مبتنی بر مستند و غیره سر و کار دارند. این پایگاه دادهها با مجموعههای عظیمی از دادههای توزیع شده کار میکنند و جایگزینی برای دیتابیسهای رابطه ای هستند که داده را در جدول ذخیره میکردند.
mongo db چیست؟
مونگو دیبی (Mongo DB) یکی از معروفترین پایگاه دادههای No SQL است که ساختار منعطفی دارد و بیشتر در پروژه هایی با حجم بالای داده استفاده میشود. این پایگاه داده پلتفرمی متن باز و رایگان است و با مدل دادههای مستند گرا (Document - Oriented) کار میکند و در ویندوز، مکینتاش و لینوکس قابل استفاده است. مقادیر داده ای ذخیره شده در مونگو دیبی، با دو کلید اولیه (Primary Key) و ثانویه (Secondary Key) مورد استفاده قرار میگیرند.
مونگو دیبی شامل مجموعه ای از مقادیر است. این مقادیر به صورت سندهایی (Document) هستند که با اندازههای مختلف، انواع مختلفی از دادهها را در خود جای داده اند. این مسئله باعث شده که مونگو دیبی بتواند داده هایی با ساختار پیچیده مانند دادههای سلسله مراتبی و یا آرایه ای را در خود ذخیره کند.
ویژگیهای مونگو دیبی چیست؟
مونگو دیبی به علت مستند گرا بودن مدل ذخیره دادهها در مقایسه با دیتابیسهای رابطه ای بسیار منعطفتر و مقیاس پذیرتر است و بسیاری از نیازمندیهای کسب و کارها را برطرف میکند.
این پایگاه داده برای تقسیم دادهها و مدیریت بهتر سیستم از شاردینگ (Sharding) استفاده میکند. شاردینگ به معنی تکه تکه کردن است و در لود بالای شبکه انجام میشود. به گونه ای که دیتابیس به چند زیربخش تقسیم میشود تا روند پاسخ دهی به درخواست هایی که از سمت سرور میآید، راحتتر شود.
دادهها با دو کلید اولیه و ثانویه قابل دسترسی هستند و هر فیلدی قابلیت کلید شدن را دارد. این امر زمان دسترسی و پردازش داده را بسیار سریع میکند.
همانند سازی (Replication ) یکی دیگر از خصوصیات مهم مونگو دیبی است. در این تکنیک از یک داده به عنوان داده اصلی کپی هایی تهیه شده و بخشهای دیگری از سیستم پایگاه داده ذخیره میشود. در صورت از بین رفتن و یا مخدوش شدن این داده، دادههای کپی شده به عنوان داده اصلی و جایگزین مورد استفاده قرار میگیرند.
در دیتابیسهای رابطه ای دادهها به شکل رکورد (Record) نگهداری میشوند اما در مونگو دیبی، ساختار نگهداری دادهها به شکل سند است. هر سند از نوع Binary JSON یا BSON است و دارای فیلدهای کلید و مقدار میباشد.
برای اجرا کردن کدهایی که در مونگو دیبی نوشته شده است باید از طریق Mongo Shell اقدام کرد. مونگو شل رابط تعاملی دیتابیس و برنامه نویس محسوب میشود و به آنها اجازه ارسال کوئری (Query) و به روزرسانی دادهها را میدهد.
دیتابیسهای رابطه ای دارای اسکیما (Schema) هستند. یعنی ساختار خاصی برای داده هادر نظر گرفته و مدلهای محدودی را ذخیره میکنند. اما مونگو دیبی و به طور کلی دیتابیسهای NoSQL در برابر پذیرش داده هایی با توع مختلف بسیار منعطف هستند و این مزیت مهمی برای برنامه نویسان محسوب میشود. مقیاس پذیری این پایگاه داده باعث استفاده از آن در پروژه هایی میشود که با کلان دادهها (Big Data) سروکار دارند.
علاوه بر مزایای گفته شده مشکلاتی نیز در مونگو دیبی وجود دارد که ممکن است دردسرساز شود. این دیتابیس در استفاده از کلید خارجی (Foreign Key) برای دادهها ضعف دارد و ممکن است پایداری دادهها و یکپارچگی سیستم را به هم بریزد. همچنین در خوشه بندی دادههای موجود در این پایگاه داده، تنها میتوان یک گره (Node) را به عنوان گره اصلی (Master) انتخاب کرد که اگر از بین برود، ممکن است مرتب سازی زیرگرههای آن از بین برود. این مشکل در پایگاه داده کاساندرا (Cassandra) برطرف شده است.
جمع بندی
معمولا مونگو دیبی در سطوح بالاتر توسعه نرم افزار و برنامه نویسی استفاده میشود. این پایگاه داده بسیار قدرتمند است و ساختار ذخیره داده آن، باعث تمایز آن از سایر پایگاه دادهها شده است. همچنین کوئریهای ساده ای دارد و کار با آن، برای کسانی که تجربه حرفه ای در انجام پروژههای مختلف برنامه نویسی دارند کار چندان سختی نیست. شما تجربه ای در کار با پایگاه داده mongo db دارید؟
۱۶ دیدگاه
Mehdi۰۶ مهر ۱۴۰۲، ۲۳:۰۱
سلام.میشه تفاوت mongo db با دیتابیس Elasticsearch بگید.
نازنین کریمی مقدم۲۴ مهر ۱۴۰۲، ۱۰:۵۸
درود
از لحاظ بنیادی Elasticsearch یک موتور جستجوی متن باز با تجزیه و تحلیل کامل هست (به زبان جاوا) که دادههای غیرساختاریافته را از منابع مختلف میگیره و در یک فرمت پیچیده ذخیره میکنه که برای جستجوی متنی بسیار بهینه هست. پس بهتره در جاهایی که جستجو زیاد هست ازش استفاده بشه.
اما مونگو یک دیتابیس برای دادههای غیرساختاریافته هست و میتونید براساس نیازتون در هر شرایطی ازش استفاده کنید.
۰۸ خرداد ۱۴۰۲، ۰۶:۴۷
بسیار هم عالی
۰۶ دی ۱۴۰۱، ۰۰:۰۱
من به تازگی یادگیریSQL server رو شروع کردم میخواستم بدونم برای شروع کدوم بهتره mongo یا SQL...در ضمن هیچ تجربه ای در زمینه برنامه نویسی ندارم
نازنین کریمی مقدم۰۷ دی ۱۴۰۱، ۰۵:۲۲
درود
برای شروع بین این دو sql بهتر هست.
۲۸ بهمن ۱۴۰۰، ۰۹:۳۶
درود،وقت بخیر
ازتون میخوام یک منبع خوب رو برای یادگیری MongoDB معرفی کنید که توضیحات پیچیده ای نداشته باشه
به طور کلی توضیح داده شده بود . برای اشنایی اولیه با مونگو دیبی بسیار مقاله خوبی بود
عرفان سعدی۱۹ شهریور ۱۴۰۰، ۱۳:۲۲
من از mongodb و Flask استفاده میکنیم کاملا پرفرمنس عالی هست و در کل بک اند اپلیکیشن هام فوقالعاده قدرتمندتر شده و کارمم راحتتر شده نسبت به PHP وmysql
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۰، ۱۸:۲۷
درود
ممنون که تجربه تون رو به اشتراک گذاشتید دوست عزیز :)
احسان عصارزاده۰۹ تیر ۱۳۹۹، ۱۴:۴۷
مونگو دی بی دیتابیس خیلی خوبیه ولی متاسفانه کانفیک کردنش با لاراول برای کسی که تازه میخواد باهاش کار کنه خیلی دردسر سازه
صادق۲۶ فروردین ۱۳۹۹، ۲۰:۴۰
سلام. ممنون. خلاصه و مفید.
در صورت امکان معرفی اهم فیچرهای مونگو رو هم به شکل خلاصه تو مقالتون قرار بدین.
حامد۰۵ مهر ۱۳۹۸، ۱۴:۵۲
مطلب عالی بود...
پیشنهاد میکنم جهت آشنایی کاربران با دیتابیس cockroachlabs هم یک مقاله منتشر کنید ...
cockroachlabs.com
ریحانه یزدانی۱۳ مهر ۱۳۹۸، ۱۳:۳۸
سلام ممنون از وقتی که گذاشتین :)
سعی میکنیم به زودی محتوایی در این زمینه تهیه کنیم
سهیل۰۳ مهر ۱۳۹۸، ۰۷:۱۸
سلام . تشکر از این مطلب خوب . دورههای مجازی در زمینه پایگاههای داده nosql در وب فارسی بسیار کم هست . اگه ممکنه یک دوره در این زمینه برگزار کنید . سپاس
ریحانه یزدانی۱۳ مهر ۱۳۹۸، ۱۳:۴۱
سلام و ممنون از شما :)
در حال حاضر سون لرن ثبت نام دورههای متخصص رو، در زمینه هایی که تقاضای بیشتری داشتن شروع کرده . اما امیدواریم در آینده بتونیم در این زمینه هم دوره هایی برگزار کنیم.