Pular para o conteúdo principal

Banco de dados de séries temporais (TSDB): Um guia com exemplos

Saiba mais sobre bancos de dados de séries temporais e como eles diferem dos bancos de dados tradicionais, bem como seus principais recursos, casos de uso e opções populares.
Actualizado 9 de jan. de 2025  · 8 min de leitura

Há alguns anos, durante minha primeira semana em uma nova função de engenharia de software, pediram-me para investigar bancos de dados de séries temporais (TSDBs) para substituir nossa solução Postgres.

Eu não sabia absolutamente nada sobre o assunto e tinha muitas perguntas. O que é um banco de dados de séries temporais? Como isso funciona? Qual é a diferença entre ele e um banco de dados tradicional? Por que deveríamos usar um? Preciso de habilidades específicas para isso?

Desde então, aprendi muito sobre TSDBs e apliquei esse conhecimento em várias empresas para resolver uma ampla gama de problemas.

Neste artigo, resumirei o que aprendi nos últimos anos para que você tenha uma boa ideia do que são TSDBs, como eles funcionam e para quais casos de uso eles são mais adequados. Também apresentarei alguns dos TSDBs atualmente no mercado e darei dicas para que você possa escolher o que melhor atenda às suas necessidades.

O que são bancos de dados de séries temporais?

Imagine um termostato inteligente vendido pela empresa X que registra as leituras de temperatura a cada 30 segundos. Em um único dia, esse único dispositivo gera milhares de pontos de dados. Agora, multiplique isso por centenas ou milhares de dispositivos em uma cidade, e o volume de dados com registro de data e hora coletados pela empresa X se torna impressionante.

Para armazenar esses dados de forma eficiente e analisar tendências (como mudanças de temperatura ao longo do tempo ou picos repentinos), a empresa X precisa de um banco de dados que possa lidar com grandes velocidades de gravação e realizar consultas baseadas em tempo de forma eficiente.

Os bancos de dados tradicionais tendem a ter dificuldades com esse tipo de carga de trabalho porque não foram projetados para lidar com gravações de dados de alta frequência ou consultar dados de forma eficiente em intervalos de tempo específicos. É aí que entram os bancos de dados de séries temporais.

Os bancos de dados de séries temporais são bancos de dados especializados projetados para gerenciar dados organizados e indexados por tempo. Diferentemente dos bancos de dados tradicionais, que são otimizados para o armazenamento de dados de uso geral, os TSDBs se concentram no armazenamento, na consulta e na análise eficientes de sequências de pontos de dados com registro de data e hora.

bancos de dados tradicionais versus bancos de dados de séries temporais

Os TSDBs são especialmente adequados para aplicativos que lidam com fluxos de dados contínuos, como IoT, monitoramento de DevOps e análise financeira.

Características dos bancos de dados de séries temporais

Há algumas coisas que os TSDBs fazem de forma diferente dos bancos de dados tradicionais.

Otimizado para dados com registro de data e hora

Em sua essência, os TSDBs são criados para lidar com dados com registros de data e hora como um atributo fundamental. Cada ponto de dados em um TSDB inclui um registro de data e hora, que serve como índice primário. Isso permite que esses bancos de dados armazenem e recuperem com eficiência sequências ordenadas no tempo e forneçam acesso rápido a tendências históricas ou eventos recentes.

A maioria dos TSDBs usa particionamento baseado em tempo, o que significa que os dados são armazenados em partições com base em intervalos de tempo (por exemplo, por hora, diariamente). Isso permite uma poda eficiente, em que as consultas ignoram completamente as partições irrelevantes. 

Eles também podem implementar intervalos de tempoagrupando dados em janelas de tempo predefinidas (por exemplo, 1 minuto, 1 hora) para agregações mais rápidas.

Altas taxas de ingestão

Os dados de séries temporais geralmente são gerados em um ritmo rápido - pense nos dispositivos de IoT que enviam milhares de pontos de dados por segundo ou em uma ferramenta de monitoramento de servidor que captura métricas do sistema em tempo real. Os TSDBs são otimizados para essas altas taxas de gravação e podem ingerir grandes quantidades de dados sem diminuir a velocidade ou perder informações.

Em geral, isso é obtido com o uso de modelos de armazenamento de dados somente de acréscimo e buffers na memória para evitar bloqueios ou gargalos transacionais.

