Todos os produtos
Search
Central de documentação

Lindorm:Como projetar uma tabela de dados de séries temporais

Última atualização: Jun 28, 2026

Um bom projeto de tabela é a base para o desempenho de consultas e armazenamento no LindormTSDB. Antes de escrever qualquer SQL, analise seus padrões de consulta e as características da source de dados. As decisões tomadas durante a criação do schema são difíceis de reverter posteriormente.

Este tópico utiliza dados de monitoramento da qualidade do ar (AQM) como exemplo prático para explicar cada decisão de projeto.

Visão geral do modelo de dados

Cada registro em uma tabela de séries temporais do LindormTSDB possui quatro componentes:

Componente

Descrição

Table

Coleção de dados de séries temporais do mesmo tipo. Corresponde a uma medição; por exemplo, aqm para todas as leituras de qualidade do ar.

Tag

Atributo que identifica o objeto monitorado, armazenado como par chave-valor. Por padrão, o LindormTSDB indexa todos os pares chave-valor de tag e mapeia tags para séries temporais, permitindo filtragem rápida. Alguns sistemas também as chamam de rótulos ou dimensões.

Timestamp

Momento em que o registro foi gerado.

Field

Valor medido. Um registro pode conter múltiplos fields. O LindormTSDB não indexa fields.

O diagrama a seguir ilustra a relação entre esses componentes com dados de AQM:

2023-02-20_15-32-24

Decida quais colunas devem ser tags

Esta é a decisão de schema mais importante. Escolhas incorretas fazem o índice de séries temporais crescer sem limites, o que degrada o desempenho de gravação e consulta.

Tags servem para identificação; fields servem para medições.

  • Defina uma coluna como tag quando ela identificar a source ou o contexto dos dados: cidade, ID do dispositivo, região ou host.

  • Defina uma coluna como field quando ela armazenar um valor medido que varia ao longo do tempo: temperatura, uso de CPU ou concentração de PM2,5.

Evite tags de alta rotatividade

Não use atributos cujos valores mudam frequentemente, como IDs de processo ou atributos relacionados ao tempo, como tags, mesmo que o tipo de dado seja STRING. Cada combinação única de chave-valor de tag cria uma nova entrada de série temporal no índice. Atributos de alta rotatividade geram muitas séries temporais distintas e causam expansão rápida do índice, tornando lentas as consultas baseadas em tags.

Defina atributos de alta rotatividade como fields.

Crie a tabela

Nomeie a tabela conforme a medição que ela representa. Use a instrução CREATE TABLE com a palavra-chave TAG para marcar as colunas de tag. A palavra-chave TAG é uma extensão SQL do LindormTSDB. Apenas colunas declaradas com TAG podem atuar como chaves primárias.

O exemplo a seguir cria uma tabela AQM com três colunas de tag e quatro colunas de field:

CREATE TABLE aqm (
    city        VARCHAR TAG,
    district    VARCHAR TAG,
    id          VARCHAR TAG,
    time        TIMESTAMP,
    pm2_5       DOUBLE,
    pm10        DOUBLE,
    so2         DOUBLE,
    no2         DOUBLE,
    PRIMARY KEY (id)  -- Remove this line for single-node Lindorm instances, which do not support primary keys.
);

Após criar a tabela, insira registros com INSERT INTO:

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:00:00', 31.0, 66.0, 10.0, 43.0);

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:01:00', 31.2, 66.0, 10.5, 43.1);

Para inserir vários registros em uma única instrução:

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES
    ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:02:00', 31.3, 66.0, 10.0, 42.9),
    ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:03:00', 31.2, 66.4, 10.3, 43.0);

Escolha uma chave primária

O LindormTSDB usa a chave primária para particionar dados e otimizar consultas. Consultas que incluem a chave primária na cláusula WHERE executam mais rapidamente.

Importante

Tabelas de séries temporais diferem de tabelas de bancos de dados relacionais. A coluna de chave primária não precisa conter valores exclusivos, mas deve ser marcada como tag (declarada com a palavra-chave TAG).

Nota

Instâncias single-node do Lindorm não suportam chaves primárias.

Use o identificador exclusivo da source de dados como chave primária:

Cenário

Chave primária recomendada

IoT (Internet das Coisas) / IIoT (Internet Industrial das Coisas)

ID do dispositivo

IoV (Internet dos Veículos)

Identificador exclusivo do veículo

Monitoramento de aplicações

ID da aplicação ou host:port

No exemplo de AQM, id identifica exclusivamente cada estação de monitoramento. Se a maioria das consultas filtrar por ID da estação, use id como chave primária:

PRIMARY KEY (id)

Escolha os tipos de dados

Colunas de tag

Colunas de tag devem ser VARCHAR. Não é possível alterar esse tipo de dado após a criação da tabela.

Colunas de timestamp

O LindormTSDB armazena timestamps internamente como valores BIGINT no formato UNIX epoch no LindormDFS, otimizando a compressão. Ao criar a tabela, escolha o tipo da coluna conforme o tratamento de timestamps pela sua aplicação:

Tipo

Quando usar

TIMESTAMP

A aplicação trabalha com strings de data e hora legíveis e você deseja conversão automática pelo banco de dados.

BIGINT

A aplicação trabalha diretamente com valores UNIX epoch ou realiza operações aritméticas em timestamps, como cálculo de durações.

Colunas de field

Colunas de field suportam todos os tipos de dados. Evite VARCHAR nessas colunas, pois esse tipo apresenta baixa compressão e torna as consultas mais lentas em comparação aos tipos numéricos.

Para obter a lista completa de tipos de dados suportados, consulte Tipos de dados.