On Tuesday, October 18, 2016 at 1:17:22 PM UTC-4, ma...@influxdb.com wrote:
> The precision as specified in the query string[1] is treated as truth. If you 
> provide a timestamp at millisecond resolution, but don't specify the 
> precision or specify it as nanoseconds, the timestamp will be interpreted as 
> nanoseconds. (The current unix time in milliseconds, interpreted as 
> nanoseconds, will be about 24 minutes into Jan 1 1970.)
> 
> A couple relevant places in the code are setting the precision of a point [2] 
> and handling precision and writing points in the HTTP handler [3].
> 
> [1] 
> https://docs.influxdata.com/influxdb/v1.0/tools/api/#query-string-parameters-1
> [2] 
> https://github.com/influxdata/influxdb/blob/cea7690b728a23a7a196020ea411707d2807d176/models/points.go#L1364-L1378
> [3] 
> https://github.com/influxdata/influxdb/blob/cea7690b728a23a7a196020ea411707d2807d176/services/httpd/handler.go#L645-L692
> 
> On Tuesday, October 18, 2016 at 10:02:15 AM UTC-7, andrew...@gmail.com wrote:
> > I'm looking to fix the influxdb-java client library as it forces all point 
> > timestamps to nanosecond precision, which is a waste of space and hit in 
> > performance when only captured in millisecond precision.  One of the 
> > questions however is understanding what InfluxDB does whenever the 
> > measurement timestamp precision doesn't match what was specified in the 
> > /write.
> > 
> > Any clarity and links to code base would be very welcome!

Thanks for the links and clarification; makes sense.

Since one of the best practices I've heard regarding InfluxDB is having lower 
precision as needed.  The two issues I was alluding to were:

1) influxdb-java library org.influxdb.dto.Point.formatedTime() converts all 
timestamps to nanoseconds

Source: 
https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/dto/Point.java

private StringBuilder formatedTime() {
        final StringBuilder sb = new StringBuilder();
        if (null == this.time) {
                this.time = 
this.precision.convert(System.currentTimeMillis(),TimeUnit.MILLISECONDS);
        }
        sb.append(" ").append(TimeUnit.NANOSECONDS.convert(this.time, 
this.precision));
        return sb;
}


2) influxdb-java library org.influxdb.impl.InfluxDBImpl.write() methods forces 
nanosecond precision

Source: 
https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/impl/InfluxDBImpl.java

execute(this.influxDBService.writePoints(
                this.username,
                this.password,
                batchPoints.getDatabase(),
                batchPoints.getRetentionPolicy(),
                TimeUtil.toTimePrecision(TimeUnit.NANOSECONDS),
                batchPoints.getConsistency().value(),
                lineProtocol));


Thanks again Sean / Mark!

-- 
Remember to include the version number!
--- 
You received this message because you are subscribed to the Google Groups 
"InfluxData" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to influxdb+unsubscr...@googlegroups.com.
To post to this group, send email to influxdb@googlegroups.com.
Visit this group at https://groups.google.com/group/influxdb.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/influxdb/7a9587e5-fae9-460f-9a81-8a91632d7ab9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to