2017-06-12 64 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 

讓我知道,如果我錯過了幾個點,我會嘗試更新我的答案。

謝謝