در چندسال گذشته، دادهها به میزان قابل توجهی افزایش یافته. با افزایش دادهها، تقاضا برای دیتابیس ها نیز به میزان زیادی بالا رفته است. برای مقابله با این موضوع، برنامهنویسان و سازمانها به سمت روشهای جدید برای مدیریت و کنترل سِیلاب دادهها حرکت میکنند. همچنین انتخاب ابزارهای جایگزین مدیریت دیتابیس ها به جای سیستمهای سنتی پایگاهدادههای رابطهای، رایج شده است.
در اینجا MongoDB، یک Dynamic database schema را به تصویر میکشد.
MongoDB : یک دیتابیس NoSql
با بیش از ۴۰/۰۰۰/۰۰۰ دانلود و بیش از ۳۵۰۰۰ مخازن گیتهاب، MongoDB یکی از قدرتمندترین و محبوبترین دیتابیس های NoSql در جهان است. این دیتابیس به دلیل کارایی بالا ، دسترسپذیری و مقیاسپذیری فوقالعاده، بسیار مورد استفاده قرار میگیرد. همچنین این دیتابیس، اپنسورس است و از نوع document-oriented (سندگرا) میباشد؛ و یک non-structured query language ( نو اس کیوال ) است.
MongoDB با زبان ++C توسعهیافته و از dynamic schemaها که شبیه به json است، استفاده میکند نه دیتابیسهای سنتی.
Dynamic data schema مانگو دی بی، BSON نامیده میشود؛ و این باعث میشود،که ذخیره دادهها برای توسعهدهندگان، فوقالعاده سریع و آسان باشد.
اینکه ابزاری، NoSql و سندگرا باشد، به این معنی است که مثل دیتابیس های رابطهای از rowsها و columnها ،استفاده نمیکند. این بر پایهی collection ها و documentsها است و متشکل از دادههایی است که key-valueها را در بر میگیرد؛ و به عنوان یک واحد پایه و اساسی به documentsها اجازه میدهد تا fieldها و ساختارهای متفاوتی داشته باشند.
علاوه براین، مدل داده در MongoDB بسیار انعطافپذیر است و به شما این امکان را میدهد که multivariate types را، بدون ایجاد خطر برای indexing options، قوانین اعتبارسنجی و همچنین دسترسی پیدا کردن به دادهها، ترکیب و ذخیره کند.
همچنین هنگامی که میخواهید schemaها را به صورت داینامیک تغییر دهید، هیچگونه downtime و خرابی، رخ نمیدهد.
MongoDB در طول سالها
نام mongo از کلمه humongous (به معنی عظیم و خیلی بزرگ)گرفته شده؛ و DB مخفف دیتابیس است؛ این نام برای این است که بتواند ایده پشتیبانی از حجم عظیمی از دادهها را به نمایش بگذارد.
در سال ۲۰۰۷، توسط 10Gen، یک سازمان مستقر در نیویورک که در حال حاضر MongoDB Inc نام دارد، راهاندازی شد. از همان روزهای ابتدایی توسط افرادی به نام Dwight Merriman و Eliot Horowitz به عنوان (PAAS (platform as a service توسعه یافت. در اصل آنها به علت اینکه این پایگاهداده در آن زمان با مسائل مقیاسپذیری و مشکلاتی در توسعه روبهرو بود، آن را توسعه دادند.
همچنین آنها در سال ۲۰۰۷ به 10Gen برای تجاریسازی MongoDB کمک کردند. همین شرکت در سال ۲۰۱۳ به شرکت MongoDB تغییر نام پیدا کرد؛ و در اکتبر ۲۰۱۷، تحت عنوان MDB به بازار عرضه شد. در سال ۲۰۰۹ بود، که MongoDB به عنوان یک نرمافزار اپنسورس به بازار عرضه شد؛ با این وجود از طرف MongoDB INC نگهداری و پشتیبانی میشد.
از آن زمان محبوبیت بینظیری بدست آورد. در حال حاضر، وبسایتهایی نظیر : MetLife, Craigslist, CERN physics lab, The New York Times, SourceForge, Foursquare, eBay و شرکتهای بیشمار دیگری به یک یا چند دلیل از آن استفاده میکند.
MongoDB : معماری
معماری MongoDB شامل database ، collection و documentها هست. به عبارت ساده، یک دیتابیس، یک collection برای دادهها است و هر پایگاهداده، دارای مجموعهای از فایلها در یک فایل است.
چندین دیتابیس، میتواند در یک سرور MongoDB وجود داشته باشد.
به طور مشابه RDBMS (سیستم مدیریت پایگاههای رابطهای)، یک collection و یک گروه از database documentها است.همهی collection میتواند در یک database باشد؛ در documentهای مختلف نیز، field های متنوعی وجود دارد.
سرانجام document، یک مجموعه از زوجهای key-value است که به عنوان یک document تعیین میشود. اینها با یک daynamic schemas با یکدیگر متصل هستن؛ این به این معنیست که document در یک collection، یک ساختار یکسان برا یfieldها ندارد. همچنین فیلدهای مشترک در یک document که در collection است، میتواند انواع مختلفی از دادهها را داشته باشد.
MongoDB : انواع دادهها
چندین نوع داده مورد استفاده در MongoDB به شرح زیر است:
- string - رایجترین نوع داده است که برای ذخیره دادهها استفاده میشود.
- Integer – برای ذخیرهسازی اعداد مورد استفاده قرا میگیرد و بسته به سروری که از آن استفاده میکنید، میتواند ۳۲ یا ۶۴ بیتی باشد.
- Boolean – بولین برای ذخیره مقادیر بولین استفاده میشودکه مقادیر Yes/No را نشان میدهد.
- Double – این نوع داده مقادیر اعشاری را ذخیره میکند.
- min/max keys – برای مقایسه کمترین و بیشترین المنتهای BSON استفاده میشود.
- Array – برای ذخیره یک لیست با مقادیر چندگانه، در یک key استفاده میشود.
- Object – نوع داده آبجکت، برای documentهای تعبیه شده استفاده میشود.
- Null – از آن برای ذخیره مقادیر تهی استفاده میشود.
- Symbol – بیشتر برای زبانهایی استفاده میشود که از یک نوع خاص استفاده میکنند.
- Date – برای ذخیره تاریخ و زمان فعلی در قالب زمان یونیکس استفاده میشود؛ که میتواند با ایجاد یک object تاریخ، و ماه و سال را در آن بگذارد.
MongoDB :ویژگیها
برخی از ویژگیهای مهم MongoDB به شرح زیر است:
- Ad hoc queries: مانگو دی بی میتواند از هر دو کوئری، یعنی Ad hoc و document-base، استفاده کند؛ این به شما اجازه میدهد توسط فلید یا رنج کوئری، سرچ کنید، همچنین regular expressionها را نیز پشتیبانی میکند.
- Indexing: به شما امکان میدهد هر فیلد از document را index کنید.
- Replication: مانگو دی بی از Master-Slave Replication پشتیبانی میکند که در آن کاربر master میتواند بخواند و بنویسد و یک slave میتواند داده را از master برای خواندن یا بکاپ گرفتن (بدون هیچ عمل writing یا نوشتن) کپی کند.
- سرورهای چندگانه: مانگو دی بی، میتواند روی چندین سرور ایجاد شود، که امکان کپی کردن دادهها را فراهم میکند تا در صورت خرابی سختافزار هیچگونه تلفاتی در دادهها وجود نداشته باشد.
- Load Blancing: مانگو دی بی، با یک پیکربندی load blancing خودکار به خاطر auto-Sharding، همراه است؛ Sharding، فرایند توزیع دادهها در پارتیشنهای مختلف است.
- Javascript: به جای Procedures از جاوااسکریپت استفاده میکند.
- Map-reduce: مانگو دی بی، از ابزارهای map-reduce استفاده میکند.
- Schema-less: مانگو دی بی، یک دیتابیس schema-less است که توسط ++C نوشته شده.
- کارایی: به دلیل پرفرمنس بالا و دسترسپذیری، بسیار شناخته شده است.
- ذخیرهسازی: پروندههایی با سایز بزرگ، بدون پیچیدگی در stack، ذخیره میشوند.
- Failure management: مانگو دی بی، میتواند در صورت بروز هرگونه شکست و خرابی به راحتی اداره شود.
- سایر: از مدل داده json استفاده میکند، از dynamic schemas – built-in replication پشتیبانی میکند و میتواند به صورت افقی مقیاسبندی شود.
حرف آخر
برای پایان دادن به این مقاله، من معتقدم که MongoDB توسط توسعهدهندگان، که مایل به بهبود ابزارها و ویژگیهای موجود برای ذخیرهسازی دادهها هستند، ایجاد شده است. این بانک اطلاعاتی با تعداد بیشماری از ویژگیها، که ذکر کردیم، به یک پایگاه داده بسیار قدرتمند، همهکاره و مقیاسپذیر تبدیل شده است. به همین دلیل میتوان از آن برای مجموعه دادههای بزرگ، مانند فیلم، رسانههای اجتماعی و ... استفاده کرد. MongoDB در مدت زمان کمی بسیار رشد کرد؛ و در حال حاضر توسط برخی از بزرگترین سازمانهای جهان مورد استفاده قرار میگیرد.
در آخر،فکر میکنم همه این نکات کافی است تا بینشی درست درباره MongoDB، یکی از بهترین پایگاه دادههای NoSql در جهان، بدست آورید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید