Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

CQRS — oddělení čtení a zápisu

01. 01. 2024 1 min čtení advanced

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.

Nezávazná konzultace