时序时空数据库TSDB

    管理接口

    v0.10.17版本的sdk中,支持用户通过API创建/删除/查询时序数据库实例。

    新建TsdbAdminClient

    String ACCESS_KEY_ID = <your-access-key-id>;               // 用户的Access Key ID
    String SECRET_ACCESS_KEY = <your-secret-access-key>;       // 用户的Secret Access Key
    String ADMIN_ENDPOINT = "tsdb.gz.baidubce.com";            // 注意:与新建TsdbClient时使用的endpoint不同
     
    // 创建配置
    BceClientConfiguration config = new BceClientConfiguration()
                    .withCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY))
                    .withEndpoint(ADMIN_ENDPOINT);
     
    // 初始化一个TsdbAdminClient
    TsdbAdminClient tsdbAdminClient = new TsdbAdminClient(config);

    BceClientConfiguration中的配置项参考新建TsdbAdminClient。同样的,TsdbAdminClient也支持使用HTTPS,配置方式参考TsdbClient。

    创建时序数据库实例

    示例代码如下:

    String databaseName = "databasename";                            // 实例的名字
    String description = "description";                              // 实例描述,可不填写
    int ingestDataPointsMonthly = 1;                                 // 写入额度,单位:百万点/月
    int queryUnitsMonthly = 10;                                      // 查询额度,单位:万个/月
    int purchaseLength = 1;                                          // 购买时长,单位:月
    String couponName = <your-coupon-name>;                          // 代金券号,可不填写
     
    CreateDatabaseRequest request = new CreateDatabaseRequest()
        .withDatabaseName(databaseName)
        .withDescription(description)
        .withIngestDataPointsMonthly(ingestDataPointsMonthly)
        .withQueryUnitsMonthly(queryUnitsMonthly)
        .withPurchaseLength(purchaseLength)
        .withCouponName(couponName);
     
    String clientToken = <your-client-token>;                        // ClientToken, 用于保证幂等性,重试发送创建请求时,使用同一个clientToken。
    CreateDatabaseResponse response = tsdbAdminClient.createDatabase(request, clientToken);

    返回值所包含字段请参考API文档

    删除时序数据库实例

    示例代码如下:

    String databaseId = <your-database-id>;                            // 实例的ID
    tsdbAdminClient.deleteDatabase(databaseId);

    注意,只允许删除到期的时序数据库实例,否则将报错。

    获取时序数据库实例

    示例代码如下:

    String databaseId = <your-database-id>;                            // 实例的ID
    GetDatabaseResponse database = tsdbAdminClient.getDatabase(databaseId);

    返回值所包含字段请参考API文档

    获取时序数据库实例列表

    示例代码如下:

    ListDatabaseResponse database = tsdbAdminClient.listDatabase();

    创建删除数据点任务

    示例代码如下:

    // 假定用户要删除wind和temperature这两个metric下的数据点,并且每个metric都使用tagFilter进行过滤
    
    // windTaskTagFilter是wind这个metric对应的filter
    TaskTagFilter windTaskTagFilter = new TaskTagFilter();
    windTaskTagFilter.setTagKey("city");
    windTaskTagFilter.addIn("bj");
    
    // temperatureTaskTagFilter是temperature这个metric对应的filter
    TaskTagFilter temperatureTaskTagFilter = new TaskTagFilter();
    temperatureTaskTagFilter.setTagKey("city");
    temperatureTaskTagFilter.addIn("gz");
    
    // tags的key为metric, value为metric对应的TagFilter的列表
    Map<String, List<TaskTagFilter>> tags = new HashMap<String, List<TaskTagFilter>>();
    // 添加wind及其对应的filter
    tags.put("wind", Arrays.asList(windTaskTagFilter));
    // 添加temperature及其对应的filter
    tags.put("temperature", Arrays.asList(temperatureTaskTagFilter));
    
    // 创建删除请求并获取response
    DeleteDatapointsRequest deleteRequest = new DeleteDatapointsRequest();
    deleteRequest.setDatabaseId("tsdb_sdfd434xxxx");
    // 设置需要删除的metric,如果不设置metrics字段或者metricFieldsList字段,则会删除所有metric和field的数据,
    // 删除时会去tags中查询metric对应的filter进行过滤
    deleteRequest.setMetrics(Arrays.asList("wind", "temperature"));
    deleteRequest.setTags(tags);
    DeleteDatapointsResponse deleteResponse = tsdbAdminClient.deleteDatapoints(deleteRequest);

    创建导出数据点任务

    示例代码如下:

    // 假定用户要导出wind和temperature这两个metric下的数据点,并且每个metric都使用tagFilter进行过滤
    
    // windTaskTagFilter是wind这个metric对应的filter
    TaskTagFilter windTaskTagFilter = new TaskTagFilter();
    windTaskTagFilter.setTagKey("city");
    windTaskTagFilter.addIn("bj");
    
    // temperatureTaskTagFilter是temperature这个metric对应的filter
    TaskTagFilter temperatureTaskTagFilter = new TaskTagFilter();
    temperatureTaskTagFilter.setTagKey("city");
    temperatureTaskTagFilter.addIn("gz");
    
    // tags的key为metric, value为metric对应的TagFilter的列表
    Map<String, List<TaskTagFilter>> tags = new HashMap<String, List<TaskTagFilter>>();
    // 添加wind及其对应的filter
    tags.put("wind", Arrays.asList(windTaskTagFilter));
    // 添加temperature及其对应的filter
    tags.put("temperature", Arrays.asList(temperatureTaskTagFilter));
     
    ExportDatapointsRequest exportRequest = new ExportDatapointsRequest();
    exportRequest.setDatabaseId("tsdb_sdfd434xxxx");
    exportRequest.setBosUrl("bos://iot-tsdb/test/");
    exportRequest.setFormat("csv");
    exportRequest.setSingleFile(true);
    // 设置需要导出的metrics,如果不设置,会导出所有的metric,对于每个需要导出的metric,会去tags中查询对应的filter
    // 进行过滤
    exportRequest.setMetrics(Arrays.asList("wind", "temperature"));
    exportRequest.setTags(tags);
    ExportDatapointsResponse exportResponse = tsdbAdminClient.exportDatapoints(exportRequest);

    获取任务信息

    示例代码如下:

    GetTaskRequest getTaskRequest = new GetTaskRequest();
    getTaskRequest.setDatabaseId("tsdb_sdfd434xxxx");
    getTaskRequest.setTaskId("taskId");
    GetTaskResponse response = tsdbAdminClient.getTask(getTaskRequest);
    上一篇
    写入数据点的gzip压缩说明
    下一篇
    版本说明