معرفی MongoDB - دیتابیس رؤیایی برای توسعه‌دهندگان

سلام، خداقوت توسعه دهندگان عزیز :)مقدمهاکثر نرم‌افزار های بزرگ و کوچیک توی خودشون نیاز به کار با دیتا دارن و بعضی از این نرم‌افزارا نیازمند این هستن که دیتاهاشون persistent(دائمی) بشه و نمی‌خوان بعد از اینکه کاربر از اون نرم‌افزار خارج شد همه دیتاهاش بپره، اصلا جذاب نیست که وقتی وارد یه نرم‌افزار میشید مجدد بخواید ثبت‌نام یا لاگین بکنید مگه نه؟!احتمالا اولین راهکار براتون استفاده از فایل هست که کاملا هم جوابگو هست ولی اینکه داده رو چطوری توی فایل ذخیره کنید، به چه شکل از فایل بخونید و .... کاملا به عهده خودتونه! و اصلا هم مسئولیت کمی نیست و در دراز مدت با مشکلات پرفرمنسی و هزارجور مشکل دیگه باید دست و پنجه نرم کنید پس یا مطمئن بشید که کاری که انجام میدید خیلی کوچیکه یا استفاده نکن از فایل برادر من!اما یه راهکار دیگه هم هست که خیلی جوابه و بیشتر اونایی که نیاز به persistent کردن دیتا دارن ازش استفاده می‌کنن و اونم استفاده از دیتابیسه :) یک‌سری تیم نشستن و هزارجور مشکلی که بالا مطرح شد رو حل کردن و برامون این دیتابیس ها رو آماده کردن(دمشون گرم ?)حالا ما یه دغدغه جدید داریم، چه دیتابیسی استفاده کنیم و اصلا چه نوع دیتابیسی به درد پروژمون میخوره؟!توی این مطلب میخوام چندتا کار انجام بدم.معرفی دیتابیس های SQL و NoSQLمقایسهمعرفی MongoDBچرا MongoDB؟معرفی دیتابیس های SQL و NoSQLعکس کپی می‌باشد ?معرفی دیتابیس‌های SQL و NoSQLدر جهان هستی دو نوع دیتابیس وجود دارد یکی SQLای ها و یکی NoSQLای ها :)هرکدام را بهر کاری ساختند و نمی‌توان گفت که یکی از دیگر برتری بسیار دارد و هرکس اینگونه گفت بدانید که متعصبی بیش نیست و فاصله اجتماعی را با وی رعایت نمایید!مقایسهبه دیتابیس‌های SQLای در عمده مواقع میگن دیتابیسای رابطه‌ای یا RDBMS که مخفف Relational Database Management System هست و به دیتابیسای NoSQLای هم غیررابطه‌ای یا توزیع‌شده(distributed) میگن.دیتابیس‌های SQL بر پایه جداول هستن ولی دیتابیس های NoSQL بر پایه سند(document)، کلید و مقدار (key-value)، گراف و ... هستند.دیتابیس‌های SQL داده های داخلشون یه فرم خاصی دارند و فرم این داده‌ها از قبل مشخص شده ولی دیتابیس های NoSQL می‌تونن داده‌هایی که دارای یک شکل و شمایل یکسان نیستند رو هم ذخیره کنند.دیتابیس‌های SQL به صورت عمودی مقیاس پذیرن (البته به صورت افقی هم می‌تونن بزرگ بشن ولی چالشاش بیشتر از NoSQLای‌ها هست) و دیتابیس های NoSQL هم به صورت افقی و هم به صورت عمودی.مقیاس عمودی یعنی شما اگر داده های توی دیتابیستون خییللللییی زیاد بشن و نیاز به منابع بیشتر داشته باشید باید سرورتون رو از لحاظ سخت افزار ارتقا بدید، مثلا اگر هاردش 256 گیگابایت SSD هست بکنید یک ترابایت NVME!مقیاس افقی یعنی در صورت بالا رفتن حجم داده و میزان پردازش شما می‌تونید سرور اضافه بکنید مثلا دو تا سرور با رم 8 گیگ رو در کنار هم استفاده کنید!نکته:‌ مقیاس عمودی تا یه جایی امکان پذیره (مگه چقدر منابع رو میشه ارتقا داد؟) ولی مقیاس افقی شما می‌تونید هرچی دلتون میخواد سرور اضافه کنید و در صورت نیاز همون سرورا رو ارتقا بدید :)چند نمونه از دیتابیس‌های اس‌کیوال: MySQL, Oracle, Sqlite, PostgreSQLچند نمونه از دیتابیس‌های نو اس‌کیوال: MongoDB, Redis, BigTable, CouchDB, Cassandraمعرفی MongoDBتا به اینجای کار فهمیدیم که MongoDB یه دیتابیس NoSQL هستش، اما بریم با بقیه فیچر های این بزرگوار آشنا بشیم.قبل از اون باید بگم که Mongo از کلمه humongous اومده که به معنی عظیم هست!‍ساختار داده توی MongoDB به صورت BSON هست یعنی JSON به شکل Binrary پس شمایی که به عنوان برنامه‌نویس به شکل آبجکتی فکر می‌کنی الان باید خیلی خوشحال باشید چون دیتابیستونم همینکارو میکنه!یه زبان کوئری خفن و تو دل برو!db.users.find({ name: &quotMohammad&quot }).sort({ birthDate: 1 })به همین سادگی کاربرایی که اسمشون محمد هست(که کمم نیستن ?) رو بر اساس تاریخ تولدشون به شکل صعودی مرتب کردیم. مونگو دی‌بی تمام قابلیتای دیتابیس های SQLای رو داره حتی بیشتر!ضمنا MongoDB یه سرویس آنلاین هم داره به اسم Atlas که همونطور که احتمالا متوجه شدید یه DBaaS هست (Database As A Service) و اونم کلی قابلیت به صورت جدا گونه داره!حالا چرا نوشتم رویایی برای توسعه‌دهندگان؟ آخه شما نحوه کوئری زدن رو ببین، یه دل نه، صد دل عاشقش میشی ❤️دیگه مجبور به استفاده از دستورات گاها وحشتناک SQL هم نیستید ?اگه تجربه‌ای داشتید از لذت یا عذاب توی استفاده از این دیتابیس توی نظرات بگید که من و بقیه مطلع بشیم و با چشم بازتر انتخابمون رو انجام بدیم.محمد محمدعلیان --- 12 آبان 1399