دیتابیس MongoDB
دیتابیس MongoDB
Mongodb دیتابیس قدرتمند از نوع NoSQL است و معمولا با زبان برنامه نویسی Node js استفاده میشود. Mongo DB مانند دیتابیس های دیگر ویژگی های مثبت و منفی بسیاری دارد اما می توان آن را یکی از بهترین دیتابیس های دنیا دانست. در این مقاله در مورد نکات مثبت و منفی آن برای شما مطالبی را بیان میکنیم.
MONGO DB چیست؟
دیتابیس mongo در ردیف دیتاییس ها بدون ساختار (NoSQL) قرار میگیرد. این به این معناست که داده ها و اطلاعات ما در قالب ساختار یک سری جدول قرار نمی گیرد. (دقیقا ساختار دیتابیس گوگل هم به صورت NoSQL است که میتونه تو کسری از ثانیه میلیون ها نتیجه را برای شما بیاره) خب بریم ادامه بحث mongoDB به دلیل سرعت بالا و قابلیت پاسخگویی بالا به سرعت درحال محبوبیت است.
دیتابیس MongoDB با Nodejs همگام سازی شده است
چرا از MongoDB استفاده میشود؟
ذخیره سازی
ذخیره سازی MongoDB می تواند حجم داده های بزرگ و بدون ساختار را ذخیره کند و به صورت عمودی و افقی مقیاس پذیر است. ایندکس ها برای بهبود عملکرد جستجو استفاده می شوند. جستجوها نیز توسط فیلد، محدوده و عبارت انجام می شود.
یکپارچه سازی داده ها
این داده ها را برای برنامه ها، از جمله برای برنامه های ترکیبی و چند ابری، یکپارچه می کند.
تعادل بار
MongoDB را می توان برای اجرای چندین سرور استفاده کرد.
مزایا و معایب دیتابیس MongoDB
مزایای دیتابیس MongoDB
- این یک پایگاه داده NoSQL بدون طرحواره است. هنگامی که با MongoDB کار می کنید نیازی به طراحی طرح واره پایگاه داده ندارید.
- از عملیات پیوستن پشتیبانی نمی کند.
- انعطاف پذیری زیادی برای فیلدهای موجود در اسناد فراهم می کند.
- عملکرد بالا، در دسترس بودن، مقیاس پذیری را فراهم می کند.
- نیازی به تزریق SQL ندارد.
معایب دیتابیس MongoDB
- از حافظه بالایی برای ذخیره سازی داده ها استفاده می کند.
- شما مجاز به ذخیره بیش از 16 مگابایت داده در اسناد نیستید.
- تودرتوی داده ها در BSON نیز محدود است، شما مجاز به تودرتو کردن داده ها در بیش از 100 سطح نیستید.
چه شرکت هایی از دیتابیس MongoDb استفاده میکنند؟
بسیاری از شرکت های کوچک و بزرگ برای ذخیره سازی دیتا ها خود از دیتابیس Mongo DB استفاده میکنند.
- The New York Times
- Uber
- Netflix
- BBC
- Amazon
- Walmart
- eBay
- PayPal
امکانات دیتابیس MongoDB
- پشتیبانی از چندین زبان برنامه نویسی
- امنیت
- قابلیت مقایس پذیری
- پشتیبانی از جستجوی پیشرفته
- ذخیره سازی مبتنی بر سند
تفاوت دیتابیس NOSQL و MYSQL
اگر از یک سیستم مدیریت دیتابیس است که به ما ان امکان را می دهد تا به راحتی mongo DB را پیکربندی کنیم و از آن استفاده کنیم. نام دیگری که mongoDB به آن معروف است relational دیتابیس است. این دسته از دیتابیس ها را همان دیتابیس های SQL می نامند. اما دیتابیس mongo یک قدم جلوتر از دیتابیس های SQL قرار دارد و به دلیل اینکه از ساختار خاصی در ذخیره سازی اطلاعات پیروی نمیکند در زمره ی دیتابیس های NOSQL قرار میگیرد. NOSQL برآمده از Not Only SQL است که معنای آن می شود “نه فقط SQL “. دیتابیس Mongo برای ذخیره سازی داده هایی استفاده میشود که از ساختار مشخصی پیروی نمی کنند. دیتا بیس هایی مانند MySQL ، Oracle و … برای ذخیره سازی اطلاعات از یک سری جدول استفاده میکنند. به این صورت که هر جدول تعدادی فیلد دارد.
برای درک بهتر به مثال زیر توجه کنید:
از MONGODB استفاده کنیم یا MYSQL
فرض کنید میخواهید که اطلاعات دانش آموزان یک مدرسه را ذخیره کنید. در دیتابیس mysql به روش زیر جدولی متشکل از نام و نام خانوادگی و پایه ی تحصیلی آنها را تهیه میکنیم. اگر در مرحله ی بعدی برای یک دانش آموز بخواهیم یک اطلاعات دیگر را ذخیره کنیم، باید برای کل جدول یک فیلد جدید بسازیم. استفاده از دیتابیس های دارای (Structured database) اصلا بد نیست و اتفاقا خیلی عالی است. اما در دیتابیس های NOSQL ما میتوانیم علاوه بر تعریف یک ساختار و پیروی از آن، بدون ساختار مشخص هم دیتا ها را ذخیره سازی کنیم. یکی از مشکلات در دیتابیس های SQL این است که اگر ما اطلاعات زیاد و متنوع داشته باشیم پیروی از یک ساختار کمی دشوار و سخت است.
در دیتابیس Mongodb اطلاعات را در قالب یک document ذخیره میکنیم. Document مانند همان ردیف ها (rows) در دیتابیس های SQL است. با این تفاوت که ساختارشان یکسان نیست. هر کدام از اطلاعات ما متشکل از یک key و یک value هست. Key مانند نام فیلد در دیتابیس های SQL است و این به این معناست که ما هر فیلدی که بخواهیم را برای هر document به صورت مستقل تعریف میکنیم. ساختار دیتابیس mongodb بسیار شبیه به ساختار فابل های json است.
ویژگی های دیتابیس MONGO DB
Mongodb بسیار سریع است
یکی از مهم ترین معیار ها در انتخاب دیتابیس مناسب برای پروژه هایمان سرعت واکنش دیتا بیس است. دیتابیس های NOSQL نسبت به دیتابیس های MYSQL بسیار سریعتر هستند و با سرعت خیلی زیادی میتوانند اطلاعات را مبادله کنند. هنگامی که از زبان های قدرتمندی مانند Nodejs استفاده میکنیم که سرعت بالایی دارند باید از یک دیتابیس سریع استفاده کنیم که mongo DB گزینه ی بسیار مناسبی برای آن است.
دیتابیس های NOSQL نسبت به دیتابیس های MYSQL بسیار سریعتر هستند
تشابه زیاد سینتکس mongoDB به JSON
سینتکس کدنویسی و کار با mongoDB به این صورت است که کد های هر document داخل آکولاد های باز و بسته قرار میگیرد و key ها به همراه value هایشان همان گونه که در کدنویسی json مقادیر را در کدنویسی با دیتابیس Mongo مینویسیم.
شباهت کد نویسی Mongodb به Json
پیچیدگی زیاد دیتابیس Mongo
اگر در یک پروژه ی بزرگ بخواهیم از دیتابیس Mongo استفاده کنیم به مرور که اطلاعات هر document ما زیاد میشود پیچیدگی هم در دیتابیس mongodb بالا میرود. برای استفاده بهتر و مرتب تر از اطلاعات در Mongo DB بهتر است تا از سیستم های مدیریت دیتابیس استفاده کنیم.
حجم بالای mongoDB
از آنجا که در هر document دیتابیس Mongo DB باید به طور جداگانه key ها یا همان فیلد هارا تعریف کنیم؛ حجم دیتابیس از حالت عادی بیشتر میشود و بالاتر میرود. این موضوع در تمامی دیتابیس های NOSQL وجود دارد که ممکن است مقداری هزینه بر باشد.
همه دیتابیس های NoSQL حجم بالاتری به نسبت MySQL دارند
چند نمونه از کدهای MONGO BD
دیتابیس mongodb همانطور که بالاتر به آن اشاره شد، سینتکسی مشابه به سینتکس کدنویسی Json دارد. پایین تعدادی از این کدها را میتوانید مشاهده کنید:
>mongo --version
ورژن دیتابیس mongo را به ما برمیگرداند.
>mongo
برای متصل شدن به Mongo DB استفاده می شود.
>db
دیتابیس کنونی را نشان میدهد.
>db.createUsers({ User:””; Pwd:””; Roles:[“” , “”] });
اضافه کردن یک کاربر به دیتابیس Mongo از طریق دستور بالا صورت میگیرد.
یادگیری MONGODB
اگر تصمیم به یادگیری دیتابیس MongoDB دارید باید این نکته رو بدونید که دیتابیس های NOSQL نسل بعدی دیتابیس هستند و دیتابیس های SQL در حال منسوخ شدن میباشند. این نکته را هم در نظر بگیرید که استفاده از این دیتابیس به دلیل هزینه ای که دارد و به سرور قدرتمندی نیاز دارد، برای پروژه های خیلی کوچک کاربرد ندارد و توصیه نمی شود.
لطفا نظرات و پیشنهادات خودتون رو در مورد دیتابیس mongo در پایین همین مقاله باما به اشتراک بگذارید.
چه افرادی باید دیتابیس MongoDB را یادبگیرند؟
- توسعهدهندگان نرمافزار
- مدیران سیستم
- مهندسان داده
- تحلیلگران داده
سخن آخر
در این مقاله، ما به این پرداختیم که دیتابیس mongodb چیست و به ویژگی های آن پرداختیم و فهمیدیم که MongoDB یک دیتابیس بسیار توانمند است. و همچنین کوئری های ساده دارد که کار مار راحت تر از دیتابیس های دیگر میکند و بر نقش MongoDB به عنوان یک راه حل پایگاه داده همه کاره و قوی برای برنامه های مدرن تأکید می کند.
مطالب زیر را حتما مطالعه کنید
11 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام، خیلی کاربردی بود، ممنون از توضیحات کاملتون
سلام آقای حاج مقصودی ببخشید یه سوال، برای یه سایت فروشگاهی یا cms شخصی که خودمان نوشته باشیم به فرض با وب فورم دیتابیس مونگو دیبی توجیهی برای استفاده داره ؟ آخه به دلیل پایین اومدن سرعت cms شخصی خودمون، تیم ما میخواد core سیستم مدریت محتوامون رو از سر باز نویسی کنه با یه زبان دیگه که حالا یا با نود جی اس نوشته میشه یا با asp، با این تفاصیل شما دیتابیس mongodb رو پیشنهاد میکنید؟
سلام. به نظر بنده، اگه بک اند با nodejs هست دیتابیس mongodb باشه سرعت و کیفیت بهتری رو تجربه میکنید.
سلام mongodb داخل ایران تحریم نیست ؟
من برای راه اندازی کلاس بلوباتن میخوام ازش استفاده کنم اما برای نصب ریپوزیتوری هاش سایتش unreachable هست شما میتونید راهنماییم کنین ؟
با سلام.
در دوره هیولا، دیتا بیس مونگو هم آموزش داده شده؟ یا دوره جداگانه ای برای آن دارید؟
و سوال دوم این که با توجه به تبحر شما در جاوا اسکریپت فول استک، چرا سایت خودتون رو با وردپرس طراحی کرده اید؟ مزیتی در این کار وجود داشته؟
ممنون.
سلام و درود.
خیر دوره هیولای جاوااسکریپت فقط و فقط خود js pure تدریس شده و از هیچ کتابخونه و پلتفرمی استفاده نشده است.
جواب دوم اینه که سایت وردپرسی در کمترین زمان بالا میاد و خیلی خوب سئو میشه. البته در آینده پلتفرم تغییر میکنه اما بلاگ رو وردپرس میمونه
یعنی تو آموزش های شما نمیشه بک اند رو یاد گرفت؟ چون اصل کار از وقتی شروع میشه که بتونیم به دیتابیس وصل بشیم و این که اگر آموزشی در این مورد دارید کدفرست رو هم شامل میشه.
من این موارد رو تا حدودی روی دات نت کار کرده ام اما احساس میکنم فضای جی اس بیشتر با من سازگاره و دنبال منبعی صفر تا صد برای js فول استک میگردم
وبسایت megajs مرجع جاوااسکریپت و فریمورک هاش هست و ۱۰۰ البته مونگو هم شامل میشه و آموزش جداگانه ساخته میشه اما در حال حاضر نداریم
متاسفانه یادگیری دیتابیس MySql بسیار دشوار است ولی یادگیری دیتابیس های NoSql بسیار ساده است و این یک مزیت برای دیتابیس های NoSql محسوب میشه, البته از نظر بنده.
دقیقاً
بله ۱۰۰ درصد درسته.