Tous les produits
Search
Centre de documentation

DataWorks:TSDB

Dernière mise à jour :Aug 10, 2026

Data Integration de DataWorks utilise le plug-in TSDB Writer pour écrire des points de données dans une instance Lindorm TSDB. Cette rubrique décrit le fonctionnement de TSDB Writer, les types de champs pris en charge, les paramètres de configuration et les références de performance.

Versions prises en charge

TSDB Writer prend en charge toutes les versions de Lindorm TSDB ainsi que HiTSDB 2.4.x et versions ultérieures. La compatibilité avec d'autres versions n'est pas garantie.

Limites

Fonctionnement

TSDB Writer se connecte à une instance TSDB à l'aide du client TSDB (hitsdb-client) et écrit les points de données via l'API HTTP. Pour plus de détails sur l'API d'écriture, consultez la référence du SDK.

Types de champs pris en charge

Le comportement de TSDB Writer dépend de la valeur du paramètre sourceDbType :

  • TSDB — la source est TSDB Reader ou OpenTSDB Reader. TSDB Writer transmet directement les données source sous forme de chaîne JSON.

  • RDB — la source est une base de données relationnelle. TSDB Writer analyse les données comme des enregistrements de base de données relationnelle et mappe chaque colonne vers un type TSDB à l'aide du paramètre columnType.

Le tableau suivant présente les valeurs prises en charge pour le paramètre columnType et les types de données TSDB correspondants lorsque le paramètre sourceDbType est défini sur RDB.

Modèle de données **Valeur de columnType** Type de données
Tag de données tag String. Un tag décrit une caractéristique de la source de données et ne change généralement pas au fil du temps.
Heure de génération des données timestamp Timestamp. Représente le moment où les données ont été générées. Spécifiez cette valeur lors de l'opération d'écriture ou laissez le système la générer automatiquement.
Contenu des données field_string String. Un champ décrit une métrique mesurée de la source de données et change généralement au fil du temps.
Contenu des données field_double Numeric. Un champ décrit une métrique mesurée de la source de données et change généralement au fil du temps.
Contenu des données field_boolean Boolean. Un champ décrit une métrique mesurée de la source de données et change généralement au fil du temps.

Configuration d'une tâche de synchronisation par lots

Configurez les tâches TSDB Writer uniquement via l'éditeur de code. Pour la procédure de configuration générale, consultez la section Configurer une tâche dans l'éditeur de code.

L'annexe ci-dessous fournit des modèles de script prêts à l'emploi et une description complète des paramètres.

Annexe : Modèles de script et description des paramètres

Modèles de script

Les trois modèles ci-dessous utilisent le format de script unifié requis par l'éditeur de code. Remplacez les valeurs d'espace réservé avant l'exécution. Pour la procédure de configuration générale, consultez la section Configurer une tâche dans l'éditeur de code.

De RDB vers TSDB (recommandé)

Utilisez ce modèle lorsque la source est une base de données relationnelle telle que 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"
            }
        ]
    }
}

D'OpenTSDB vers TSDB

