Arquitetura Interna do TDengine para Dados de Séries Temporais

Visão Geral

O TDengine é um banco de dados distribuído de alto desempenho projetado especificamente para processamento de séries temporais. Desenvolvido como uma plataforma completa, integra quatro funcionalidades essenciais: armazenamento, cache, processamento de fluxo e subscrição de dados.

Conceitos Fundamentais

Componente Descrição
dnode Nó físico de dados, instância de execução do processo taosd
vnode Unidade lógica de armazenamento dentro de um dnode
vgroup Grupo de vnodes distribuídos, com replicação via Raft
mnode Nó gerenciador de metadados do cluster
qnode Nó dedicado a operações de consulta
snode Nó especializado em processamento de fluxos
taosc Driver cliente para interação com o cluster

Estrutura de Processos

O serviço principal executa como um único processo (taosd) que encapsula múltiplos componentes lógicos:

┌───────────────── Processo taosd ─────────────────┐
│┌───────┐ ┌───────┐ ┌──────┐ ┌──────┐ ┌──────┐   │
││ dnode │ │ mnode │ │vnode│ │ qnode │ │ snode│   │
│└───────┘ └───────┘ └──────┘ └──────┘ └──────┘   │
│┌────────────────── Camada RPC ─────────────────┐│
│└───────────────────────────────────────────────┘│
└──────────────────────────────────────────────────┘

Inicialização do taosd:

  1. Interpretação de parâmetros de configuração
  2. Inicialização do sistema de arquivos TFS
  3. Criação de gerenciadores de ciclo de vida
  4. Ativação sequencial dos componentes

VNode: Núcleo de Armazenamento

Cada VNode contém módulos especializados:

┌─────────── VNode ────────────┐
│┌──────┐ ┌──────┐ ┌──────┐   │
││METAD ││TSDB  ││WAL   │   │
│└──────┘ └──────┘ └──────┘   │
│┌─────────────┐ ┌──────────┐│
││Buffer Pool  ││Mecanismo  ││
││(3 segmentos)││de Sincron.││
│└─────────────┘ └──────────┘│
└─────────────────────────────┘

Mecanismo de buffer triplo:

  • Ativo: Recebe novas escritas
  • Commit: Em processo de persistência
  • Livre: Disponível para reutilização

Fluxo de Escrita

  1. Cliente envia operação INSERT
  2. taosc calcula hash da tabela e localiza vgroup
  3. Dados replicados via Raft para nós seguidores
  4. Persistência em WAL e memória (MemTable)
  5. Compactação assíncrona para disco

MNode: Gerenciamento Centralizado

Responsável por:

  • Topologia de cluster
  • Esquemas de bancos de dados
  • Controle de acesso
  • Tarefas agendadas (TTL, compactação)

Exemplo de transação distribuída:

1. Cria objeto de transação
2. Replicação via Raft
3. Execução em nós participantes
4. Confirmação ou reversão

Separação de Funções

QNode: Executa operações complexas (agregações, JOINs) isolando carga computacional
SNode: Processa fluxos de dados continuamente

Comunicação e Sincronização

Protocolo Raft implementado com:

  • Eleção de líder automática
  • Replicação assíncrona de logs
  • Transmissão de snapshots

Canais de comunicação dedicados:

  1. Servidor (requisições externas)
  2. Cliente (operações de saída)
  3. Status (monitoramento)
  4. Sincronização (Raft)

Modelo de Armazanamento

Estrutura de diretórios típica:

/dados/taos/vnode12/
├── vnode.conf
├── wal/
├── metadados/
└── tsdb/

Níveis de dados:

  1. Metadados globais (MNode)
  2. Metadados locais (VNode)
  3. Dados temporais (TSDB)

Parâmetros Críticos

Parâmetro Função
fqdn Identificação do nó na rede
serverPort Porta de comunicação principle
dataDir Diretório de armazenamento
vgroups Número de partições lógicas

Modelo de Concorrência

Grupos de threads especializados:

  • IO RPC: Comunicação de rede
  • Processamento: Execução de consultas
  • Persistência: Gravação em disco
  • Sincronização: Replicação Raft

Otimizações de Desempenho

  • Cache hierárquico em memória
  • Compactação colunar
  • Agregação pré-calculada (SMA)
  • Isolamento de carga entre componentes

Tags: TDengine banco_dados_séries_temporais arquitetura_distribuída vnode mnode

Publicado em 6-22 01:28