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

Event Sourcing — stav jako historie událostí

01. 01. 2024 1 min čtení advanced

Architektura Expert

Event Sourcing — stav jako historie událostí

Event SourcingEventsCQRS 3 min čtení

Ukládejte stav jako sekvenci událostí. Event store, projekce, snapshoty a implementace.

Princip

Místo aktuálního stavu ukládáte sekvenci událostí. Stav získáte přehráním všech eventů.

# Tradiční: Account { id: 1, balance: 150 }
# Event Sourcing:
AccountCreated  { id: 1, balance: 0 }
MoneyDeposited  { amount: 200 }
MoneyWithdrawn  { amount: 50 }
# → Replay: 0 + 200 - 50 = 150

Event Store

class EventStore {
    async append(aggregateId, events, expectedVersion) {
        const current = await this.getVersion(aggregateId);
        if (current !== expectedVersion) throw new Error('Concurrency conflict');
        for (const event of events) {
            await this.db.query(
                'INSERT INTO events (aggregate_id, version, type, data) VALUES ($1, $2, $3, $4)',
                [aggregateId, ++current, event.type, JSON.stringify(event.data)]
            );
        }
    }
}

Projekce

Eventy nejsou efektivní pro dotazy. Projekce = read modely aktualizované při každém novém eventu. Snapshoty ukládají stav po N eventech.

Shrnutí

Event Sourcing dává kompletní audit trail a časové cestování. Ale přidává komplexitu. Používejte kde je historie klíčová (finance, compliance).

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