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

آیا CQRS همیشه به معنای دو دیتابیس جدا برای خواندن و نوشتن است؟

نشان کردن

پاسخ کوتاه

خیر؛ این یک باور غلط رایج است. CQRS در سطح پایه فقط یعنی مسیر کد Command و Query از هم جدا باشد؛ دیتابیس جدا (همراه Event Sourcing) یک گزینهٔ پیشرفتهٔ اختیاری برای سناریوهای بسیار مقیاس‌پذیر است.

پاسخ کامل

اکثر پروژه‌های واقعی از "CQRS سبک" استفاده می‌کنند: یک دیتابیس مشترک، اما Command از طریق Domain Entity/Repository و Query مستقیم با Dapper/SQL. فقط سیستم‌های با بار خواندن/نوشتن بسیار نامتقارن (مثل شبکه‌های اجتماعی بزرگ) به دیتابیس/مدل جدا برای Read نیاز پیدا می‌کنند.

نکته مهم

در مصاحبه، تفکیک "CQRS سبک" از "CQRS کامل با Event Sourcing" نشان‌دهندهٔ درک عمیق‌تر است.

اشتباه رایج

❌ رد کردن CQRS به‌عنوان «بیش‌ازحد پیچیده» بدون دانستن نسخهٔ سبک آن.