CQRS pattern
CQRS এর পূর্ণরূপ হচ্ছে Command and Query Responsibility Segregation এখানে
Command
Command হচ্ছে ডাটাবেসে ডাটা পরিবর্তন হয় এমন কমান্ড। যেমন
- insert
- update
- delete
Query
Query হচ্ছে ডাটাবেসে ডাটা পরিবর্তন হয় না এমন কমান্ড, যেমন
- select
Segregation
Segregation মানে হচ্ছে command এবং query এর জন্য আলাদা সার্ভিস থাকবে এবং তাদের জন্য আলাদা ডাটাবেস থাকবে। মেসেজ ব্রোকার বা অন্য উপায়ে command সার্ভিস থেকে ডাটা query সার্ভিসে পাঠানো হবে।
CQRS এর সুবিধা
- রাইট অপটিমাইজ ডাটাবেস ব্যবহার করা যাবে command সার্ভিস এর জন্য
- রিড অপটিমাইজ ডাটাবেস ব্যবহার করা যাবে query সার্ভিস এর জন্য
- আলাদা ডাটাবেস টেকনোলজি ব্যবহার করা যাবে
- দরকার অনুযায়ী query সার্ভিস এ অনেক ডুপলিকেট ডাটা রেখে এপ্লিকেশনকে ফাস্ট বানানো যায়
- query সার্ভিসকে ইচ্ছে মতো একটা পার্টকে স্কেল করা যাবে
CQRS এর অসুবিধা
- ডাটা সব সময় ইভেনচুয়াল কনসিস্টেন্ট হবে, মানে রিয়েল টাইম ডাটা পাওয়ার কোন গ্যারান্টি থাকবে না