Architektura Expert
CQRS — oddělení čtení a zápisu¶
CQRSArchitekturaPatterns 3 min čtení
Command Query Responsibility Segregation pro lepší škálovatelnost. Implementace s praktickými příklady.
Co je CQRS?¶
CQRS odděluje zápis (Command) od čtení (Query). Čtení potřebuje rychlé dotazy přes denormalizovaná data, zápis potřebuje validaci a konzistenci.
Příklad¶
// Command — zápis
class OrderCommandHandler {
async createOrder(cmd) {
const order = new Order(cmd.customerId, cmd.items);
await this.orderRepo.save(order);
await this.eventBus.publish('OrderCreated', { orderId: order.id, total: order.total });
}
}
// Query — čtení z denormalizované view
class OrderQueryHandler {
async getOrderSummary(orderId) {
return this.readDb.query('SELECT * FROM order_views WHERE id = $1', [orderId]);
}
}
Kdy použít¶
- Ano: Vysoký poměr čtení vs zápis (90:10)
- Ano: Složité dotazy přes více agregátů
- Ne: Jednoduchý CRUD
- Ne: Silná konzistence je kritická
Shrnutí¶
CQRS je mocný, ale zvyšuje komplexitu. Použijte tam, kde čtecí a zápisové požadavky jsou výrazně odlišné.
Potřebujete pomoct s implementací?¶
Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.