Consultas eficientes para intervalos de tempo

A análise de dados de séries temporais geralmente envolve a consulta de intervalos ou janelas de tempo específicos, como "últimas 24 horas" ou "este ano em comparação com o ano passado". Os TSDBs são criados com isso em mente, oferecendo recursos de consulta especializados que permitem que os usuários recuperem rapidamente dados em intervalos de tempo definidos. Eles também suportam agregações como médias, somas ou tendências para oferecer análises valiosas sem lógica de consulta complexa.

As técnicas de otimização de consulta incluem:

  • Dados pré-agregados: Os TSDBs geralmente pré-calculam resumos para intervalos de tempo comuns (por exemplo, médias horárias ou diárias).
  • Algoritmos de janela deslizante: Eles ajudam a calcular com eficiência as métricas em janelas de tempo móveis, como as médias móveis.

Políticas de compressão e retenção de dados

Para gerenciar a grande quantidade de dados de séries temporais gerados ao longo do tempo, os TSDBs usam técnicas avançadas de compactação de dados. Esses métodos reduzem os requisitos de armazenamento e, ao mesmo tempo, preservam o desempenho da consulta.

Os TSDBs geralmente incluem políticas de retenção para que os usuários possam definir por quanto tempo os dados devem ser mantidos. Por exemplo, um sistema pode reter dados detalhados do último mês enquanto faz downsampling para dados mais antigos. A redução da amostragem é o processo de reduzir a granularidade dos dados ao longo do tempo. Por exemplo:

  • As leituras de temperatura bruta podem ser registradas a cada 10 segundos nos últimos 7 dias.
  • Para dados mais antigos, o sistema pode reduzir a amostragem para médias horárias a fim de economizar espaço e, ao mesmo tempo, manter as tendências históricas.

Exemplos de técnicas avançadas de compactação incluem:

  • Codificação delta: Armazenar a diferença entre valores consecutivos em vez do valor total.
  • Compressão Gorilla: Um método usado para compactar com eficiência dados de séries temporais de ponto flutuante, armazenando alterações em formato binário.

recursos de bancos de dados de séries temporais

Casos de uso de bancos de dados de séries temporais

Os bancos de dados de séries temporais são usados em muitos aplicativos modernos orientados por dados e em diversos setores. Vamos explorar os principais casos de uso.

1. Internet das Coisas (IoT)

Os dispositivos de IoT, como termostatos inteligentes, sensores industriais e monitores ambientais, geram fluxos contínuos de dados com registro de data e hora. Os TSDBs são usados para armazenar e analisar esses dados e alimentar aplicativos como:

  • Casas inteligentes: Monitoramento e controle de aparelhos com base em dados sensíveis ao tempo.
  • Automação industrial: Acompanhamento do desempenho da máquina e detecção de anomalias em tempo real para minimizar o tempo de inatividade.
  • Monitoramento ambiental: Coleta de dados de sensores para rastrear a qualidade do ar, padrões climáticos ou níveis de água ao longo do tempo.

2. DevOps e monitoramento do sistema

No DevOps, os TSDBs são amplamente usados para monitorar a infraestrutura e os aplicativos de TI, coletando métricas como uso da CPU, consumo de memória e taxa de transferência da rede. Eles permitem:

  • Monitoramento de desempenho: Visualizando a integridade do sistema e as métricas de desempenho em tempo real.
  • Detecção de anomalias: Identificar padrões incomuns, como picos de carga do servidor ou latência da rede.
  • Planejamento de capacidade: Usar tendências históricas para prever e alocar necessidades futuras de recursos.

Ferramentas como Prometheus e Grafana geralmente se integram aos TSDBs para fornecer recursos de visualização e alerta para as equipes de DevOps.

3. Mercados financeiros

Os TSDBs são essenciais para processar e analisar as grandes quantidades de dados de alta frequência gerados nos mercados financeiros. Eles são usados para:

  • Negociação algorítmica: Armazenamento e análise de dados de mercado em milissegundos para executar negociações com base em tendências em tempo real.
  • Gerenciamento de riscos: Monitoramento de métricas financeiras ao longo do tempo para avaliar e mitigar riscos.
  • Análise de mercado: Análise de dados históricos para identificar padrões, tendências e anomalias no comportamento do mercado.

