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

Influx DB 0.9 - specify Duration in Java Driver

我对 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 中具体指定的位置。看起来 influx db 的 java 驱动程序的所有 examples/tests 都使用 "default" 保留策略。

那么有人可以提供代码片段吗?我应该如何从 Java 驱动程序创建保留策略?可能吗?

谢谢

保留策略是使用查询创建的 如果 JavaDriver 可以提交查询,请继续阅读 RP creation 并发送适当的查询。您还可以通过 CLI 或 curl.

将查询直接提交给 InfluxDB

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

算法是:

  1. 借助以下代码 (groovy) 在数据库上创建一个具有逻辑名称的保留策略:


    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. 现在创建保留策略后可以插入数据

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