所有文档

          时序时空数据库 TSDB

          写入操作

          写入单域数据点

          用户可以参考如下代码写入单域数据点:

          注意:当写入的metric、field、tags、timestamp都相同时,后写入的value会覆盖先写入的value。

          String METRIC = "wind";                                            // metric
          String TAG_KEY = "city";                                           // 标签名称
          String TAG_VALUE = "ShangHai";                                     // 标签值
          String FIELD = "direction";                                        // 域
           
          // 创建数据点
          List<Datapoint> datapoints = Arrays.asList(new Datapoint()
                          .withMetric(METRIC)                                  // 设置Metric
                          .withField(FIELD)                                    // 设置数据点域,可选,不填使用默认域名 value
                          .addTag(TAG_KEY, TAG_VALUE)                          // 设置Tag
                          .addDoubleValue(System.currentTimeMillis(), 0.1));   // 添加一个数据点
           
           
          tsdbClient.writeDatapoints(datapoints);

          一个Datapoint对象可以同时添加多个数据点,这些数据点使用相同的metric和标签,相同的域。多个相同metric和标签的数据放入同一个Datapoint对象,可以减少payload。

          Datapoint datapoint = new Datapoint()
                        .withMetric(METRIC)                                      // 设置Metric
                        .withField(FIELD)                                        // 设置数据点域,可选,不填使用默认域名 value
                        .addTag(TAG_KEY, TAG_VALUE)                              // 设置Tag
                        .addDoubleValue(System.currentTimeMillis(), 0.1)         // 添加一个数据点
                        .addDoubleValue(System.currentTimeMillis() + 1, 0.2);    // 再添加一个数据点

          Datapoint对象可以添加double,long和String类型的数据点。对于同一个field,如果写入了某个数据类型的value之后,相同的field不允许写入其他数据类型。

          // 添加Double类型数据点
          Datapoint datapoint1 = new Datapoint()
                        .withMetric("wind")                                     // 设置Metric
                        .withField(FIELD)                                       // 设置数据点域,可选,不填使用默认域名 value
                        .addTag(TAG_KEY, TAG_VALUE)                             // 设置Tag
                        .addDoubleValue(System.currentTimeMillis(), 0.1);       // 添加Double类型数据点
           
          // 添加Long类型数据点
          Datapoint datapoint2 = new Datapoint()
                        .withMetric("temperature")                              // 设置Metric
                        .addTag(TAG_KEY, TAG_VALUE)                             // 设置Tag
                        .addLongValue(System.currentTimeMillis(), 10L);         // 添加Long类型数据点
           
          // 添加String类型数据点
          Datapoint datapoint3 = new Datapoint()
                        .withMetric("humidity")                                 // 设置Metric
                        .addTag(TAG_KEY, TAG_VALUE)                             // 设置Tag
                        .addStringValue(System.currentTimeMillis(), "string");  // 添加String类型数据点

          写入多域数据点

          不同的域并不需要同时写入,可以认为不同的域都是独立的。但如果查询时要用一条语句查出来,需要保证metric、所有的tag、时间戳都是一致的。

          可以参考以下代码写入多域数据点:

          String METRIC = "wind";                                              // metric
          String TAG_KEY = "city";                                             // 标签名称
          String TAG_VALUE = "ShangHai";                                       // 标签值
          String FIELD_1 = "direction";                                        // 域1
          String FIELD_2 = "speed";                                            // 域2
          long TIME = System.currentTimeMillis();                              // 时间
          
          // 添加FIELD_1的数据点
          Datapoint datapoint1 = new Datapoint()
                        .withMetric(METRIC)                                     // 设置Metric
                        .withField(FIELD_1)                                     // 设置域1
                        .addTag(TAG_KEY, TAG_VALUE)                             // 设置Tag
                        .addDoubleValue(TIME, 0.1);                             // 指定时间写入Double类型数据点
          
          // 添加FIELD_2的数据点
          Datapoint datapoint2 = new Datapoint()
                        .withMetric(METRIC)                                     // 设置Metric,需要和FIELD1的一样
                        .withField(FIELD_2)                                     // 设置域2      
                        .addTag(TAG_KEY, TAG_VALUE)                             // 设置Tag,需要和FIELD1的一样         
                        .addLongValue(TIME, 10L);                               // 指定时间添加Long类型数据点,时间需要和FIELD_1的一样
          tsdbClient.writeDatapoints(Arrays.asList(datapoint1, datapoint2));
          上一篇
          创建TsdbClient
          下一篇
          查询操作