2017-06-12 61 views
0

我正在使用InfluxDb作为我的数据库。在InfluxDb中,数据存储在度量(类似于表),标签(索引)和字段中。 标签被索引,从而导致更快的数据检索。Influxdb中标记(索引)的比较不起作用

我的查询参数是start timeend time,我将它们保存在标签中。

INSERT supply,start_time=10,end_time=20 value=100

这里start_timeend_time存储在字符串格式。

SELECT * FROM supply where start_time>5返回NULL,因为标签存储在字符串中。

问题1:有没有办法在标签中进行比较?如果是,如何?

问题2:我可以在start_timeend_time上查询它们的字段。但他们没有索引。所以我应该切换到像Postgres一样的其他数据库,如果涉及到与字段查询很多开销,或者如果我查询未索引的字段是好的。我在数据库中有大约1000万条条目,需要快速检索。

回答

1

问题1:是的,您可以比较Influxdb中的标签,但只能使用“=”运算符。因为,标签默认存储在字符串数据类型中,所以“=”运算符适用于它们,但不是不等式,因此,如果基于字段进行查询,查询速度会很慢。 这里从influxdb文档参加 -

Tags are by default stored in string datatype so "=" operator works 
    for them but not the inequality and therefore, 
    query will be slow if you query based on fields . 

Writing Data in Influxdb

此外,InfluxDB还存储在其被插入的数据点的时间。检查您是否也可以使用此默认时间戳。

Question2-: 在转移到sql数据库(如postgresql)之前,您应该就插入,查询优化,集群管理(如果需要)对两个DB进行基准评估。

注:我使用influxdb查询以下列方式 -

select sum(field_value) as FIELD_VALUE_SUM from measurement_name where tag_key='1234' and time> '2017-03-10 00:00:00' and time<'2017-05-10 00:00:00'; 

并获得尽可能输出 -

name: measurement_name 
time     FIELD_VALUE_SUM 
----     ------ 
1489104000000000001 1058 

让我知道,如果我错过了几个点,我会尝试更新我的答案。

谢谢