Utilisez ce modèle lorsque la source prend en charge le protocole OpenTSDB (par exemple, 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 vers TSDB utilisant le protocole à valeur unique OpenTSDB (non recommandé)

N'utilisez ce modèle que si vous devez écrire des données en utilisant le protocole à valeur unique OpenTSDB. Pour les nouvelles charges de travail, privilégiez le modèle « De RDB vers TSDB » présenté ci-dessus.

{
    "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 mode à valeur unique, le nom de la métrique de destination est dérivé du nom de la colonne mappée à un champ. Sur la base de la configuration ci-dessus, une ligne de données relationnelle est écrite dans trois métriques : field_metric_1 , field_metric_2 , et field_metric_3 .

Paramètres de Writer

Les paramètres sont regroupés selon le type de source auquel ils s'appliquent.

Paramètres communs

Ces paramètres s'appliquent à toutes les valeurs du paramètre sourceDbType.

Paramètre Description Obligatoire Valeur par défaut Exemple
sourceDbType Type de source. TSDB inclut OpenTSDB, Prometheus et TimeScale. RDB inclut MySQL, Oracle, PostgreSQL et DRDS. Non TSDB RDB
endpoint Endpoint HTTP de l'instance TSDB. Obtenez cette valeur depuis la console du produit. Format : http://IP:Port. Oui http://192.168.1.1:8242
database Base de données TSDB cible. Créez la base de données dans TSDB avant d'exécuter la tâche. Non default my_database
username Nom d'utilisateur de la base de données TSDB. Requis uniquement si l'authentification est activée. Non admin
batchSize Nombre d'entrées de données à écrire par lot. Des valeurs plus élevées augmentent le débit mais nécessitent davantage de mémoire. Doit être supérieur à 0. Non 100 256

Paramètres pour les sources TSDB (sourceDbType: TSDB)

Paramètre Description Obligatoire Valeur par défaut Exemple
maxRetryTime Nombre de tentatives après un échec d'écriture. Doit être supérieur à 1. Non 3 5
ignoreWriteError Si la valeur est true, les erreurs d'écriture sont ignorées et la tâche se poursuit. Si l'écriture échoue après toutes les tentatives, la tâche s'arrête indépendamment de ce paramètre. Non false false

Paramètres pour les sources RDB (sourceDbType: RDB)

Paramètre Description Obligatoire Valeur par défaut Exemple
table Nom de la métrique cible dans TSDB. Obligatoire lorsque le paramètre multiField est défini sur true. Lorsque le paramètre multiField est défini sur false, spécifiez le nom de la métrique dans le champ column à la place. Obligatoire si multiField est true testmetric
multiField Définissez ce paramètre sur true pour écrire plusieurs champs dans TSDB en un seul appel API HTTP. La version actuelle de TSDB requiert la valeur true pour les écritures multivalues. Pour interroger les données écrites à l'aide de Lindorm TSDB SQL, créez préalablement la table dans TSDB ; sinon, utilisez l'API HTTP TSDB pour les requêtes. Consultez la section Interroger des données multivalues. Oui false true
column Noms des champs de la table de base de données relationnelle source. L'ordre doit correspondre au paramètre column du plug-in Reader. Oui ["tag1", "tag2", "field1", "timestamp"]
columnType Types TSDB vers lesquels les colonnes source sont mappées. Valeurs prises en charge : tag, timestamp, field_string, field_double, field_boolean. L'ordre doit correspondre à celui du champ column. Oui ["tag", "tag", "field_double", "timestamp"]
batchSize Nombre d'entrées de données à écrire par lot. Doit être supérieur à 0. Non 100 256

Erreurs d'écriture et comportement de nouvelle tentative

Scénario Comportement
L'écriture réussit La tâche se poursuit normalement.
Échec de l'écriture, tentatives restantes TSDB Writer effectue jusqu'à maxRetryTime nouvelles tentatives (valeur par défaut : 3). S'applique uniquement lorsque le paramètre sourceDbType est défini sur TSDB.
Échec de l'écriture après toutes les tentatives La tâche s'arrête, indépendamment du paramètre ignoreWriteError.
Le paramètre ignoreWriteError est défini sur true Les erreurs d'écriture individuelles sont ignorées et la tâche se poursuit, sauf si l'échec persiste après toutes les tentatives.

Références de performance

Les résultats de test suivants illustrent l'évolution du débit en fonction du nombre de canaux simultanés.

Jeu de données de test :

  • Métrique : m

  • Combinaisons de tags : 10 zones x 20 clusters x 100 groupes x 100 applications = 2 000 000 séries temporelles, plus un tag IP incrémenté automatiquement sur l'ensemble des 2 000 000 de séries temporelles

  • Valeur : entier aléatoire compris entre 1 et 100

  • Intervalle de collecte : 10 secondes sur une durée de 3 heures

  • Total des points de données : 3 x 3 600 / 10 x 2 000 000 = 2 160 000 000

Résultats des tests :

Canaux Débit (enregistrements/s) Trafic (Mo/s)
1 129 753 15,45
2 284 953 33,70
3 385 868 45,71

Détail des paires clé-valeur de tags utilisées lors du test :

Clé de tag Valeurs de tag
zone z1-z10
cluster c1-c20
group g1-g100
app a1-a100
ip ip1-ip2,000,000

Utilisez ces résultats pour calibrer les paramètres concurrent et batchSize adaptés à votre charge de travail. Commencez par définir le paramètre batchSize sur 256 pour un débit plus élevé, et augmentez le nombre de canaux concurrent si un seul canal ne permet pas d'atteindre votre taux de transfert cible. L'augmentation de la valeur batchSize au-delà de la valeur par défaut de 100 améliore le débit, mais accroît l'utilisation de la mémoire par tâche.