4. Outros aplicativos

Embora os três casos de uso acima sejam muito comuns, os bancos de dados de séries temporais também podem encontrar aplicações em vários outros campos:

  • Cuidados com a saúde: Monitoramento dos sinais vitais do paciente em tempo real e análise de dados de dispositivos médicos.
  • Pesquisa científica: Coleta e análise de dados para modelagem climática, observações astronômicas e outros fenômenos dependentes do tempo.
  • Análise de negócios: Acompanhar o comportamento do cliente, analisar as tendências de vendas e monitorar os principais indicadores de desempenho ao longo do tempo.

casos de uso de banco de dados de séries temporais

Melhores bancos de dados de séries temporais: Uma visão geral comparativa

Os bancos de dados de séries temporais têm vários formatos e formas, cada um adaptado a casos de uso específicos.

InfluxDB

O InfluxDB é um popular banco de dados de séries temporais de código aberto desenvolvido pela InfluxData. Ele foi projetado especificamente para altas taxas de ingestão e consulta eficiente de dados com registro de data e hora, tornando-o uma solução comum para monitoramento de IoT, métricas de DevOps e análise em tempo real.

Prós

Contras

Altas taxas de ingestão para grandes volumes de dados.

Requer gerenciamento manual das políticas de retenção para otimizar o armazenamento.

O InfluxQL, semelhante ao SQL, simplifica a consulta para analistas familiarizados com bancos de dados relacionais.

Desafios de escalabilidade para conjuntos de dados muito grandes sem recursos empresariais.

Integra-se facilmente com ferramentas como o Grafana para visualização.

Recursos limitados de consulta avançada em comparação com bancos de dados baseados em SQL.

TimescaleDB

O TimescaleDB é uma extensão de código aberto para o PostgreSQLprojetada para combinar o poder dos bancos de dados relacionais com a funcionalidade de séries temporais. Ele permite que você utilize o SQL e, ao mesmo tempo, manipule com eficiência os dados com registro de data e hora. Isso o torna particularmente adequado para casos de uso que exigem a integração de dados de séries temporais com dados relacionais, como análise de negócios ou telemetria de IoT.

Prós

Contras

O suporte total a SQL permite a fácil integração com as ferramentas e os fluxos de trabalho existentes do PostgreSQL.

Requer conhecimento de PostgreSQL para configuração e manutenção.

Hipertabelas: Particionar automaticamente dados de séries temporais para armazenamento e consultas eficientes.

Pode ainda não corresponder à velocidade de ingestão de TSDBs dedicados, como o InfluxDB.

Combina dados relacionais e de séries temporais em um único banco de dados.

 

Prometeu

O Prometheus é um sistema de monitoramento e alerta com um TSDB integrado, amplamente adotado em DevOps para métricas de sistema em tempo real, rastreamento de desempenho e gerenciamento de alertas.

Prós

Contras

Leve e fácil de implantar, especialmente com o Kubernetes.

Armazenamento limitado de longo prazo sem soluções externas.

A raspagem de métricas baseada em pull garante que somente os dados relevantes sejam coletados.

A escalabilidade depende de ferramentas adicionais, como Thanos ou Cortex.

O PromQL oferece recursos avançados de consulta.

Concentra-se em métricas e pode não atender a todas as necessidades de uso geral do TSDB.

Casa de cliques

O ClickHouse é um banco de dados colunar de código aberto projetado para consultas analíticas de alto desempenho. Embora não seja um TSDB tradicional, sua arquitetura o torna excepcionalmente adequado para dados de séries temporais, especialmente quando o desempenho de consultas rápidas é fundamental.

Prós

Contras

Alto desempenho de consulta para cargas de trabalho analíticas.

Complexidade de configuração e manutenção para iniciantes.

O armazenamento em colunas reduz a latência das consultas.

Não foi projetado especificamente como um TSDB (pode exigir soluções alternativas).

Apache Cassandra

O Apache Cassandra é um banco de dados NoSQL distribuído criado para escalabilidade horizontal e alta disponibilidade. Embora não seja exclusivamente um TSDB, ele pode ser usado com eficiência para cargas de trabalho de séries temporais, especialmente quando a durabilidade e a tolerância a falhas são essenciais.

Prós

Contras

Excelente escalabilidade horizontal.

