در این صفحه میخوانید :
مانگو دی بی (MongoDB) چیست ؟
مانگو دی بی (MongoDB) یک پایگاه داده سند گرا، چند سکویی، مقیاس پذیر و انعطاف پذیر است که نیازهای فهرست بندی و ایجاد کوئری را بر آورده می کند. MongoDB که به عنوان یک برنامه پایگاه داده نو اس کیو ال (NoSQL) طبقه بندی شده است، از اسناد مشابه جی سان (JSON) با طرح های اختیاری استفاده می کند، به این معنی که فیلدها می توانند از در هر سند متفاوت باشند و ساختار داده ها را می توان در طول زمان تغییر داد. MongoDB از اسناد JSON مانند اسکریپت به عنوان یک برنامه پایگاه داده NoSQL استفاده می کند. مدل سند گرا در کد برنامه برای اشیا نقشه ایجاد می کند که کار را برای داده ها آسان تر می کند.
نمایش آگهی های ویژه، فهرست بندی و جمع آوری Realtime (بلادرنگ) راه های قدرتمند برای دسترسی و تجزیه و تحلیل داده های شما را فراهم می کند. MongoDB برای کار با سرورهای کالا طراحی شده است. در حال حاضر تمامی شرکت های بزرگ و کوچک، درهر صنعتی می توانند از آن استفاده کنند. یک پایگاه داده توزیع شده در هسته آن است که جهت توزیع جغرافیایی برای استفاده آسان ساخته شده است. همچنین این پایگاه داده در زبان سی پلاس پلاس (++C) نوشته شده است.
نسخه های مانگو دی بی (MongoDB)
- MongoDB Community Server
MongoDB Community Edition رایگان است و برای ویندوز، لینوکس و OS X در دسترس است.
- MongoDB Enterprise Server
MongoDB Enterprise Server نسخه تجاری MongoDB است که به عنوان بخشی از اشتراک MongoDB Enterprise Advanced در دسترس است.
- MongoDB Atlas
MongoDB همچنین به عنوان یک سرویس کاملاً مدیریتی درخواستی در دسترس است. MongoDB Atlas با سیستم عامل های مایکروسافت آژور (Microsoft Azure) و وب سرویس آمازون (AWS)، و پلتفرم ابری گوگل (Google Cloud Platform) قابل اجرا است.
هدف از ایجاد مانگو دی بی (MongoDB) چیست ؟
هدف مانگو دی بی پر کردن فاصله ذخیره بندی های کلید - مقداری که سریع و مقیاس پذیر هستند و سامانه های سنتی مدیریت پایگاه داده رابطه ای که درخواست های غنی و عملکرد عمیقی دارند بوده است. مانگو دی بی برای رفع مشکلاتی طراحی شده که با پایگاه داده های رابطهای به سادگی رفع نمیشوند. به جای اینکه همانند پایگاه های داده های رابطه ای کلاسیک دادهها را در جداول ذخیره کند، دادههای ساختار یافته را در اسنادی با قالبی شبیه به جی سان (مانگو دی بی این قالب را BSON مینامد) ذخیرهسازی میکند، و بدین ترتیب یکپارچه سازی داده ها را در برخی اقسام برنامه های کاربردی آسان و سریع تر میکند.
ویژگی های مانگو دی بی (MongoDB)
برخی از ویژگی های کلیدی مانگو دی بی در زیر آورده شده است:
- کوئری های Ad-hoc
MongoDB از جستجوی زمینه، جستجوی دامنه و جستجوی بیان منظم پشتیبانی می کند. نمایش داده شد می تواند زمینه های خاصی از اسناد را بازگرداند و همچنین شامل توابع جاوا اسکریپت تعریف شده توسط کاربر است. همچنین کوئری ها می توانند برای بازگرداندن یک نمونه تصادفی از نتایج اندازه مشخص، پیکربندی شوند.
- فهرست بندی (Indexing)
هر فیلد در مانگو دی بی را می توان با فهرست بندی های اولیه و ثانویه فهرست بندی کرد.
- تکثیر (Replication)
MongoDB در دسترس بودن با مجموعه های replica را فراهم می کند. یک مجموعه replica از دو یا چند نسخه از داده ها تشکیل شده است. هر عضو مجموعه replica می تواند در هر زمان در نقش replica اصلی یا ثانویه عمل کند. تمام نوشتن ها و خواندن ها به صورت پیش فرض در نسخه اصلی انجام می شود. نسخه های ثانویه با استفاده از همانند سازی داخلی، کپی داده های اولیه را نگهداری می کنند. هنگامی که یک نسخه اصلی از کار می افتد، مجموعه ماکت به طور خودکار فرآیند انتخاب را انجام می دهد تا تعیین کند کدام یک از ثانویه ها باید اصلی شوند. ثانویه ها به صورت اختیاری می توانند عملیات خواندن را انجام دهند، اما این داده ها به طور پیش فرض فقط در نهایت سازگار هستند.
- تعادل بارگزاری (Load balancing)
مانگودیبی با استفاده از بخشبندی (sharding) قابل مقیاس پذیری به صورت افقی است. کاربر کلید shard را انتخاب می کند که تعیین می کند داده های یک مجموعه چگونه توزیع شود. داده ها به دامنه تقسیم می شوند (بر اساس کلید خرد شده) و در چندین خرده ریز توزیع می شوند. متناوباً، می توان کلید shard را برای هش کردن ترسیم نقشه به یک shard – enabling داد که توزیع یکنواخت داده را امکان پذیر می کند. MongoDB می تواند از طریق چندین سرور اجرا شود، بار را متعادل کرده یا داده ها را تکثیر کند تا در صورت خرابی سخت افزار سیستم را فعال نگه دارد.
- ذخیره فایل (File storage)
MongoDB می تواند به عنوان یک سیستم فایل به نام GridFS، با توازن بار و تکثیر داده ها در چندین ماشین برای ذخیره فایل ها استفاده شود. این عملکرد با نام grid file system همراه با درایورهای MongoDB است. MongoDB توابع مربوط به دستکاری پرونده و محتوا را در معرض توسعه دهندگان قرار می دهد. با استفاده از ابزار mongofiles یا پلاگین های Nginx و lighttpd می توان به GridFS دسترسی پیدا کرد. GridFS یک فایل را به قطعات یا قسمتهای مختلف تقسیم می کند و هر یک از آنها را به عنوان یک سند جداگانه ذخیره می کند.
- تجمیع (Aggregation)
MongoDB سه راه برای انجام تجمیع فراهم می کند که شامل خط لوله تجمعی، عملکرد کاهش نقشه و روش های تجمعی تک هدف می باشد. Map-reduce را می توان برای پردازش دسته ای داده ها و عملیات تجمیع استفاده کرد. اما با توجه به مستندات Pipeline مانگو دی بی، انباشتگی عملکرد بهتر را برای اکثر عملیات تجمع فراهم می کند. فریمورک تجمیع، کاربران را قادر می سازد که نوع نتایجی را که برای SQL GROUP BY استفاده می شود، به دست آورند. اپراتورهای جمع آوری شده میتوانند با هم یکپارچه شوند تا Pipeline را مشابه Unix pipes تولید کنند .فریمورک تجمیع شامل عملگر $ است که می تواند اسناد را به چندین سند و همچنین عملگر های آماری متصل کند.
- اجرای جاواسکریپت سمت سرور
جاوا اسکریپت را می توان در نمایش داده شده، توابع تجمعی (مانند MapReduce) استفاده کرد و به طور مستقیم به پایگاه داده برای اجرا ارسال می شود.
- مجموعههای محدود شده
MongoDB از مجموعه های ثابت به نام مجموعه های محدود شده پشتیبانی می کند. این نوع از مجموعه دستورات درج را حفظ می کند و هنگامی که به اندازه مشخص شده رسیده باشد، مثل یک صف دایره ای رفتار می کند.
- معاملات (Transactions)
MongoDB ادعا می کند از معاملات چند سندی ACID از زمان انتشار 4.0 در ژوئن 2018 پشتیبانی می کند. مشخص شد که این ادعا درست نیست زیرا MongoDB انزوای عکس را نقض می کند.
معماری مانگو دی بی (MongoDB)
- دسترسی به زبان برنامه نویسی
MongoDB دارای درایورهای رسمی برای زبان های اصلی برنامه نویسی و محیط های توسعه است. همچنین تعداد زیادی از درایورهای غیررسمی یا تحت حمایت جامعه برای سایر زبان ها و فریمورک های برنامه نویسی وجود دارد.
- دسترسی بدون سرور
MongoDB Stitch دسترسی بدون سرور به MongoDB و سایر سرویس ها را فراهم می کند. کتابخانه های کلاینت جاوا اسکریپت برای برنامه نویسی آی او اس (iOS) و اندروید (Android) در دسترس هستند.
- مدیریت و فرانت اند گرافیکی
رابط اصلی پایگاه داده شل مانگو بوده است. از زمان MongoDB 3.2، MongoDB Compass به عنوان GUI نیتیو معرفی می شود. محصولات و پروژه های شخص ثالث وجود دارد که رابط کاربر برای مدیریت و مشاهده داده ها را ارائه می دهند.
مزایای استفاده از مانگو دی بی (MongoDB)
احتمالاً شنیده اید که MongoDB به عنوان پایگاه داده NoSQL یا ابزاری برای ذخیره سازی JSON یا شاید حتی به عنوان پایگاه داده اسناد شناخته می شود - اما این به معنای واقعی چیست؟ MongoDB چه مزایایی نسبت به روش های جایگزین کار با داده دارد؟ MongoDB چه مزایایی به توسعه دهنده می دهد؟
در سطح بالا، MongoDB توسعه دهندگان را قادر می کند تا از داده ها برای ساخت آسان، انطباق سریع و مقیاس قابل اعتماد استفاده کنند. اجازه دهید آن را تجزیه کنیم:
شماتیک اسناد انعطاف پذیر
مدل سند MongoDB اجازه می دهد تا تقریباً هر نوع ساختار داده ای به راحتی مدل سازی و دستکاری شود. قالب داده های BSON MongoDB، با الهام از JSON، به شما امکان می دهد اشیا موجود در یک مجموعه دارای مجموعه زمینه های مختلف باشند (مثلاً نام متوسط در کاربر فقط در صورت کاربرد باشد، یا اطلاعات خاص منطقه که فقط در برخی از سوابق اعمال می شود). MongoDB از ایجاد شماتیک های صریح و تأیید اعتبار داده ها پشتیبانی می کند تا از کنترل خارج نشود، اما این انعطاف پذیری یک دارایی باورنکردنی هنگام کار با داده های دنیای واقعی و مدیریت تغییرات در نیازها یا محیط است.
دسترسی به داده های کد نیتیو
اکثر پایگاه های اطلاعاتی شما را مجبور می کنند تا از پکیج های سنگین مانند ORM (Object Relational Mappers) برای بدست آوردن داده ها به فرم Object برای استفاده در برنامه ها استفاده کنید. تصمیم MongoDB برای ذخیره و نمایش داده ها در قالب سند به این معنی است که می توانید از هر زبانی، در ساختار داده هایی که نیتیو آن زبان هستند، به آنها دسترسی داشته باشید (به عنوان مثال دیکشنری ها در پایتون، آرایه های انجمنی در JavaScript، نقشه ها در جاوا و غیره).
دیزاین Change-friendly
اگر شما عادت کرده اید که سایت یا برنامه خود را پایین بیاورید تا ساختار داده های خود را تغییر دهید، خوش شانس هستید: MongoDB برای تغییر طراحی شده است. زمان و تلاش زیادی را صرف طراحی فرآیندهای کارآمد و یادگیری اشتباهات خود می کنیم، اما به طور معمول پایگاه داده روند کار را کند می کند. برای تغییر طرح و برنامه نیازی به خرابی نیست و می توانید بدون ایجاد مزاحمت در عملکرد آن، نوشتن داده های جدید را برای MongoDB در هر زمان شروع کنید.
تجزیه و تحلیل قدرتمند
چه فایده ای دارد اگر نتوان داخل یک پایگاه داده را جستجو کرد؟ MongoDB برای سهولت دسترسی به داده ها و به ندرت نیاز به پیوستن یا معاملات طراحی شده است، اما در صورت نیاز به پرس و جو پیچیده، این کار بیشتر از حد وظیفه است. MongoDB Query Language (MQL) یک زبان کاملاً قدرتمند و قدرتمند است که به شما امکان می دهد در اسناد جستجو کنید و حتی خطوط پیچیده تجزیه و تحلیل را فقط با چند خط MQL JSON مانند انجام دهید.
scale-out آسان افقی
MongoDB از ابتدا طراحی شده است تا یک پایگاه داده توزیع شده باشد. خوشه هایی با همانندسازی در زمان واقعی ایجاد کنید و مجموعه های بزرگ یا پربار را در چندین خوشه خرد کنید تا عملکرد و مقیاس بندی را به صورت افقی حفظ کنید.