初始化
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系统使配置生效。
示例代码
使用默认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);
使用自定义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);