O que tinybird faz?
Formatos de arquivo do Tinybird, regras SQL, padrões de otimização e melhores práticas para fontes de dados, pipes, endpoints e visualizações materializadas.
Introdução
Tinybird é uma plataforma de dados em tempo real que permite ingerir, processar e consultar grandes volumes de dados usando SQL. Este documento descreve as melhores práticas e padrões recomendados para trabalhar com os componentes principais do Tinybird: fontes de dados, pipes, endpoints e visualizações materializadas.
Fontes de Dados (Datasources)
- Formato de Arquivo: Use arquivos CSV ou NDJSON. Prefira NDJSON para dados aninhados ou streaming.
- Esquema: Defina explicitamente o esquema
.datasourcecom tipos de dados apropriados (ex:UInt64,DateTime,String). - Chave de Ordenação: Utilize
ENGINE = MergeTreecomORDER BYpara otimizar consultas. - Tamanho de Bloco: Para ingestão, ajuste
batch_sizeconforme a taxa de transferência, recomendado 100.000 linhas.
Pipes (Pipelines SQL)
- Modularidade: Divida transformações complexas em múltiplos nós de pipe para facilitar debug e reúso.
- Nós Finais: Use
ENDPOINTpara expor consultas otimizadas como APIs REST. - Filtros e Agregações: Aplique filtros cedo (
WHEREantes de agregações) para reduzir dados processados. - Uso de CTEs: Use Common Table Expressions (CTEs) com
WITHpara melhor legibilidade.
Exemplo de Pipe
WITH dados_filtrados AS (
SELECT
user_id,
COUNT(*) AS total_eventos
FROM datasource_eventos
WHERE data >= now() - INTERVAL 7 DAY
GROUP BY user_id
)
SELECT *
FROM dados_filtrados
ORDER BY total_eventos DESC
LIMIT 10
Endpoints
- Parâmetros: Defina parâmetros de consulta (
{{param}}) para que a API seja flexível. - Cache: Ative cache para consultas frequentes com
CACHE TTL 300(segundos). - Monitoramento: Use logs do Tinybird para monitorar latência e erros.
Visualizações Materializadas (Materialized Views)
- Quando Usar: Utilize para pré-agregar dados de alto volume, reduzindo custo e tempo de consulta.
- Criação: Defina via comando CREATE MATERIALIZED VIEW com engine AggregatingMergeTree.
- Manutenção: Atualize incrementalmente, evitando recálculo completo.
Boas Práticas Gerais
- Nomenclatura: Use snake_case para nomes de fontes de dados, pipes e colunas.
- Testes: Implemente testes de integração usando dados de amostra.
- Versionamento: Mantenha arquivos
.datasourcee.pipeem controle de versão (Git). - Documentação: Documente dependências e lógicas complexas via comentários SQL.