dotNet full-stack web developer
چرا می خواهید پایگاه داده خواندن/نوشتن جداگانه داشته باشید؟
در اینجا چند نکته وجود دارد که باید در نظر بگیرید.
به عنوان مهندسان نرم افزار، ما همیشه به دنبال راه هایی برای بهبود برنامه ها و سیستم های خود هستیم. درست؟
یکی از تکنیک هایی که اغلب نادیده گرفته می شود استفاده از پایگاه های داده خواندن و نوشتن (CQRS) جداگانه است.
و این طیفی از مزایای را ارائه می دهد:
- عملکرد بهینه شده (Optimized performance)
- افزایش مقیاس پذیری (Increased scalability)
- تحمل خطا (Fault tolerance)
بیایید آنها را تجزیه کنیم.
اول، این امکان را برای عملکرد بهینه پایگاه داده فراهم می کند. با جدا کردن خواندن از نوشتن، می توانید بهتر هر پایگاه داده را برای هدف خاص خود تنظیم کنید و از conflict جلوگیری کنید.
مزیت دیگر افزایش مقیاس پذیری است. شما می توانید هر پایگاه داده را به طور مستقل با استفاده از پایگاه های داده خواندن و نوشتن جداگانه مقیاس کنید. این به ویژه زمانی مفید است که برنامه شما دارای ترافیک خواندنی سنگین است، اما ترافیک نوشتن کمی دارد یا برعکس.
پایگاه داده خواندن و نوشتن جداگانه نیز می تواند تحمل خطا را بهبود بخشد. در صورت قطعی در پایگاه داده نوشتن، می توانید در حین بازیابی پایگاه داده نوشتن، خواندن ها را به پایگاه داده خواندنی هدایت کنید. این می تواند به کاهش زمان خرابی کمک کند و اطمینان حاصل کند که برنامه شما در دسترس کاربران شما باقی می ماند.
در نهایت، داشتن پایگاه داده جداگانه می تواند کد برنامه شما را ساده کند. شما می توانید از فناوری های مختلف پایگاه داده برای پایگاه های خواندن و نوشتن استفاده کنید یا حتی از طرح های مختلف برای بهینه سازی هر کدام برای هدف خود استفاده کنید. این می تواند درک و نگهداری کد برنامه شما را آسان تر کند.
چه با استفاده از فناوری پایگاه داده یکسان یا در حال اجرا در یک محیط polyglot persistence، ایدههای اصلی همچنان پابرجا هستند.
با این حال، یک نقطه ضعف بزرگ افزایش پیچیدگی عملیاتی است.
اکنون باید حفظ چندین data store، همگام سازی داده ها بین آنها و حل برای eventual consistency را در نظر بگیرید.
مهندسی نرمافزار، برای من، داشتن گزینهها و توانایی در نظر گرفتن tradeoff هایی است که انجام میدهید و آنچه را که میخواهید به دست آورید یا از دست بدهید.
مطلبی دیگر از این انتشارات
مقایسه Serilog, log4net و NLog کتابخانه های Logging در .Net
مطلبی دیگر از این انتشارات
معماری Clean Architecture در .NET Core : یک بررسی اجمالی
مطلبی دیگر از این انتشارات
Load Balancer vs. Reverse Proxy vs. API Gateway