初始化

更新时间: 2023-07-10 09:40:12

TimestreamDBClient是Timestream的客户端,您可以使用TimestreamDBClient进行建表、删表以及读写数据/时间线等操作。

初始化

上图为TimeStream模型的结构示意图,其中时序数据是存储到数据表中,时间线是存储到元数据表(Meta表)中。数据表可以根据业务需求创建多个,但元数据表只能有一个。所有数据表的时间线元数据写入到同一个元数据表中,您通过TimestreamDBConfiguration配置元数据表的表名。 伴随数据的写入,后台默认不断更新时间线的lastUpdateTime,您可以通过设置TimestreamDBConfiguration中的dumpMeta来控制是否需要打开后台更新时间线以及设置intervalDumpMeta来控制时间线更新的频率。

配置环境变量

请根据使用的操作系统执行相应操作配置环境变量。

表格存储使用OTS_AK_ENV环境变量名表示阿里云账号或者RAM用户的AccessKey ID,使用OTS_SK_ENV环境变量名表示对应AccessKey Secret,请根据实际配置。

  • Linux和macOS系统配置方法

    执行如下命令配置环境变量。其中<access_key_id>请替换为已准备好的AccessKey ID,<access_key_secret>请替换为对应的AccessKey Secret。

    export OTS_AK_ENV=<access_key_id>
    export OTS_SK_ENV=<access_key_secret>
  • Windows系统配置方法

    新建环境变量文件,并在文件中添加环境变量OTS_AK_ENV和OTS_SK_ENV,然后环境变量分别配置为已准备好的AccessKey ID和AccessKey Secret,最后重启Windows系统使配置生效。

示例代码

  1. 使用默认Writer配置创建TimestreamDBClient。

    final String endpoint = ""; 
    String accessKeyId = System.getenv("OTS_AK_ENV");
    String accessKeySecret = System.getenv("OTS_SK_ENV");
    final String instance = "";
    AsyncClient asyncClient = new AsyncClient(endpoint, accessKeyId, accessKeySecret, instance);
    // 设置元数据表的表名。
    TimestreamDBConfiguration conf = new TimestreamDBConfiguration("metaTableName");
    // 设置后台更新时间线的最大间隔。
    conf.setIntervalDumpMeta(10, TimeUnit.MINUTES);
    TimestreamDBClient db = new TimestreamDBClient(asyncClient, conf);
  2. 使用自定义Writer配置创建TimestreamDBClient。

    // 自定义TableStoreWriter callback实现。
    class DefaultCallback implements TableStoreCallback<RowChange, ConsumedCapacity> {
      private AtomicLong succeedCount = new AtomicLong();
      private AtomicLong failedCount = new AtomicLong();
    
      public void onCompleted(final RowChange req, final ConsumedCapacity res) {
        succeedCount.incrementAndGet();
      }
    
      public void onFailed(final RowChange req, final Exception ex) {
        System.out.println("Got error:" + ex.getMessage());
        dirtyLog.info(gson.toJson(req));
        failedCount.incrementAndGet();
      }
    }
    
    AsyncClient asyncClient = new AsyncClient(endpoint, accessKeyId, accessKeySecret, instance, clientConfiguration);
    // 设置元数据表的表名。
    TimestreamDBConfiguration conf = new TimestreamDBConfiguration("metaTableName");
    
    DefaultCallback callback = new DefaultCallback();
    
    // TableStoreWriter配置。
    WriterConfig writerConfig = new WriterConfig();
    // 设置writer的buffer为4096行。
    writerConfig.setBufferSize(4096);
    
    TimestreamDBClient db = new TimestreamDBClient(asyncClient, config, new WriterConfig(), callback);                    
阿里云首页 表格存储 相关技术圈