LoginSignup
3
3

More than 3 years have passed since last update.

influxdbメモ

Posted at

スキーマ

スキーマデザインについては本家の資料を読むのが良さそう。
https://docs.influxdata.com/influxdb/v1.7/concepts/schema_and_data_layout/

  • タグはインデクス化される
  • タグに多様な値を入れるな
    • UUID, ランダム文字列, ハッシュなどを入れるな
    • タグ値のカーディナリティ(一意性)が高いとメモリをたくさん消費する
  • タグに符号化されたデータを埋め込むな
    • だめ
      • location=plot-1.north
      • location=plot-2.midwest
    • よい
      • plot=1,region=north
      • plot=2,region=midwest
  • メジャメントに符号化されたデータを埋め込むな
    • だめ
      • blueberries.plot-1.north
      • blueberries.plot-1.midwest
    • よい
      • weather_sensor,crop=blueberries,plot=1,region=north
      • weather_sensor,crop=blueberries,plot=2,region=midwest

クエリ

INSERT

メジャメント名 + タグ、 値、 タイムスタンプを順に渡す。それぞれの間はホワイトスペースで区切る。

タイムスタンプを省略すると現在時刻で記録される。

> INSERT environment humidity=28.7
> INSERT environment humidity=60.7

SELECT

SQLと似た構文で問い合わせる。

> SELECT * FROM environment
name: environment
time                         humidity
----                         --------
2019-09-18T14:48:27.3243244Z 26.8
2019-09-18T14:49:46.5689408Z 60.7

influxdbの特徴でもある時刻のグループ処理。

10秒毎にグループして平均値を取る。値のない部分は線形補間する( FILL()linear の他に、 previous , none , null を取る)。 WHERE 句で対象を絞り込まないと、現在時刻まで集計してしまうので注意。

> SELECT MEAN("humidity") FROM environment WHERE time < '2019-09-18T14:49:47Z' GROUP BY time(10s) FILL(linear)
name: environment
time                 mean
----                 ----
2019-09-18T14:48:20Z 26.8
2019-09-18T14:48:30Z 31.0375
2019-09-18T14:48:40Z 35.275000000000006
2019-09-18T14:48:50Z 39.5125
2019-09-18T14:49:00Z 43.75
2019-09-18T14:49:10Z 47.987500000000004
2019-09-18T14:49:20Z 52.22500000000001
2019-09-18T14:49:30Z 56.462500000000006
2019-09-18T14:49:40Z 60.7

DELETE

SQLのように削除できる。時刻フォーマットが文字列の場合には ' でくくる( " ではない)。

> DELETE FROM environment WHERE time='2019-09-18T14:49:46.5689408Z'
> SELECT * FROM environment
name: environment
time                         humidity
----                         --------
2019-09-18T14:48:27.3243244Z 26.8

時刻フォーマットの切り替え

influx コマンドの起動時に -precision オプションによって切り替える。

$ influx -port 18086 -precision rfc3339
> SELECT * FROM environment
name: environment
time                           humidity
----                           --------
2019-08-21T01:12:26.313999872Z 52.95

システム問い合わせ

MySQL風のクエリでシステムに問い合わせできる。

データベース一覧

> SHOW DATABASES
name: databases
name
----
db0
_internal

メジャメント一覧

> SHOW MEASUREMENTS
name: measurements
name
----
environment
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3