Pular para o conteúdo
Skillpedia
Machine learning48 mil · #2944

event-store-design

Ajuda seu agente a projetar e implementar bancos de dados para sistemas que registram todas as mudanças como eventos. É essencial para construir a infraestrutura de rastreamento de dados.

O que ela faz

Esta ferramenta ajuda a projetar e configurar "event stores", que são bancos de dados especiais para guardar eventos em sistemas de software. É útil para quem está construindo a infraestrutura de um sistema que registra todas as mudanças como uma sequência de eventos.

Quando usar

  • ✓Ao construir a base de um sistema que registra cada ação.
  • ✓Ao escolher qual tecnologia usar para guardar esses eventos.
  • ✓Ao configurar como os eventos serão armazenados e recuperados.

Exemplo do que pedir para a IA

“Como posso configurar um event store usando PostgreSQL para registrar eventos de usuários?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/event-store-design/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/event-store-design/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta analisa seus objetivos e restrições, aplica as melhores práticas de design de event stores e fornece passos práticos. Ela pode mostrar exemplos de como configurar o banco de dados ou escrever o código para gerenciar os eventos.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill event-store-design

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/event-store-design/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Design de Event Store

Guia completo para projetar event stores para aplicações com event sourcing.

Não use esta habilidade quando

  • A tarefa não estiver relacionada ao design de event store
  • Você precisar de um domínio ou ferramenta diferente fora deste escopo

Instruções

  • Clarifique objetivos, restrições e entradas necessárias.
  • Aplique as melhores práticas relevantes e valide os resultados.
  • Forneça passos acionáveis e verificação.
  • Se exemplos detalhados forem necessários, abra resources/implementation-playbook.md.

Use esta habilidade quando

  • Projetando infraestrutura de event sourcing
  • Escolhendo entre tecnologias de event store
  • Implementando event stores customizados
  • Otimizando o armazenamento e recuperação de eventos
  • Configurando esquemas de event store
  • Planejando a escalabilidade do event store

Conceitos Principais

1. Arquitetura do Event Store

┌─────────────────────────────────────────────────────┐
│                    Event Store                       │
├─────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
│  │   Stream 1   │  │   Stream 2   │  │   Stream 3   │ │
│  │ (Aggregate)  │  │ (Aggregate)  │  │ (Aggregate)  │ │
│  ├─────────────┤  ├─────────────┤  ├─────────────┤ │
│  │ Event 1     │  │ Event 1     │  │ Event 1     │ │
│  │ Event 2     │  │ Event 2     │  │ Event 2     │ │
│  │ Event 3     │  │ ...         │  │ Event 3     │ │
│  │ ...         │  │             │  │ Event 4     │ │
│  └─────────────┘  └─────────────┘  └─────────────┘ │
├─────────────────────────────────────────────────────┤
│  Global Position: 1 → 2 → 3 → 4 → 5 → 6 → ...     │
└─────────────────────────────────────────────────────┘

2. Requisitos do Event Store

Requisito Descrição
Apenas Adição Eventos são imutáveis, apenas adições
Ordenado Ordem por stream e global
Versionado Controle de concorrência otimista
Assinaturas Notificações de eventos em tempo real
Idempotente Lida com escritas duplicadas com segurança

Comparação de Tecnologias

Tecnologia Ideal Para Limitações
EventStoreDB Event sourcing puro Propósito único
PostgreSQL Stack Postgres existente Implementação manual
Kafka Streaming de alta vazão Não ideal para consultas por stream
DynamoDB Serverless, nativo da AWS Limitações de consulta
Marten Ecossistemas .NET Específico para .NET

Modelos

Modelo 1: Esquema de Event Store PostgreSQL

-- Events table
CREATE TABLE events (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    stream_id VARCHAR(255) NOT NULL,
    stream_type VARCHAR(255) NOT NULL,
    event_type VARCHAR(255) NOT NULL,
    event_data JSONB NOT NULL,
    metadata JSONB DEFAULT '{}',
    version BIGINT NOT NULL,
    global_position BIGSERIAL,
    created_at TIMESTAMPTZ DEFAULT NOW(),

    CONSTRAINT unique_stream_version UNIQUE (stream_id, version)
);

-- Index for stream queries
CREATE INDEX idx_events_stream_id ON events(stream_id, version);

-- Index for global subscription
CREATE INDEX idx_events_global_position ON events(global_position);

-- Index for event type queries
CREATE INDEX idx_events_event_type ON events(event_type);

-- Index for time-based queries
CREATE INDEX idx_events_created_at ON events(created_at);

-- Snapshots table
CREATE TABLE snapshots (
    stream_id VARCHAR(255) PRIMARY KEY,
    stream_type VARCHAR(255) NOT NULL,
    snapshot_data JSONB NOT NULL,
    version BIGINT NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- Subscriptions checkpoint table
CREATE TABLE subscription_checkpoints (
    subscription_id VARCHAR(255) PRIMARY KEY,
    last_position BIGINT NOT NULL DEFAULT 0,
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

Modelo 2: Implementação de Event Store em Python

from dataclasses import dataclass, field
from datetime import datetime
from typing import Any, Optional, List
from uuid import UUID, uuid4
import json
import asyncpg

@dataclass
class Event:
    stream_id: str
    event_type: str
    data: dict
    metadata: dict = field(default_factory=dict)
    event_id: UUID = field(default_factory=uuid4)
    version: Optional[int] = None

…
Perguntas frequentes

O que é 'event sourcing'?

É uma forma de construir sistemas onde todas as mudanças de estado são salvas como uma sequência de eventos, em vez de apenas o estado atual. Isso permite reconstruir o estado a qualquer momento.

Quais tecnologias são recomendadas?

Depende do seu caso. Para sistemas focados em event sourcing, EventStoreDB é uma opção. Para quem já usa PostgreSQL, Marten (.NET) ou Kafka para streaming de alta vazão também são considerados.

O que significa 'append-only'?

Significa que os eventos, uma vez registrados, não podem ser alterados ou excluídos. Apenas novos eventos podem ser adicionados à sequência.

Detalhes

Descrição original do autor

Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2944
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas