Influx DB 0.9 - 在Java驱动程序中指定持续时间

时间:2015-11-10 09:28:52

标签: groovy influxdb

我对InfluxDB中的保留政策和持续时间有疑问。 我正在使用InfluxDB来编写时间数据。 数据应该是从groovy中的某个文本文件中获取的,所以我使用了以下驱动程序来使用Influx DB 0.9.4:

   <dependency>
        <groupId>org.influxdb</groupId>
        <artifactId>influxdb-java</artifactId>
        <version>2.0</version>
    </dependency>

现在我可以插入数据(我正在使用BatchPoints):

BatchPoints batchPoints = BatchPoints
                    .database(dbName)
                    .tag("async", "true")
                    .retentionPolicy("default")
                    .consistency(InfluxDB.ConsistencyLevel.ALL)
                    .build()     

List<Point> points = obtainAllMyMeasurementsHere()
points.each {p ->
   batchPoints.point(p)
}
influxClient.write(batchPoints)

到目前为止一直很好,但现在我想在1周之后自动删除我的积分。

据我所知,我需要使用保留策略和持续时间,但我无法理解java中的确切位置。看起来流入数据库的java驱动程序的所有示例/测试都使用“默认”保留策略。

有人可以提供代码片段,我应该如何从Java Driver创建保留策略?有可能吗?

由于

2 个答案:

答案 0 :(得分:1)

使用查询创建保留策略如果JavaDriver可以提交查询,只需阅读RP creation并发送正确的查询。您也可以通过CLI或curl直接向InfluxDB提交查询。

答案 1 :(得分:0)

Influxdb java驱动程序没有用于创建保留策略规则的特殊API。 相反,我们应该使用常规的 org.influxdb.dto.Query ,可能会略微冗余的语法(数据库名称在查询创建代码中出现两次,见下文)。

算法是:

  1. 借助以下代码(groovy)在数据库上创建具有逻辑名称的保留策略:
  2. 
    
        String RETENTION_POLICY = "samplepolicy"
        String dbName = "sampledb"
        long ttl = 60 * 60 * 24 // one day ttl
        Query createRetentionPolicyQuery = new Query("CREATE RETENTION POLICY $RETENTION_POLICY ON $dbName DURATION ${ttl}s REPLICATION 1 DEFAULT", dbName)
    
        // create the policy:
        InfluxDB influxClient = createClient(...) // omitted for brevity
    
        QueryResult result = influxClient.query(createRetentionPolicyQuery)
            if(result.error != null) {
                throw new RuntimeException("Failed to create a retention policy on database $dbName. Reason: ${result.error}")
            }
    
    
    
    1. 现在,当创建保留策略时,可以插入数据
    2. 
            BatchPoints batchPoints = BatchPoints
            .database(dbName)
            .tag("async", "true")
            .retentionPolicy(RETENTION_POLICY)
            .consistency(InfluxDB.ConsistencyLevel.ALL)
            .build()