Todos os produtos
Search
Central de documentação

DataWorks:TSDB

Última atualização: Jun 27, 2026

O DataWorks Data Integration usa o TSDB Writer para gravar pontos de dados em uma instância do Lindorm TSDB. Este tópico descreve o funcionamento do TSDB Writer, os tipos de campo compatíveis, os parâmetros de configuração e os benchmarks de desempenho.

Versões compatíveis

O TSDB Writer é compatível com todas as versões do Lindorm TSDB e com o HiTSDB 2.4.x ou superior. Não há garantia de compatibilidade com outras versões.

Limites

Funcionamento

O TSDB Writer conecta-se a uma instância TSDB pelo cliente TSDB (hitsdb-client) e grava pontos de dados pela API HTTP. Para obter detalhes sobre a API de gravação, consulte Referência do SDK.

Tipos de campo compatíveis

O comportamento do TSDB Writer varia conforme o valor de sourceDbType:

  • TSDB: a origem é o TSDB Reader ou OpenTSDB Reader. O TSDB Writer transmite os dados de origem diretamente como uma string JSON.

  • RDB: a origem é um banco de dados relacional. O TSDB Writer interpreta os dados como registros de banco de dados relacional e mapeia cada coluna para um tipo TSDB usando columnType.

A tabela a seguir apresenta os valores compatíveis para columnType e os tipos de dados TSDB correspondentes quando sourceDbType está definido como RDB.

Modelo de dados

**Valor de columnType**

Tipo de dado

Tag de dados

tag

String. Uma tag descreve uma característica da fonte de dados e geralmente não se altera ao longo do tempo.

Hora de geração dos dados

timestamp

Timestamp. Indica o momento em que os dados foram gerados. Especifique este valor durante a operação de gravação ou permita que o sistema o gere automaticamente.

Conteúdo dos dados

field_string

String. Um campo descreve uma métrica medida da fonte de dados e normalmente varia com o tempo.

Conteúdo dos dados

field_double

Numérico. Um campo descreve uma métrica medida da fonte de dados e normalmente varia com o tempo.

Conteúdo dos dados

field_boolean

Booleano. Um campo descreve uma métrica medida da fonte de dados e normalmente varia com o tempo.

Configurar uma tarefa de sincronização em lote

Configure as tarefas do TSDB Writer exclusivamente pelo editor de código. Para consultar o procedimento geral de configuração, veja Configurar uma tarefa no editor de código.

O apêndice abaixo fornece modelos de script prontos para uso e descrições completas dos parâmetros.

Apêndice: Modelos de script e descrições de parâmetros

Modelos de script

Os três modelos abaixo usam o formato de script unificado exigido pelo editor de código. Substitua os valores de espaço reservado antes de executar. Para o procedimento geral de configuração, consulte Configurar uma tarefa no editor de código.

RDB para TSDB (recomendado)

