CodeShot
Seniorسختی 3 از ۵· در 42٪ مصاحبه‌های این حوزه پرسیده شده

آیا MongoDB از تراکنش (Transaction) پشتیبانی می‌کند؟

نشان کردن

پاسخ کوتاه

بله، از نسخهٔ ۴ به بعد MongoDB از تراکنش‌های چند-سندی (Multi-document Transactions) با معنای ACID پشتیبانی می‌کند، اما استفادهٔ سنگین از آن برخلاف فلسفهٔ اصلی طراحی NoSQL و می‌تواند کارایی را کاهش دهد.

پاسخ کامل

در طراحی سالم MongoDB، بیشتر تلاش می‌شود داده‌های مرتبط در یک Document واحد Embed شوند تا اصلاً نیاز به تراکنش چند-سندی پیش نیاید؛ تراکنش صریح بیشتر برای سناریوهای خاص و اجتناب‌ناپذیر استفاده می‌شود.

نکته مهم

اگر یک پروژه به‌شدت به تراکنش‌های پیچیدهٔ چندجدولی نیاز دارد، این می‌تواند نشانه‌ای باشد که SQL انتخاب مناسب‌تری بوده است.

اشتباه رایج

❌ طراحی مدل داده در MongoDB دقیقاً مثل SQL (کاملاً نرمال‌شده و پخش بین چند Collection) و سپس تکیهٔ سنگین به تراکنش برای جبران آن.