最近、InfluxDBを使う機会があったので、このエントリではInfluxDBについて簡単に紹介します。
なお、他の時系列データベースとの比較は行なっていないのでご了承ください。
InfluxDBは時系列データベース(Time Series Database/TSDB)の1つで、HTTP APIを備えているという特徴があります。
時系列データベースはRDBと違って、時系列データに特化したDBです。
時系列データとは、サーバのメトリクスやユーザーの行動ログなどのように、1つ1つの情報自体よりも「情報の変遷」が意味を持つようなデータです。
InfluxDBにも時系列データベース特有の、データに保持期限を設けたり、データを間引いたり(ダウンサンプリング)する機能が備わっています。
InfluxDBのクエリはMySQLなどのRDBとよく似ています。
学習コストは低いものの、例えばRDBのtableにあたるものをInfluxDBでは「measurement」というように、用語に差異があります。
PostgreSQLやMySQLなどのRDBMSでは、mysql
コマンドなど、RDBMSそれぞれのクライアントツールを使用することが一般的です。
InfluxDBには最初からHTTP APIが用意されており、デフォルトで8086版ポートにHTTPリクエストするだけでCRUD+αの操作ができます。
便利ですね。
HTTPのエンドポイントについては下記の公式ドキュメントをご覧ください。
curl
コマンドでHTTP APIからクエリするときは、データベースを指定するdb
パラメータと、クエリのq
パラメータが最低限必要です。
試しにSELECTしてみましょう。
APIパラメータがシンプルなこと、レスポンスがJSONであることがわかると思います。
$ curl -G 'http://localhost:8086/query?db=mydb' --data-urlencode 'q=SELECT * FROM "mymeas"'
{"results":[{"statement_id":0,"series":[{"name":"mymeas","columns":["time","myfield","mytag1","mytag2"],"values":[["2017-03-01T00:16:18Z",33.1,null,null],["2017-03-01T00:17:18Z",12.4,"12","14"]]}]}]}
また、pretty=true
を付けるとJSONを読みやすいように整形してくれます。
$ curl -G 'http://localhost:8086/query?db=mydb&pretty=true' --data-urlencode 'q=SELECT * FROM "mymeas"'
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "mymeas",
"columns": [
"time",
"myfield",
"mytag1",
"mytag2"
],
"values": [
[
"2017-03-01T00:16:18Z",
33.1,
null,
null
],
[
"2017-03-01T00:17:18Z",
12.4,
"12",
"14"
]
]
}
]
}
]
}
以上です。このエントリではInfluxDBについて簡単に紹介しました。
InfluxDBのデータのダウンサンプリングについて知りたい方は下記の記事をご覧ください。
コメントを送る
コメントはブログオーナーのみ閲覧できます