Use este modelo quando a origem for um banco de dados relacional, como MySQL, Oracle, PostgreSQL ou DRDS.

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            // Replace "stream" with the plugin name of your RDB source
            // (e.g., mysql, oracle, postgresql, drds).
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "tsdb",
            "parameter": {
                "endpoint": "http://localhost:8242",
                "username": "xxx",
                "password": "xxx",
                "sourceDbType": "RDB",
                "batchSize": 256,
                "columnType": [
                    "tag",
                    "tag",
                    "field_string",
                    "field_double",
                    "timestamp",
                    "field_bool"
                ],
                "column": [
                    "tag1",
                    "tag2",
                    "field1",
                    "field2",
                    "timestamp",
                    "field3"
                ],
                "multiField": "true",
                "table": "testmetric",
                "ignoreWriteError": "false",
                "database": "default"
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            // Set to false to disable throttling (mbps is ignored when false).
            "concurrent": 1,
            // Number of concurrent channels. See performance benchmarks
            // to choose a value based on your throughput requirements.
            "mbps": "12"
            // Maximum transfer rate in MB/s. Only applies when throttle is true.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

OpenTSDB para TSDB

Use este modelo quando a origem oferecer suporte ao protocolo OpenTSDB (por exemplo, OpenTSDB Reader).

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "opentsdb",
            "parameter": {
                "endpoint": "http://localhost:4242",
                "column": [
                    "m1",
                    "m2",
                    "m3",
                    "m4",
                    "m5",
                    "m6"
                ],
                "startTime": "2019-01-01 00:00:00",
                "endTime": "2019-01-01 03:00:00"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "tsdb",
            "parameter": {
                "endpoint": "http://localhost:8242"
                // Only the destination endpoint is required for TSDB-to-TSDB writes.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

RDB para TSDB usando o protocolo de valor único do OpenTSDB (não recomendado)

Adote este modelo apenas quando for necessário gravar dados usando o protocolo de valor único do OpenTSDB. Para novas cargas de trabalho, prefira o modelo RDB para TSDB apresentado acima.

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            // Replace "stream" with your RDB source plugin name.
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "tsdb",
            "parameter": {
                "endpoint": "http://localhost:8242",
                "username": "xxx",
                "password": "xxx",
                "sourceDbType": "RDB",
                "batchSize": 256,
                "columnType": [
                    "tag",
                    "tag",
                    "field_string",
                    "field_double",
                    "timestamp",
                    "field_boolean"
                ],
                "column": [
                    "tag1",
                    "tag2",
                    "field_metric_1",
                    "field_metric_2",
                    "timestamp",
                    "field_metric_3"
                ],
                "ignoreWriteError": "false"
                // multiField is omitted (defaults to false) for single-value mode.
                // Each field column maps to a separate metric in TSDB.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}
No modo de valor único, o nome da métrica de destino deriva do nome da coluna mapeada para um campo. Com base na configuração acima, uma linha de dados relacionais é gravada em três métricas: field_metric_1 , field_metric_2 e field_metric_3 .

Parâmetros do Writer

Os parâmetros estão agrupados pelo tipo de origem ao qual se aplicam.

Parâmetros comuns

Estes parâmetros são válidos para todos os valores de sourceDbType.

Parâmetro

Descrição

Obrigatório

Padrão

Exemplo

sourceDbType

Tipo da origem. TSDB abrange OpenTSDB, Prometheus e TimeScale. RDB inclui MySQL, Oracle, PostgreSQL e DRDS.

Não

TSDB

RDB

endpoint

Endpoint HTTP da instância TSDB. Obtenha este valor no console do produto. Formato: http://IP:Port.

Sim

http://192.168.1.1:8242

database

Banco de dados TSDB de destino. Crie o banco de dados no TSDB antes de executar a tarefa.

Não

default

my_database

username

Nome de usuário do banco de dados TSDB. Necessário apenas se a autenticação estiver ativada.

Não

admin

batchSize

Quantidade de entradas de dados a serem gravadas por lote. Valores maiores aumentam o throughput, mas exigem mais memória. Deve ser maior que 0.

Não

100

256

Parâmetros para origens TSDB (sourceDbType: TSDB)

Parâmetro

Descrição

Obrigatório

Padrão

Exemplo

maxRetryTime

Número de tentativas após uma falha de gravação. Deve ser maior que 1.

Não

3

5

ignoreWriteError

Se definido como true, erros de gravação são ignorados e a tarefa continua. Caso a gravação falhe após todas as tentativas, a tarefa será interrompida independentemente desta configuração.

Não

false

false

Parâmetros para origens RDB (sourceDbType: RDB)

Parâmetro

Descrição

Obrigatório

Padrão

Exemplo

table

Nome da métrica de destino no TSDB. Obrigatório quando multiField é true. Quando multiField for false, especifique o nome da métrica no campo column.

Obrigatório se multiField for true

testmetric

multiField

Defina como true para gravar vários campos no TSDB em uma única chamada de API HTTP. A versão atual do TSDB exige true para gravações de múltiplos valores. Para consultar os dados gravados usando SQL do Lindorm TSDB, crie previamente a tabela no TSDB; caso contrário, use a API HTTP do TSDB para consultas. Consulte Consultar dados de múltiplos valores.

Sim

false

true

column

Nomes dos campos da tabela de origem no banco de dados relacional. A ordem deve corresponder ao parâmetro column do plugin Reader.

Sim

["tag1", "tag2", "field1", "timestamp"]

columnType

Tipos do TSDB aos quais as colunas de origem serão mapeadas. Valores compatíveis: tag, timestamp, field_string, field_double, field_boolean. A ordem deve coincidir com a ordem do campo column.

Sim

["tag", "tag", "field_double", "timestamp"]

batchSize

Quantidade de entradas de dados a serem gravadas por lote. Deve ser maior que 0.

Não

100

256

Erros de gravação e comportamento de nova tentativa

Cenário

Comportamento

Gravação bem-sucedida

A tarefa segue normalmente.

Falha na gravação com tentativas restantes

O TSDB Writer tenta novamente até maxRetryTime vezes (padrão: 3). Aplica-se apenas quando sourceDbType é TSDB.

Falha na gravação após todas as tentativas

A tarefa é interrompida, independentemente da configuração de ignoreWriteError.

ignoreWriteError definido como true

Erros individuais de gravação são ignorados e a tarefa continua, exceto se a falha persistir após todas as tentativas.

Benchmarks de desempenho

Os resultados de teste a seguir demonstram como o throughput escala conforme o número de canais simultâneos.

Conjunto de dados de teste:

  • Métrica: m

  • Combinações de tags: 10 zonas x 20 clusters x 100 grupos x 100 aplicativos = 2.000.000 de séries temporais, além de uma tag IP com incremento automático em todas as 2.000.000 de séries temporais

  • Valor: inteiro aleatório entre 1 e 100

  • Intervalo de coleta: 10 segundos durante 3 horas

  • Total de pontos de dados: 3 x 3.600 / 10 x 2.000.000 = 2.160.000.000

Resultados do teste:

Canais

Velocidade (registros/s)

Tráfego (MB/s)

1

129.753

15,45

2

284.953

33,70

3

385.868

45,71

Detalhamento das chaves e valores de tag usados no teste:

Chave da tag

Valores da tag

zone

z1-z10

cluster

c1-c20

group

g1-g100

app

a1-a100

ip

ip1-ip2.000.000

Use esses resultados para calibrar as configurações de concurrent e batchSize da sua carga de trabalho. Comece definindo batchSize como 256 para obter maior throughput e aumente os canais concurrent caso um único canal não consiga saturar a taxa de transferência desejada. Elevar o batchSize acima do padrão de 100 melhora o throughput, porém aumenta o consumo de memória por tarefa.