A consulta de dados de séries temporais pode ser complicada sem otimizações adicionais, pois o banco de dados não possui recursos nativos de consulta e agregação de séries temporais.

Tolerante a falhas e altamente disponível.

 

Amazon Timestream

O Amazon Timestream é um serviço de banco de dados de séries temporais totalmente gerenciado oferecido pela AWS. Criado para ser escalável e simples, ele é ideal para organizações que já utilizam a infraestrutura da AWS para IoT e monitoramento de aplicativos.

Prós

Contras

A arquitetura sem servidor simplifica o gerenciamento.

Funcionalidade limitada fora do ecossistema da AWS.

Escala automaticamente para lidar com grandes volumes de dados.

Os custos podem aumentar com altas taxas de ingestão de dados.

Escolhendo o banco de dados de séries temporais correto: Principais considerações

Os bancos de dados de séries temporais oferecem diferentes recursos para atender a diferentes necessidades. Então, como você escolhe a que melhor resolverá o seu problema?

Avaliar o volume de dados e a taxa de ingestão

As cargas de trabalho de séries temporais podem variar significativamente em termos de volume de dados (a quantidade de dados gerados) e taxa de ingestão (a velocidade com que os dados são gravados). Alguns sistemas geram dados esporadicamente, enquanto outros produzem grandes quantidades de dados a cada segundo.

Por exemplo:

  • Uma implantação de IoT com milhares de dispositivos pode exigir a ingestão de milhões de pontos de dados a cada minuto.
  • Uma ferramenta de monitoramento de DevOps pode coletar métricas de servidor em tempo real a cada poucos segundos em milhares de servidores.

Nem todos os TSDBs são otimizados para velocidades de gravação extremamente altas. Os sistemas que não conseguem acompanhar a ingestão deixam cair os dados, o que leva a lacunas na análise e a resultados incompletos.

Se os seus sistemas geram uma grande quantidade de dados, você precisa procurar:

  • TSDBs que suportam altas taxas de ingestão sem degradação do desempenho.
  • Soluções com modelos de armazenamento somente de anexos e buffer na memória para otimização de gravação (por exemplo, InfluxDB, TimescaleDB, Prometheus).

Eu realmente recomendaria que você avaliasse a taxa de transferência de gravação de um TSDB testando-o com cargas de trabalho realistas. Suítes de benchmarking como Time Series Benchmark Suite podem ajudar a simular cenários de ingestão.

Como alternativa, você pode conectar seu sistema ao TSDB de sua escolha em uma avaliação gratuita e avaliar os resultados. Falando por experiência própria, perceber que seus pipelines geram 30 GB de dados a cada 30 minutos não é uma surpresa divertida.

Observe os padrões e a complexidade das consultas

O tipo de consultas que você executará com frequência é outro fator crítico ao escolher um TSDB. Diferentes bancos de dados são otimizados para diferentes cargas de trabalho de consulta.

Exemplos de padrões de consulta:

  • Consultas de intervalo simples: Obtenção de pontos de dados em um intervalo de tempo específico (por exemplo, "últimos 7 dias").
  • Consultas de agregação: Cálculo de médias, somas ou percentis (por exemplo, "uso médio da CPU por hora").
  • Reduzir a amostragem: Resumir dados brutos em uma granularidade menor (por exemplo, médias horárias de leituras por segundo).
  • Análises complexas: Correlacionando vários fluxos de dados, detectando anomalias ou executando análises preditivas.

Alguns TSDBs são excelentes para consultas simples baseadas em tempo, enquanto outros são mais adequados para agregações complexas ou cargas de trabalho de análise. A escolha do banco de dados errado pode resultar em consultas lentas e pipelines de análise ineficientes.

Talvez você queira procurar:

  • TSDBs com suporte integrado para os tipos de consulta mais comuns.
  • Sistemas com linguagens de consulta semelhantes a SQL (por exemplo, TimescaleDB com compatibilidade com PostgreSQL) para consultas mais complexas.
  • Recursos de consulta contínua que permitem que você pré-compute agregações para dados acessados com frequência e reduza a carga de consulta em tempo de execução.

Verifique a escalabilidade e a disponibilidade

À medida que o volume de dados aumenta, o TSDB deve ser dimensionado sem problemas, mantendo o desempenho. Além disso, para aplicativos de missão crítica, o banco de dados deve ser altamente disponível para garantir tempo de inatividade zero.

