为什么出现这个工具

随着 TDengine 用户量越来越大,用户各种需求及疑问越来越多,常见的有:

  • TDengine 能否支持大数据量?查询和写入性能怎么样?
  • 没有实际生产数据,只是技术选型调研,下载之后如何快速进行验证?
  • 听说 TDengine 将历史和实时数据统一,实时写入和查询性能怎么样?
  • 我有物联网数据,如何使用 TDengine 来建模?超级表?子表?

基于以上需求,为了让用户能够快速的体验 TDengine 写入和查询性能,尽可能的结合用户真实场景使用 TDengine,我们开发了一款样例数据导入工具。样例数据是指实际应用场景中获取的一个或多个数据采集设备在一段时间内采集的数据,比如十台汽车过去一个月采集的数据。测试时使用样例数据,而不是完整的实际场景的数据,是完全出于数据安全的考虑。

没有样例数据同样可快速体验,内嵌样例场景数据,下载即用。

功能介绍

样例数据导入工具主要包含如下功能:

  • 支持自定义场景,可指定数据字段、数据采集频率、表(采集点)数目等
  • 支持 csv 和 json 格式样例数据
  • 支持将样例数据进行横向扩展(即将原有一张表或一个设备的数据克隆到多张表)
  • 支持将样例数据进行纵向扩展(即将原有样例数据时间范围内的数据在时间轴上纵向复制)
  • 支持按照指定开始时间和间隔写入
  • 支持按样例数据产生到当前时间之后持续按原有频率写入,以模拟最真实的场景
  • 支持多场景同时模拟写入

基于以上功能,用户可以尝试多种方式使用:

  1. 快速体验写入和查询
  2. 可按照样例修改成适合自己的场景测试
  3. 可进行性能压测
  4. 边实时写入数据,边进行各种查询

快速体验

下载样例导入工具之后直接执行 bin/taosimport 即可创建 1000 张子表且每张表各自导入 100000 条记录。该工具支持各种命令行参数,比线程数、横向扩展倍数、纵向扩展倍数等等,以满足用户测试的需求。

例如执行命令:bin/taosimport -auto 1 -start '2020-01-02 00:00:00.000' -thread 10 -batch 200 -hnum 100 -vnum 0 -db test 将会使用 conf/cfg.toml 配置中的默认场景 sensor_info2020-01-02 00:00:00.000 开始自动导入数据,且导入到当前时间后持续按照原有频率写入。

上述命令中各参数含义如下:

  • auto,是否按照指定开始时间导入数据,1 是,0 否。
  • start,指定数据开始导入时间,格式为 “yyyy-MM-dd HH:mm:ss.SSS”。
  • thread,导入数据使用线程数。
  • batch,每次批量写入的记录数。
  • hnum,将样例数据进行横向扩展的倍数,即默认场景 sensor_info 的样例数据 data/sensor_info.csv 中有 10 张子表,将 hnum 指定为 100 之后会扩展为 1000 张子表。
  • vnum,将样例数据时间范围内的数据在时间轴上进行纵向复制的次数,当设为 0 时代表导入到当前时间后持续按原有频率写入。
  • db,写入指定的 TDengine 数据库。

详细参数使用请参考 importSampleData