Todos los productos
Search
Centro de documentos

DataWorks:TSDB

Última actualización: Sep 04, 2026

DataWorks Data Integration utiliza TSDB Writer para escribir puntos de datos en una instancia de Lindorm TSDB. Este tema describe el funcionamiento de TSDB Writer, los tipos de campo compatibles, los parámetros de configuración y las pruebas de rendimiento.

Versiones compatibles

TSDB Writer es compatible con todas las versiones de Lindorm TSDB y HiTSDB 2.4.x o posteriores. No se garantiza la compatibilidad con otras versiones.

Límites

Funcionamiento

TSDB Writer se conecta a una instancia de TSDB mediante el cliente de TSDB (hitsdb-client) y escribe puntos de datos a través de la API HTTP. Para obtener más información sobre la API de escritura, consulte SDK reference.

Tipos de campo compatibles

El comportamiento de TSDB Writer depende del valor de sourceDbType:

  • TSDB: el origen es TSDB Reader u OpenTSDB Reader. TSDB Writer transmite los datos de origen directamente como una cadena JSON.

  • RDB: el origen es una base de datos relacional. TSDB Writer analiza los datos como registros de base de datos relacional y asigna cada columna a un tipo de TSDB mediante columnType.

La siguiente tabla muestra los valores de columnType compatibles y los tipos de datos de TSDB correspondientes cuando sourceDbType se establece en RDB.

Modelo de datos

**Valor de columnType**

Tipo de dato

Etiqueta de datos

tag

Cadena. Una etiqueta describe una característica del origen de datos y normalmente no cambia con el tiempo.

Hora de generación de datos

timestamp

Marca de tiempo. Representa el momento en que se generaron los datos. Especifíquela durante la operación de escritura o permita que el sistema la genere automáticamente.

Contenido de datos

field_string

Cadena. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo.

Contenido de datos

field_double

Numérico. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo.

Contenido de datos

field_boolean

Booleano. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo.

Configurar una tarea de sincronización por lotes

Configure las tareas de TSDB Writer exclusivamente mediante el editor de código. Para consultar el procedimiento general de configuración, vea Configure a task in the code editor.

El apéndice a continuación proporciona plantillas de script listas para usar y descripciones completas de los parámetros.

Apéndice: Plantillas de script y descripciones de parámetros

Plantillas de script

Las tres plantillas siguientes utilizan el formato de script unificado requerido por el editor de código. Reemplace los valores de marcador de posición antes de la ejecución. Para consultar el procedimiento general de configuración, vea Configure a task in the code editor.

De RDB a TSDB (recomendado)

Utilice esta plantilla cuando el origen sea una base de datos relacional como MySQL, Oracle, PostgreSQL o 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"
            }
        ]
    }
}

De OpenTSDB a TSDB

Utilice esta plantilla cuando el origen admita el protocolo OpenTSDB (por ejemplo, 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"
            }
        ]
    }
}

De RDB a TSDB mediante el protocolo de valor único de OpenTSDB (no recomendado)

Utilice esta plantilla solo cuando necesite escribir datos mediante el protocolo de valor único de OpenTSDB. Para nuevas cargas de trabajo, utilice en su lugar la plantilla de RDB a TSDB anterior.

{
    "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"
            }
        ]
    }
}
En el modo de valor único, el nombre de la métrica de destino se deriva del nombre de la columna asignada a un campo. Según la configuración anterior, una fila de datos relacionales se escribe en tres métricas: field_metric_1 , field_metric_2 y field_metric_3 .

Parámetros de Writer

Los parámetros se agrupan según el tipo de origen al que aplican.

Parámetros comunes

Estos parámetros aplican a todos los valores de sourceDbType.

Parámetro

Descripción

Obligatorio

Predeterminado

Ejemplo

sourceDbType

El tipo de origen. TSDB incluye OpenTSDB, Prometheus y TimeScale. RDB incluye MySQL, Oracle, PostgreSQL y DRDS.

No

TSDB

RDB

endpoint

El endpoint HTTP de la instancia de TSDB. Obtenga este valor desde la consola del producto. Formato: http://IP:Port.

Sí

—

http://192.168.1.1:8242