Se o seu TSDB não puder ser dimensionado horizontalmente (adicionando mais servidores) ou verticalmente (aumentando os recursos do servidor), você corre o risco de ter gargalos no sistema à medida que os dados aumentam.

Você deve procurar:

  • Escalabilidade horizontal: Bancos de dados que podem distribuir dados em vários nós (com sharding por exemplo)
  • Alta disponibilidade: Mecanismos integrados de clustering, replicação e failover para garantir o tempo de atividade.

A integração e o ecossistema são realmente importantes

A capacidade de um TSDB de se integrar às ferramentas e aos fluxos de trabalho existentes é muito importante para garantir que sua equipe o adote e o use com eficiência.

Procure por você:

  • Integração com suas ferramentas (plataformas de monitoramento, estrutura de processamento de dados, ferramentas de BI, etc.)
  • Suporte para pipelines de ingestão: Procure TSDBs que se integrem às suas fontes de dados, como dispositivos IoT, APIs ou agregadores de registros.
  • APIs e linguagens de consulta: Os TSDBs que oferecem APIs REST, suporte a SQL ou SDKs de linguagem facilitam a integração para os desenvolvedores.

Custo

O TSDB pode ser caro, especialmente à medida que o volume de dados aumenta. Os custos podem variar dependendo do licenciamento, dos requisitos de infraestrutura e dos esforços de manutenção.

Alguns TSDBs são de código aberto e de uso gratuito, mas podem exigir custos operacionais e de infraestrutura significativos. Outros são comerciais com taxas de licenciamento, mas vêm com recursos avançados e suporte.

Certifique-se de que você esteja atento:

  • Taxas de licenciamento: Código aberto (por exemplo, Prometheus, VictoriaMetrics) vs. comercial (por exemplo, InfluxDB Enterprise).
  • Custos de infraestrutura: TSDBs hospedados na nuvem vs. soluções auto-hospedadas.
  • Custos indiretos de manutenção: Custos operacionais para dimensionamento, backups e recuperação de desastres.

Para cargas de trabalho menores, você pode considerar serviços gerenciados hospedados na nuvem que reduzem a sobrecarga operacional, mas certifique-se de levar em conta os custos de longo prazo à medida que os dados aumentam. Também recomendo que você implemente políticas de retenção de dados e reduza a amostragem desde o início para gerenciar os custos de armazenamento de forma eficaz.

Conclusão

Espero que você tenha gostado de ler este guia tanto quanto eu gostei de escrevê-lo!

Agora que você entende os fundamentos dos bancos de dados de séries temporais, pode escolher um banco de dados de sua preferência, obter uma avaliação gratuita e começar a colocar suas habilidades em prática!


Marie Fayard's photo
Author
Marie Fayard

Engenheiro de software sênior, redator técnico e consultor com formação em física. Comprometida em ajudar as startups em estágio inicial a atingir seu potencial e tornar conceitos complexos acessíveis a todos.

Temas

Aprenda engenharia de dados com estes cursos!

programa

Associate Data Engineer

30 hours hr
Learn the fundamentals of data engineering: database design and data warehousing, working with technologies including PostgreSQL and Snowflake!
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

O que é um banco de dados gráfico? Um guia para iniciantes

Explore o intrincado mundo dos bancos de dados gráficos com nosso guia para iniciantes. Entenda as relações entre os dados, aprofunde-se na comparação entre bancos de dados relacionais e gráficos e explore casos de uso práticos.
Kurtis Pykes 's photo

Kurtis Pykes

11 min

blog

Bancos de dados NoSQL: O que todo cientista de dados precisa saber

Descubra para que servem os bancos de dados NoSQL, por que os cientistas de dados os utilizam e uma lista dos melhores bancos de dados NoSQL disponíveis.
Zoumana Keita 's photo

Zoumana Keita

12 min

blog

Uma introdução ao DuckDB: O que é e por que você deve usá-lo?

Explore o DuckDB, o banco de dados analítico rápido e fácil de usar para Python e R. Conheça seus principais recursos, casos de uso e como ele otimiza as tarefas de análise de dados.
Kurtis Pykes 's photo

Kurtis Pykes

7 min

tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

See MoreSee More