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:
- Interpretação de parâmetros de configuração
- Inicialização do sistema de arquivos TFS
- Criação de gerenciadores de ciclo de vida
- 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
- Cliente envia operação INSERT
- taosc calcula hash da tabela e localiza vgroup
- Dados replicados via Raft para nós seguidores
- Persistência em WAL e memória (MemTable)
- 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:
- Servidor (requisições externas)
- Cliente (operações de saída)
- Status (monitoramento)
- Sincronização (Raft)
Modelo de Armazanamento
Estrutura de diretórios típica:
/dados/taos/vnode12/
├── vnode.conf
├── wal/
├── metadados/
└── tsdb/
Níveis de dados:
- Metadados globais (MNode)
- Metadados locais (VNode)
- 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