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 ,语法可能有点冗余(数据库名称在查询创建代码中出现两次,见下文).
算法是:
- 借助以下代码 (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}")
}
- 现在创建保留策略后可以插入数据
BatchPoints batchPoints = BatchPoints
.database(dbName)
.tag("async", "true")
.retentionPolicy(RETENTION_POLICY)
.consistency(InfluxDB.ConsistencyLevel.ALL)
.build()
我对 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 java 驱动程序没有用于创建保留策略规则的特殊 API。 相反,我们应该使用常规的 org.influxdb.dto.Query ,语法可能有点冗余(数据库名称在查询创建代码中出现两次,见下文).
算法是:
- 借助以下代码 (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}")
}
- 现在创建保留策略后可以插入数据
BatchPoints batchPoints = BatchPoints
.database(dbName)
.tag("async", "true")
.retentionPolicy(RETENTION_POLICY)
.consistency(InfluxDB.ConsistencyLevel.ALL)
.build()