database

La base de datos de TSDB de destino. Cree la base de datos en TSDB antes de ejecutar la tarea.

No

default

my_database

username

El nombre de usuario de la base de datos de TSDB. Obligatorio solo si la autenticación está habilitada.

No

—

admin

batchSize

El número de entradas de datos que se escriben por lote. Los valores mayores aumentan el rendimiento, pero requieren más memoria. Debe ser mayor que 0.

No

100

256

Parámetros para orígenes TSDB (sourceDbType: TSDB)

Parámetro

Descripción

Obligatorio

Predeterminado

Ejemplo

maxRetryTime

El número de reintentos tras un error de escritura. Debe ser mayor que 1.

No

3

5

ignoreWriteError

Si es true, se omiten los errores de escritura y la tarea continúa. Si la escritura falla después de todos los reintentos, la tarea se detiene independientemente de esta configuración.

No

false

false

Parámetros para orígenes RDB (sourceDbType: RDB)

Parámetro

Descripción

Obligatorio

Predeterminado

Ejemplo

table

El nombre de la métrica de destino en TSDB. Obligatorio cuando multiField es true. Cuando multiField es false, especifique el nombre de la métrica en el campo column en su lugar.

Obligatorio si multiField es true

—

testmetric

multiField

Establezca este valor en true para escribir varios campos en TSDB en una sola llamada a la API HTTP. La versión actual de TSDB requiere true para escrituras de valores múltiples. Para consultar los datos escritos mediante Lindorm TSDB SQL, cree previamente la tabla en TSDB; de lo contrario, utilice la API HTTP de TSDB para las consultas. Consulte Query multi-value data.

Sí

false

true

column

Los nombres de campo de la tabla de base de datos relacional de origen. El orden debe coincidir con el parámetro column del plugin Reader.

Sí

—

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

columnType

Los tipos de TSDB a los que se asignan las columnas de origen. Valores compatibles: tag, timestamp, field_string, field_double, field_boolean. El orden debe coincidir con el orden del campo column.

Sí

—

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

batchSize

El número de entradas de datos que se escriben por lote. Debe ser mayor que 0.

No

100

256

Errores de escritura y comportamiento de reintento

Escenario

Comportamiento

Escritura exitosa

La tarea continúa con normalidad.

Error de escritura, reintentos disponibles

TSDB Writer reintenta hasta maxRetryTime veces (predeterminado: 3). Aplica solo cuando sourceDbType es TSDB.

Error de escritura tras todos los reintentos

La tarea se detiene, independientemente de la configuración de ignoreWriteError.

ignoreWriteError es true

Se omiten los errores de escritura individuales y la tarea continúa, a menos que el fallo persista durante todos los reintentos.

Pruebas de rendimiento

Los siguientes resultados de prueba muestran cómo escala el rendimiento según el número de canales simultáneos.

Conjunto de datos de prueba:

  • Métrica: m

  • Combinaciones de etiquetas: 10 zonas x 20 clústeres x 100 grupos x 100 aplicaciones = 2,000,000 series de tiempo, más una etiqueta IP con incremento automático en las 2,000,000 series de tiempo

  • Valor: entero aleatorio entre 1 y 100

  • Intervalo de recopilación: 10 segundos durante 3 horas

  • Total de puntos de datos: 3 x 3,600 / 10 x 2,000,000 = 2,160,000,000

Resultados de la prueba:

Canales

Velocidad (registros/s)

Tráfico (MB/s)

1

129,753

15.45

2

284,953

33.70

3

385,868

45.71

Desglose de claves y valores de etiquetas utilizado en la prueba:

Clave de etiqueta

Valores de etiqueta

zone

z1-z10

cluster

c1-c20

group

g1-g100

app

a1-a100

ip

ip1-ip2,000,000

Utilice estos resultados para calibrar las configuraciones de concurrent y batchSize según su carga de trabajo. Comience con batchSize establecido en 256 para obtener un mayor rendimiento y aumente los canales concurrent si un solo canal no logra saturar la tasa de transferencia objetivo. Aumentar batchSize por encima del valor predeterminado de 100 mejora el rendimiento, pero incrementa el uso de memoria por tarea.