برنامه نویسی

اصول MongoDB (قسمت 1)

MongoDB چیست؟

MongoDB یک پایگاه داده NoSQL سند گرا است که داده ها را در اسناد JSON منعطف ذخیره می کند. این انعطاف‌پذیری، همراه با مقیاس‌پذیری و قابلیت‌های جستجو، آن را به گزینه‌ای محبوب برای برنامه‌های کاربردی مدرن که با داده‌های متنوع و به سرعت در حال تغییر سر و کار دارند، تبدیل می‌کند.

سیستم مدیریت پایگاه داده رابطه ای در مقابل MongoDB

اگر قبلاً با یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) کار کرده باشید، بسیار قابل انتقال به MongoDB خواهد بود. نمودار زیر مفاهیمی را که اغلب در RDBMS و همتایان آن ها در MongoDB استفاده می شود را نشان می دهد.

RDBvsMongoDB

معماری استقرار

سه گزینه برای استقرار MongoDB وجود دارد: معماری های مستقل، تکراری و به اشتراک گذاری.

1) معماری مستقل

معماری های استقرار مستقل MongoDB

فقط یک سرور (به عنوان مثال، مستقل) وجود دارد.

مزایای:
سادگی، نیاز کمتر به منابع و زمان راه اندازی سریعتر.

معایب:
بدون در دسترس بودن بالا، مقیاس پذیری محدود و بدون تحمل خطا. به طور خاص، اگر سرور میزبان پایگاه داده خراب شود یا داده ها خراب شود، ممکن است تمام داده های خود را از دست بدهید. هیچ مکانیزم داخلی برای افزونگی یا بازیابی داده ها وجود ندارد.

2) معماری تکرار

معماری های استقرار تکرار MongoDB

داده ها از سرور اصلی در چندین سرور ثانویه تکثیر می شوند. اگر سرور اصلی در مجموعه از کار بیفتد، می توان به طور خودکار یک عضو دیگر (ثانویه) انتخاب و ارتقاء داد تا به عنوان اصلی انتخاب شود، تا زمان خرابی به حداقل برسد و اطمینان حاصل شود که داده ها در دسترس باقی می مانند.

مزایای:
در دسترس بودن بالا، مقیاس پذیری خواندن بهبود یافته (یعنی داده ها را می توان از سرورهای ثانویه خواند، مشکل گلوگاه را کاهش می دهد)، بازیابی فاجعه (یعنی، داده ها را می توان از یک سرور ثانویه باقیمانده همانطور که در بالا ذکر شد بازیابی کرد).

معایب:
پیچیدگی و هزینه های سخت افزاری بالاتر در مقایسه با معماری مستقل.

3) معماری شاردینگ

معماری های استقرار اشتراک گذاری MongoDB

Sharding امکان مقیاس افقی پایگاه داده را با افزودن سرورهای خرده بیشتر فراهم می کند. این برای مدیریت مجموعه داده های عظیم و توان بالای نوشتن/خواندن که یک سرور نمی تواند مدیریت کند، ایده آل است.

مزایای:
مقیاس پذیری افقی، عملکرد بهبود یافته برای پرس و جوهای خاص (یعنی فقط خرده(های) مربوطه باید برای پرس و جو قابل دسترسی باشد)، و انعطاف پذیری (یعنی مقیاس مستقل بخش های مختلف پایگاه داده).

معایب:
افزایش پیچیدگی، سربار عملکرد بالقوه و توزیع نابرابر داده ها و تنگناها.

آنچه من یک MongoDB را از دید توسعه دهنده قبلی خود می بینم

اعتراف می‌کنم که قبلاً فقط بر روی ایجاد یک پیکربندی صحیح برای داده‌های جاری به پایگاه داده (یعنی واکشی داده‌های مناسب برای مجموعه، فیلد و سند مناسب) بدون درک معماری پایگاه داده تمرکز می‌کردم، همانطور که در زیر نشان داده شده است.

نمایش MongoDB از توسعه دهنده

با این حال، من معتقدم که داشتن درک کامل از پایگاه های داده بسیار سودمند خواهد بود. سپس، می‌توانم درخواست‌هایم را بهینه کنم. بنابراین، من در مورد پایگاه های داده بیشتر یاد می گیرم.

هنگام پرس و جو چه اتفاقی می افتد

موتور ذخیره سازی MongoDB

ابتدا باید بدانیم که عملیات پرس و جو ما در حافظه پایگاه داده اتفاق می افتد و کاربران (یعنی توسعه دهندگان) اغلب با حافظه تعامل دارند. اگر پایگاه داده خود را یک خودرو در نظر بگیریم، حافظه پایگاه داده موتور است. موتور ذخیره سازی اعمال شده برای حافظه پایگاه داده و طراحی توزیع داده ها در ذخیره سازی فیزیکی به شدت بر عملکرد پایگاه داده ما تأثیر می گذارد. WiredTiger و In-Memory دو موتور ذخیره سازی متداول هستند.

برای بررسی موتور ذخیره سازی، دستور زیر را تایپ کنید.

db.serverStatus().storageEngine
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تصویر زیر یک معماری معمولی از یک موتور ذخیره سازی WiredTiger را نشان می دهد. این یک درک اساسی از معماری پایگاه داده WiredTiger ارائه می دهد.

معماری ذخیره سازی

ممنون که تا اینجا خوندید
هوآنگ
P/S: در قسمت 2، نمونه ای از بهینه سازی یک پرس و جو در MongoDB را می نویسم.

نوشته های مشابه

دکمه بازگشت به بالا