Aparência
Por que o banco é genérico?
Você vai aprender: separar fonte de coleta, dispositivo, métrica, amostra e mensagem original.
O limite do modelo antigo
Uma tabela com colunas específicas, como powerW e gridVoltageV, atende um conjunto fixo de leituras. Acrescentar grandezas diferentes pode exigir novas colunas e migrations.
O modelo atual armazena o nome da métrica e seu valor como dados. Ele não exige uma nova coluna para cada grandeza. Isso não elimina o trabalho de validar unidade, significado e apresentação.
Cinco responsabilidades
| Conceito | Tabela | Pergunta |
|---|---|---|
| Fonte física | inverter_sources | Como e com qual adapter consultar? |
| Dispositivo de telemetria | devices | Quem publicou? |
| Definição de métrica | metric_definitions | O que significa a chave? |
| Amostra numérica | measurements | Qual valor, em qual instante? |
| Mensagem original | raw_messages | O que chegou e passou na validação? |
O inventário físico não tem uma relação Prisma direta com Device. A identidade de telemetria é derivada no coletor e reconhecida na ingestão. Não invente uma chave estrangeira entre essas tabelas.
Uma mensagem, várias linhas
Um payload fictício com power_w e energy_today_kwh gera duas medições, uma por chave, além de um registro bruto. O catálogo de dispositivo e métrica é criado ou atualizado conforme as regras da persistência.
Isso facilita consultar uma grandeza entre dispositivos, mas aumenta a quantidade de linhas. Índices ajudam buscas; retenção, deduplicação e escala continuam decisões explícitas.
Dois tipos de histórico
raw_messages preserva o que chegou, inclusive mensagens inválidas. measurements oferece valores numéricos para gráficos. Os registros brutos não devem virar exportação pública automática: podem conter identidades e detalhes restritos.
Uma transação protege os efeitos de uma mensagem válida contra gravação parcial. Ela não certifica a precisão elétrica e não elimina mensagens repetidas.
Siga para persistência explicada e o schema de referência.
Revisão técnica: 06/10/2026. Fontes: schema.prisma e persistence.ts.