DataX/tdengine20writer/doc/tdengine20writer-CN.md

8.1 KiB
Raw Blame History

DataX TDengineWriter

简体中文| English

1 快速介绍

TDengineWriter插件实现了写入数据到TDengine数据库目标表的功能。底层实现上TDengineWriter通过JDBC连接TDengine按照TDengine的SQL语法执行insert语句/schemaless语句将数据写入TDengine。

TDengineWriter可以作为数据迁移工具供DBA将其它数据库的数据导入到TDengine。

2 实现原理

TDengineWriter 通过 DataX 框架获取 Reader生成的协议数据通过JDBC Driver连接TDengine执行insert语句/schemaless语句将数据写入TDengine。

在TDengine中table可以分成超级表、子表、普通表三种类型超级表和子表包括colum和tag子表的tag列的值为固定值普通表与关系型数据库中表的概念一致。详细请参考数据模型

TDengineWriter支持向超级表、子表、普通表中写入数据按照table的类型和column参数中是否包含tbname使用以下方法进行写入

  1. table为超级表column中指定tbname使用自动建表的insert语句使用tbname作为子表的名称。
  2. table为超级表column中未指定tbname使用schemaless写入TDengine会根据超级表名、tag值计算一个子表名称。
  3. table为子表使用insert语句写入ignoreTagUnmatched参数为true时忽略record中tag值与table的tag值不一致的数据。
  4. table为普通表使用insert语句写入。

3 功能说明

3.1 配置样例

配置一个写入TDengine的作业 先在TDengine上创建超级表

create database if not exists test;
create table test.weather (ts timestamp, temperature int, humidity double) tags(is_normal bool, device_id binary(100), address nchar(100));

使用下面的Job配置将数据写入TDengine

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "column": [
              {
                "type": "string",
                "value": "tb1"
              },
              {
                "type": "date",
                "value": "2022-02-20 12:00:01"
              },
              {
                "type": "long",
                "random": "0, 10"
              },
              {
                "type": "double",
                "random": "0, 10"
              },
              {
                "type": "bool",
                "random": "0, 50"
              },
              {
                "type": "bytes",
                "value": "abcABC123"
              },
              {
                "type": "string",
                "value": "北京朝阳望京"
              }
            ],
            "sliceRecordCount": 1
          }
        },
        "writer": {
          "name": "tdengine20writer",
          "parameter": {
            "username": "root",
            "password": "taosdata",
            "column": [
              "tbname",
              "ts",
              "temperature",
              "humidity",
              "is_normal",
              "device_id",
              "address"
            ],
            "connection": [
              {
                "table": [
                  "weather"
                ],
                "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/test"
              }
            ],
            "batchSize": 100,
            "ignoreTagsUnmatched": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}

3.2 参数说明

  • jdbcUrl
    • 描述数据源的JDBC连接信息TDengine的JDBC信息请参考Java连接器的使用
    • 必选:是
    • 默认值:无
  • username
    • 描述:用户名
    • 必选:是
    • 默认值:无
  • password
    • 描述:用户名的密码
    • 必选:是
    • 默认值:无
  • table
    • 描述表名的集合table应该包含column参数中的所有列tbname除外。注意column中的tbname会被当作TDengine中子表名使用。
    • 必选:是
    • 默认值:无
  • column
    • 描述字段名的集合字段的顺序应该与record中column的
    • 必选:是
    • 默认值:无
  • batchSize
    • 描述每batchSize条record为一个batch进行写入
    • 必选:否
    • 默认值1
  • ignoreTagsUnmatched
    • 描述当table为TDengine中的一张子表table具有tag值。如果数据的tag值与table的tag值不想等数据不写入到table中。
    • 必选:否
    • 默认值false

3.3 类型转换

datax中的数据类型可以映射到TDengine的数据类型

DataX 内部类型 TDengine 数据类型
INT TINYINT, SMALLINT, INT
LONG TIMESTAMP, TINYINT, SMALLINT, INT, BIGINT
DOUBLE FLOAT, DOUBLE
STRING TIMESTAMP, BINARY, NCHAR
BOOL BOOL
DATE TIMESTAMP
BYTES BINARY

3.4 各数据源到TDengine的参考示例

下面是一些数据源到TDengine进行数据迁移的示例

数据迁移示例 配置的示例
TDengine到TDengine 超级表到超级表指定tbname
TDengine到TDengine 超级表到超级表不指定tbname
TDengine到TDengine 超级表到子表
TDengine到TDengine 普通表到普通表
RDBMS到TDengine 普通表到超级表指定tbname
RDBMS到TDengine 普通表到超级表不指定tbname
RDBMS到TDengine 普通表到子表
RDBMS到TDengine 普通表到普通表
OpenTSDB到TDengine metric到普通表

4 性能报告

4.1 环境准备

4.1.1 数据特征

建表语句:

单行记录类似于:

4.1.2 机器参数

  • 执行DataX的机器参数为:

    1. cpu:
    2. mem:
    3. net: 千兆双网卡
    4. disc: DataX 数据不落磁盘,不统计此项
  • TDengine数据库机器参数为:

    1. cpu:
    2. mem:
    3. net: 千兆双网卡
    4. disc:

4.1.3 DataX jvm 参数

-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError

4.2 测试报告

4.2.1 单表测试报告

通道数 DataX速度(Rec/s) DataX流量(MB/s) DataX机器网卡流出流量(MB/s) DataX机器运行负载 DB网卡进入流量(MB/s) DB运行负载 DB TPS
1
4
8
16
32

说明:

4.2.4 性能测试小结

5 约束限制

FAQ

源表和目标表的字段顺序一致吗?

是的TDengineWriter按照column中字段的顺序解析来自datax的数据。