全部產品
Search
文件中心

DataWorks:TSDB資料來源

更新時間:Oct 25, 2024

DataWorksData Integration支援使用TSDB Writer將資料點寫入到阿里巴巴雲原生多模資料庫Lindorm TSDB資料庫中,本文為您介紹DataWorks的TSDB資料寫入能力。

支援的版本

TSDB Writer目前僅支援Lindorm TSDB全部版本以及HiTSDB 2.4.x及以上版本,其他版本暫不保證相容。

使用限制

實現原理

TSDB Writer外掛程式通過TSDB用戶端 hitsdb-client 串連TSDB執行個體,並將資料點通過HTTP API方式寫入。關於寫入介面,詳情請參見TSDB的SDK文檔:SDK參考

支援的欄位類型

當sourceDbType為TSDB,即源端資料來源為TSDB Reader或者OpenTSDB Reader時,外掛程式會將源端資料按照JSON字串格式直接寫入;當sourceDbType為RDB,即源端資料來源為關係型資料庫,外掛程式會按照關係型資料庫的Record進行解析,以下內容為您介紹,當sourceDbType為RDB時,columnType的配置及與其對應位置的column可寫入的資料類型。

資料模型

columnType配置類型

資料類型

資料標籤

tag

字串類型。Tag描述資料來源的特徵,通常不隨時間變化

資料產生時間

timestamp

時間戳記類型。Timestamp代表資料產生的時間點,可以寫入時指定,也可由系統自動產生

資料內容

field_string

該Field的value是字串類型。Field描述資料來源的量測指標,通常隨著時間不斷變化,

field_double

該Field的value是數實值型別。Field描述資料來源的量測指標,通常隨著時間不斷變化,

field_boolean

該Field的value是布爾類型。Field描述資料來源的量測指標,通常隨著時間不斷變化,

資料同步任務開發

資料同步任務的配置入口和通用配置流程可參見下文的配置指導。

附錄:指令碼Demo與參數說明

離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下資料來源的參數配置詳情。

Writer指令碼Demo

  • RDB到TSDB的預設配置(推薦)

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "stream",//您可將stream外掛程式替換為具體的RDB類型外掛程式json,RDB類型資料庫包括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,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                "concurrent":1, //作業並發數。
                "mbps":"12"//限流,此處1mbps = 1MB/s。
            }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • 從支援OpenTSDB 協議的資料庫同步抽取資料到TSDB:

    {
        "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"
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "errorLimit": {
                "record": "0"
            },
            "speed": {
                "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                "concurrent":1, //作業並發數。
                "mbps":"12"//限流,此處1mbps = 1MB/s。
            }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • 使用 OpenTSDB(單值)協議寫入TSDB(不推薦):

    
    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "stream",//您可將stream外掛程式替換為具體的RDB類型外掛程式json,RDB類型資料庫包括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_boolean"
                    ],
                    "column": [
                        "tag1",
                        "tag2",
                        "field_metric_1",
                        "field_metric_2",
                        "timestamp",
                        "field_metric_3"
                    ],
                    "ignoreWriteError": "false"
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "errorLimit": {
                "record": "0"
            },
            "speed": {
                "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                "concurrent":1, //作業並發數。
                "mbps":"12"//限流,此處1mbps = 1MB/s。
            }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
    說明

    轉換到的TSDB 表名(metric)由column中field對應的列名決定,對於上述配置一行關係型資料將會寫入三個metric(field_metric_1,field_metric_2,field_metric_3)。

Writer指令碼參數

資料來源

參數

描述

是否必選

預設值

公用參數

sourceDbType

資料來源的類型。

TSDB

說明

目前支援TSDB和RDB兩個取值。其中,TSDB包括OpenTSDB、Prometheus和TimeScale 。RDB包括MySQL、Oracle、PostgreSQL、DRDS等。

endpoint

TSDB 的 HTTP 串連訪問地址,請登入產品管理主控台擷取。

是,格式為http://IP:Port。

database

匯入的TSDB資料庫名。

default

說明

TSDB需要提前建立資料庫。

username

TSDB資料庫使用者名稱, TSDB配置了鑒權時需要填寫。

batchSize

每次批量寫入資料的條數。設定過大的batchSize需要更多的任務記憶體。

否,資料類型為INT,需要確保大於0。

100

資料來源為TSDB

maxRetryTime

失敗後重試的次數。

否,資料類型為INT,需要確保大於1。

3

ignoreWriteError

如果設定為true,則忽略寫入錯誤,繼續寫入。如果多次重試後仍寫入失敗,則終止寫入任務。

否,資料類型為BOOL。

false

資料來源為RDB

table

要匯入TSDB的表名(metric)。如果multiField為false則不需要填寫,對應的metric需要寫到column欄位

multiField為true時必選。

multiField

使用HTTP API多值(多個field)方式寫入TSDB。

說明

如果使用Lindorm TSDB原生SQL能力訪問HTTP API方式寫入的資料,需要在TSDB進行預建表,否則只能使用TSDB HTTP API方式查詢資料,詳情請參見多值資料查詢

必選。

false

說明

目前TSDB版本使用多值寫入時,此值需要指定為true。

column

關係型資料庫中表的欄位名。

說明

此處的欄位順序,需要和Reader外掛程式中配置的column欄位的順序保持一致。

columnType

關係型資料庫中表欄位,映射到TSDB中的類型。支援的類型如下所示:

  • timestamp:該欄位為時間戳記。

  • tag:該欄位為tag。

  • field_string:該Field的value是字串類型

  • field_double:該Field的value是數實值型別。

  • field_boolean:該Field的value是布爾類型。

說明

此處的欄位順序,需要和Reader外掛程式中配置的column欄位的順序保持一致。

batchSize

每次批量寫入資料的條數。

否,資料類型為INT,需要確保大於0。

100

效能報告

  • 效能資料特徵

    • Metric:指定一個Metric為m。

    • tagkv:前4個tagkv全排列,形成10*20*100*100=2,000,000條時間軸,最後IP對應2,000,000條時間軸,從1開始自增。

      tag_k

      tag_v

      zone

      z1~z10

      cluster

      c1~c20

      group

      g1~100

      app

      a1~a100

      ip

      ip1~ip2,000,000

    • value:度量值為[1, 100]區間內的隨機值。

    • interval:採集周期為10秒,持續攝入3小時,總資料量為3*60*60/10*2,000,000=2,160,000,000個資料點。

  • 效能測試結果

    通道數

    Data Integration速度(Rec/s)

    Data Integration流量(MB/s)

    1

    129,753

    15.45

    2

    284,953

    33.70

    3

    385,868

    45.71