معماری ذخیرهسازی انعطافپذیر MongoDB
MongoDB دو جنبه کلیدی در فناوری مدرن را پذیرفته است:
- سازمانها در حال گسترش طیف برنامهها برای حمایت از کسب و کارهایشان میباشند.
- متصدیان ارشد اطلاعات (CIO)، مجموعه تکنولوژیهای خود را به شرکتهای ارائهدهنده مختلف سپرده، تا بتوانند به طور موثرتری از کسب و کار خود حمایت کنند.
با MongoDB، سازمانها میتوانند نیازهای متنوع برنامهها، منابع سخت افزاری و طراحیهای پیادهسازی خود را فقط با استفاده از یک تکنولوژی دیتابیس یکپارچه کنند. با استفاده از یک معماری ذخیره سازی انعطاف پذیر، MongoDB میتواند با قابلیتهای جدید گسترش یافته و همچنین برای استفاده بهینه از معماریهای سخت افزاری خاص پیکربندی شود. این انعطافپذیری یک رویکرد ساده و قابل اطمینان برای پاسخگویی به نیازهای مختلف دادهای برنامهها را فراهم میکند. در گذشته، مدیریت چندین تکنولوژی دیتابیس برای پاسخگویی به این نیازها، همراه با کد ادغام سفارشی و پیچیده برای انتقال دادهها بین فناوریها و برای اطمینان از دسترسی سازگار و امن، ضروری بود. با معماری ذخیرهسازی انعطاف پذیر MongoDB، دیتابیس به طور خودکار انتقال دادهها میان تکنولوژیهای موتور ذخیرهسازی را با استفاده از همسانسازی Native کنترل میکند. این رویکرد در مقایسه با اجرای چندین تکنولوژی دیتابیس متمایز، به طور قابل توجهی دشواریهای توسعه دهنده و پیچیدگیهای عملیاتی را کاهش میدهد. کاربران میتوانند از همان زبان Query، مدل داده، مقیاسپذیری، امنیت و ابزار عملیاتی در قسمتهای مختلف برنامه کاربردی خود، که هریک از موتور ذخیرهسازی مطلوب استفاده میکنند، بهره ببرند.
MongoDB نسخهی 3.2 همراه با چهار موتور ذخیرهسازی پشتیبانی شده ارائه میشود، که همهی آنها میتوانند در یک مجموعه از Replicaهای MongoDB با یکدیگر سازگاری داشته باشند. این امر باعث میشود که ارزیابی و جابجایی میان آنها و همچنین بهینه سازی برای نیازهای خاص برنامههای کاربردی آسانتر شود که میتوان ترکیب موتور In-Memory برای عملیات با تاخیر بسیار پایین با موتور مبتنی بر دیسک برای پایداری را به عنوان مثال مطرح نمود . موتورهای ذخیرهسازی پشتیبانی شده عبارتند از:
- موتور ذخیره سازی پیش فرض WiredTiger. برای بسیاری از برنامههای کاربردی، کنترل همزمان جزئی و دقیق WiredTiger و فشردهسازی Native، بهترین عملکرد و کارایی ذخیرهسازی را برای طیف وسیعی از برنامهها فراهم میکند.
- موتور ذخیرهسازی رمزگذاری شده برای محافظت از اطلاعات بسیار حساس، بدون سربار عملکرد یا مدیریتی از رمزگذاری فایل سیستم جداگانه (به MongoDB Enterprise Advanced نیاز دارد)
- موتور ذخیره سازی In-Memory با عملکرد بسیار بالا همراه با تجزیه و تحلیل Real-Time، برای پرتوقعترین و حساسترین برنامهها نسبت به تاخیر (به MongoDB Enterprise Advanced نیاز دارد)
- موتور MMAPv1، یک نسخه بهبود یافته از موتور ذخیرهسازی مورد استفاده در MongoDB نسخههای قبل از x
مدل دادهی MongoDB
دادهها به عنوان اسناد
MongoDB دادهها را به عنوان اسناد در نوعی نوشتار باینری به نام (BSON (Binary JSON ذخیره میکند. کدگذاری BSON از نوشتار محبوب (JSON (JavaScript Object Notation فراتر رفته تا انواعی مانند int، long، date و floating point را نیز شامل شود. اسناد BSON حاوی یک یا چند فیلد هستند و هر فیلد حاوی مقدار یک نوع داده خاص، از جمله Arrayها، دادههای باینری و زیر اسناد میباشد.
اسنادی که تمایل به اشتراک یک ساختار مشابه دارند به صورت مجموعهای سازماندهی میشوند. میتوان مجموعهها را همانند یک جدول در یک دیتابیس رابطهای تصور کرد، اسناد مانند ردیفها هستند و فیلدها نیز مانند ستونها میباشند. برای مثال، مدل داده یک برنامه وبلاگ نویسی را در نظر میگیریم. در پایگاه داده رابطهای، مدل داده شامل چندین جدول است. برای ساده کردن مثال، فرض میکنیم که جداول شامل دستهها، برچسبها، کاربران، نظرات و مقالات میشوند. در MongoDB دادهها میتوانند به صورت دو مجموعه، یکی برای کاربران و دیگری برای مقالات، مدلسازی شوند. در هر سند وبلاگ ممکن است چندین نظر، چند برچسب و چندین دسته وجود داشته باشد، که هرکدام به صورت Arrayهایی تعبیهشده بیان میشوند.
همانطور که در این مثال نشان داده شده است، اسناد MongoDB معمولا تمام دادههای ثبت شده را در یک سند نگهداری میکنند. درحالی که در یک دیتابیس رابطهای، دادهها در تعداد زیادی جدول گشترش مییابند. با مدل سندی MongoDB، دادهها بیشتر محلی هستند، که نیاز به اتصال جداول جداگانه را به طور قابل توجهی کاهش میدهد. نتیجه عملکرد بسیار بالاتر و مقیاسپذیری در سراسر سخت افزار Commodity میباشد، به طوری که با یک بار خواندن دیتابیس میتوان تمام سندهای حاوی تمام دادههای مربوطه را بدست آورد. بر خلاف بسیاری از دیتابیسهای NoSQL، کاربران نیازی به ترک کامل اتصال دادهها ندارند. برای انعطافپذیری تحلیلی بیشتر، MongoDB با استفاده از عامل $Lookup، مفاهیم left-outer اتصال دادهها حفظ شده که کاربران را قادر میسازد تا بهترین ویژگیهای مدل داده رابطهای و غیر رابطهای را همزمان داشته باشند.
اسناد MongoDB BSON به ساختار اشیاء در زبان برنامهنویسی بسیار نزدیک است. این امر موجب میشود که برنامهنویسان سادهتر و سریعتر چگونگی Map شدن دادهها در برنامه به دادههای ذخیره شده در دیتابیس را مدلسازی کنند.