Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.analytics.synapside.com/llms.txt

Use this file to discover all available pages before exploring further.

Esta seção detalha a estrutura técnica do banco de dados PostgreSQL 18 do S.Analytics, incluindo tabelas principais, campos, tipos de dados e índices de performance.

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

CREATE TABLE events (
  event_uuid UUID PRIMARY KEY,
  user_uuid UUID NOT NULL,
  event_type VARCHAR(50) NOT NULL,
  event_ts TIMESTAMP WITH TIME ZONE NOT NULL,
  recorded_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  data JSONB,
  session_uuid UUID,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

Campos Principais

CampoTipoDescrição
event_uuidUUIDIdentificador único do evento (chave primária)
user_uuidUUIDIdentificador único do usuário que gerou o evento
event_typeVARCHAR(50)Tipo do evento (pageview, click, form_submit, session_start, ou customizado)
event_tsTIMESTAMP WITH TIME ZONEData e hora em que o evento ocorreu (com timezone)
recorded_atTIMESTAMP WITH TIME ZONEData e hora em que o evento foi registrado no banco
dataJSONBCampo flexível contendo dados específicos do evento (estrutura varia por tipo)
session_uuidUUIDIdentificador da sessão do usuário
created_atTIMESTAMP WITH TIME ZONETimestamp 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

CREATE TABLE user_identities (
  identity_uuid UUID PRIMARY KEY,
  user_uuid UUID NOT NULL REFERENCES events(user_uuid),
  identity_type VARCHAR(50) NOT NULL,
  identity_value VARCHAR(255) NOT NULL,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

Campos

CampoTipoDescrição
identity_uuidUUIDIdentificador único da identificação
user_uuidUUIDUsuário anônimo que foi identificado (chave de JOIN com events.user_uuid)
identity_typeVARCHAR(50)Método de identificação (email, phone, user_id, etc.)
identity_valueVARCHAR(255)Valor do identificador
event_tsTIMESTAMP WITH TIME ZONEMomento em que a identificação foi registrada
recorded_atTIMESTAMP WITH TIME ZONEMomento de gravação no banco
dataJSONBCampo flexível contendo dados específicos da identificação

Exemplos de Consultas Úteis

Contar eventos por tipo (últimos 30 dias)

SELECT
  event_type,
  COUNT(*) as total
FROM events
WHERE event_ts >= NOW() - INTERVAL '30 days'
GROUP BY event_type
ORDER BY total DESC;

Usuários únicos por dia

SELECT
  DATE(event_ts) as data,
  COUNT(DISTINCT user_uuid) as usuarios_unicos
FROM events
WHERE event_ts >= NOW() - INTERVAL '7 days'
GROUP BY DATE(event_ts)
ORDER BY data DESC;

Identificar usuários por email

SELECT DISTINCT
  e.user_uuid,
  ui.identity_value as email,
  COUNT(e.event_uuid) as total_eventos
FROM events e
JOIN user_identities ui ON e.user_uuid = ui.user_uuid
WHERE ui.identity_type = 'email'
  AND ui.identity_value LIKE '%@example.com'
GROUP BY e.user_uuid, ui.identity_value
ORDER BY total_eventos DESC;