Tabela Principal: events
A tabela events é o coração do sistema de rastreamento do Synapside. Cada evento coletado é armazenado como uma linha nesta tabela.
Estrutura da Tabela
Campos Principais
| Campo | Tipo | Descrição |
|---|---|---|
event_uuid | UUID | Identificador único do evento (chave primária) |
user_uuid | UUID | Identificador único do usuário que gerou o evento |
event_type | VARCHAR(50) | Tipo do evento (pageview, click, form_submit, session_start, ou customizado) |
event_ts | TIMESTAMP WITH TIME ZONE | Data e hora em que o evento ocorreu (com timezone) |
recorded_at | TIMESTAMP WITH TIME ZONE | Data e hora em que o evento foi registrado no banco |
data | JSONB | Campo flexível contendo dados específicos do evento (estrutura varia por tipo) |
session_uuid | UUID | Identificador da sessão do usuário |
created_at | TIMESTAMP WITH TIME ZONE | Timestamp de criação do registro |
Tipos de Dados
- UUID: Identificador único universal de 128 bits, ideal para distribuição e evitar colisões
- VARCHAR(50): String de tamanho variável para tipos de eventos
- TIMESTAMP WITH TIME ZONE: Permite armazenar timestamps com informação de timezone, essencial para análises globais
- JSONB: Formato JSON binário do PostgreSQL, permite armazenamento flexível e consultas eficientes
Tabela: user_identities
A tabela user_identities mapeia identidades conhecidas (email, ID de cliente, etc) ao user_uuid centralizado.
Estrutura da Tabela
Campos
| Campo | Tipo | Descrição |
|---|---|---|
identity_uuid | UUID | Identificador único da identidade |
user_uuid | UUID | Referência ao usuário (chave estrangeira) |
identity_type | VARCHAR(50) | Tipo de identidade (email, customer_id, phone, etc) |
identity_value | VARCHAR(255) | O valor da identidade |
created_at | TIMESTAMP WITH TIME ZONE | Quando foi criado |
updated_at | TIMESTAMP WITH TIME ZONE | Quando foi atualizado |
Campo JSONB: Estrutura de Dados Dinâmicos
O campodata em cada evento é um JSONB que permite estrutura flexível. Diferentes tipos de eventos têm diferentes estruturas.
Pageview Events
Session Start Events
Click Events
Form Submit Events
Índices e Performance
Para otimizar consultas frequentes, a tabelaevents possui os seguintes índices:
Estratégia de Índices
- B-tree: Usado para colunas UUID e event_type (buscas iguais/intervalo)
- BRIN: Para timestamp (bloco de índice comprimido, eficiente para dados ordenados)
- GIN: Para JSONB (queries complexas no field dinâmico)
Particionamento (Recomendação para Escala)
Para enormes volumes de dados, considere particionarevents por período temporal:
- Performance de queries com filtro de data
- Facilita arquivamento de dados antigos
- Reduz tempo de VACUUM e ANALYZE
Segurança e Privacidade
Dados Sensíveis
O campodata pode conter informações sensíveis (emails em form_submit, etc). Recomendações:
- Não logarear senhas ou tokens
- Implementar mascaramento de dados sensíveis (PII)
- Aplicar políticas de retenção