SlideShare a Scribd company logo
1 of 53
Download to read offline
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
InfluxDB の概要
June 27th, 2014
!
Naotoshi Seo @sonots

DeNA Co., Ltd.
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
2
自己紹介
・瀬尾 直利 @sonots
・DeNA Co., Ltd
・インフラのDev
・Rubyist
・OSS 活動家
・Fluentd コミッタ
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ ログを処理するアプリケーション(or フレームワーク)
⁃ Ruby プラグインの仕組みが強力 (+250 plugins)
⁃ InfluxDB との連携もできます!(fluent-plugin-influxdb)
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ グラフツール
⁃ HTTP POST するだけ
⁃ ストレージは RRDtool
http://kazeburo.github.io/GrowthForecast/
GrowthForecast
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
http://blog.livedoor.jp/sonots/archives/29646713.html
Yohoushi
!
分散 GrowthForecast グラフツール
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
・
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
7
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
8
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
免責事項
9
!
⁃ 対象バージョンは v0.7
⁃ 今後いろいろ変わる可能性があります
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
InfluxDB
10
!
⁃ 時系列データベースの1つ
⁃ 時系列データを格納するのに適したデータベース
⁃ メトリクスやイベントの保存や解析に便利
⁃ Paul, Todd, John の三人がフルタイムで開発して
いる (Y Combinator の出資を受けている)
⁃ golang
⁃ 2013年の Open Source Rookies に選ばれた
http://influxdb.com/
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
InfluxDB の特徴
11
!
!
• バックエンドに LevelDB を使っている
※ 抽象レイヤーもできました
• HTTP API でクエリを投げる
• database と series (RDBMS でいう table
のようなもの) の2階層
• スキーマレス
• 分散ストレージ
• (やたらと)豊富なクライアントライブラリ
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
豊富なクライアントライブラリ
12
• JavaScript
• Ruby
• Python
• Node.js
• PHP
• Java
• Clojure
http://influxdb.com
• Common Lisp
• Go
• Scala
• R
• Perl (by @hirose31)
• Haskell
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
時系列データベース
何に使うの?
13
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
何に使うか(具体例)
14
!
• システムメトリクスの保存
• アクセスログの集計や解析
• RRDtool の置き換え
• MySQL でやっている時系列データ解析置き換え
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
時系列データベース一覧
15
http://en.wikipedia.org/wiki/Time_series_database より
• Druid
• Geras
• InfluxDB
• KairosDB
• KDB+
• OpenTSDB
• SiteWhere
• TempoDB
• Treasure Data(?)
• RRDtool
• Graphite
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
HTTP API
16
データ登録、データ取り出し
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
データ登録
17
!
POST to /db/<database>/series?
u=<user>&p=<pass>.
[
{
"name" : "hd_used",
"columns" : ["time", "value", "host"],
"points" : [
[1400425947368, 23.2, "serverA"]
]
}
]
request body ※ timeを指定しない場合は現在時間
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
クエリ
18
!
GET to /db/<database>/series?
q=<query>&u=<user>&p=<pass>.
select * from log_lines limit 1
<query>
response body
[
{
"name": "log_lines",
"columns": ["time", "sequence_number", "line"],
"points": [
[1400425947368, 287780001, "here's some useful log info"]
]
}
]
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
クエリサンプル
19
InfluxDB をちょっとさわってみた - (ひ)メモ
http://d.hatena.ne.jp/hirose31/20140404/1396596668
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
時刻で範囲指定
20
[
{
"columns": ["time","sequence_number","reqtime","url"],
"name": "web9999.httpd",
"points": [
["1392030886","60703580001","0.21","/view/entry"],
["1392030885","60703560001","0.07","/login/error"],
["1392030884","60703540001","0.32","/login/"],
...
]
}
]
select reqtime, url from web9999.httpd
where time > now() - 1h limit 1000;
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
値で絞り込み(where)
21
[
{
"columns": ["time","sequence_number","reqtime","url"],
"name": "web9999.httpd",
"points": [
["1392030885","60703560001","0.07","/login/error"],
["1392030884","60703540001","0.32","/login/"],
["1392030881","60703480001","0.78","/login/error"],
...
]
}
]
select reqtime, url from web9999.httpd
where reqtime > 2.5;
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
値で絞り込み(正規表現)
22
[
{
"columns": ["time","sequence_number","reqtime","url"],
"name": "web9999.httpd",
"points": [
["1392030883","60703520001","2.81","/list/entry"],
["1392030878","60703420001","2.72","/view/entry"],
["1392030877","60703400001","2.94","/login/error"],
...
]
}
]
select reqtime, url from web9999.httpd
where url =~ /^/login//;
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
複数Series指定(正規表現)
23
[
{
"columns": ["time","sequence_number","sys","user"],
"name": "web9999.cpu",
"points":[
["1392030886","60703590001",3,57],
["1392030885","60703570001",9,1],
["1392030884","60703550001",28,42],
...
]
}
{
"columns": ["time","sequence_number","reqtime","url"],
"name": "web9999.httpd",
"points": [
["1392030886","60703580001","0.21","/view/entry"],
["1392030885","60703560001","0.07","/login/error"],
["1392030884","60703540001","0.32","/login/"],
...
]
}
]
select * from /web9999..*/;
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
複数Seriesへの問い合わせを
Mergeする
24
[
{
"columns": ["time","sequence_number","reqtime","url","_orig_series"],
"name": "web9999.httpd_merge_web0001.httpd",
"points": [
["1392030886","60706000001","1.09","/view/entry","web0001.httpd"],
["1392030886","60703580001","0.21","/view/entry","web9999.httpd"],
["1392030885","60705980001","1.53","/login/error","web0001.httpd"],
...
]
}
]
select reqtime, url from web9999.httpd
merge web0001.httpd;
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
group by (ダウンサンプリング)
25
select mean(sys) from web9999.cpu
group by time(15m);
15分ごとの平均値!
╭( ・ㅂ・)‫و‬ ̑̑
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使える Statement
26
!
• Group by
• Merge (series を複数指定して結果をマージする機能)
• Limit
• Join
• Order (time フィールド専用の Order by)
• Explain
╭( ・ㅂ・)‫و‬ ̑̑
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使えない Statement
27
!
• Having
• サブクエリ
• Order by (今はまだカラムにインデックス利かないので...)
!
( ・᷄д・᷅ )
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使える集約関数
28
!
• Count, Min, Max, Mean, Mode, Median
• Distinct
• Percentile, Histogram, Derivative
• Sum, Stddev, First/Last
• DIfference, Top/Bottom (v0.6)
!
Derivative (時間微分) とか便利
╭( ・ㅂ・)‫و‬ ̑̑
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使えない集約関数
29
!
• 豊富な Built-In 集約関数
• ユーザ定義できない (UDFの仕組みがない)
( ・᷄д・᷅ )
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Advanced
30
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Continuous Query
31
select percentile(value, 95) from
response_times group by time(5m)
into response_times.percentiles.5m.95;
!
select count(type) from events
group by time(10m), type
into events.count_per_type.10m;
クエリをあらかじめ仕込んでおくと、 逐次
的にデータを別のSeriesに格納してくれる
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Fanout Continuous Query
32
select * from events into events.[page_id];
• 格納先 Series の名前が動的に定まる
• Seriesを分けてインデックス代わりにす
るための機能
※ group by, join, merge, where と一緒に使えません
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Administration
33
• 3つのロール
• Cluster Admin
• データベースを追加削除できる
• Database admin と user を追加削除できる
• クエリは投げれない
• Database Admin
• Database admin と user を追加削除できる
• write/read パーミッションを変更できる
• Database User
• カレントデータベースを読み書きできる
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Graphite Protocol
34
http://influxdb.com/blog/2014/03/24/influxdb_v0_5_0_ready_for_production.html
• Input Plugin をサポート
• もう、HTTP だけじゃない
• Graphite Plugin
• UDP Plugin
• Graphite (欧米で人気) をすでに使っているシス
テムを InfluxDB に移行しやすくする狙い
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Abstract Storage Engines
35
https://github.com/influxdb/influxdb/tree/master/src/datastore/storage
http://influxdb.com/blog/2014/06/20/
leveldb_vs_rocksdb_vs_hyperleveldb_vs_lmdb_performance.html
抽象レイヤーが入ってLevelDBだけじゃなくなった
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
クラスタリング/Shard
36
• ドキュメントがない\(^o^)/
• config_sample.toml に設定項目はある
@chobi_e さんの発表に期待(・ω<) テヘペロ
※ 後記:こちらです https://speakerdeck.com/chobie/influxdb-internals-1
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
思ったこと /
気になったことツラツラ
37
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
38
• カラムにインデックス利かないので遅い
• LevelDB だと key (id,時間,sequence) に
しかインデックスきかない
• 集約関数は豊富だけど UDF 定義できない
• Having, サブクエリ, Order by 使えない...
• RRDtool のように古いデータを自動で消す事はで
きないのでバッチで消す...?
思ったこと
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Future
39
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Binary Protocol
40
!
!
• Protobuf / Msgpack / BSON
• Asynchronisity
• PubSub
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
PubSub Interface
41
!
!
• クエリを subscribe しておくと、
• データが入ってくるようなインターフェース
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Column Indexes
42
!
!
• カラムにインデックス貼りたい!
• タグカラムを用意したいらしい
• データにタグを貼る
• ついでに、1カラムに複数データを入れられる
Array 型もサポートしたいらしい
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Shard Spaces and
Retention Policies
43
!
• 保持期間を決めてそれが過ぎたらデータを捨てる
• RRDtool 的な(ry
shardSpaces = [
!
{name: "raw", retention: "4h"},
!
{name: "week", retention: "7d"},
!
{name: "month", retention: "30d"},
!
{name: "year", retention: "365d"},
!
{name: "keep", retention: "inf"}
!
]
// apply these rules for shard spaces
!
rules = [{
"database": "metricsDB",
!
"mappings": [
!
{"space": "week", "regex": "^week.*"},
!
{"space": "month", "regex": "^month.*"},
!
{"space": "year", "regex": "^year.*"},
!
{"space": "keep", "regex": "^keep.*"},
!
{"space": "raw", "regex": ".*"}
!
]
}]
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Custom Function
44
!
!
• ユーザ定義関数 (UDF)
• Lua Scripts ...
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Security Enhancements
45
!
!
• where custom_id = 3 にマッチするデータ
だけ許可とか {
"readPermissions": [
{
"matcher": ".*"
},
{
"name": "customer_events",
"whereClause": "where customer_id = 3"
}
],
"writePermissions": [
{
"name": "customer_events",
"valueRestrictions": {
"customer_id": 3
}
}
]
}
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Merging Many Series into One
46
!
• select * from merge /stats.*/
• 正規表現で指定できるようにしたいらしい
!
※ 下のような merge はすでにできる
select * from series1 merge series2
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
(ついでに)
ダッシュボード紹介
47
Elasticsearch に対する Kibana のような
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Built-In Interface
48
※おもちゃです
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Grafana
49
Kibana の fork。元は Graphite 用
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Influga
50
@hakobera 氏が作ってる便利そうなやつ :D
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
まとめ 
51
• InfluxDB の概要を説明しました
• Input Plugin の仕組みが出来て、HTTP API だけ
ではなく、Graphite, UDP でもデータ投入できる
• group by, join は使えるが、having, サブクエリ,
order by などはまだ使えない
• 抽象ストレージレイヤーができたのでストレージによっ
てはカラムにインデックスが利くようになるかも
• Future に期待
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
52
Thank you
Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Appendix: 情報源
53
• デザインゴール
• http://influxdb.com/docs/v0.7/introduction/overview.html
• https://github.com/influxdb/influxdb/blob/master/design_notes.md
• config_sample.toml
• https://github.com/influxdb/influxdb/blob/master/config.sample.toml
• 設定ファイルを読むとドキュメントに書いてないようなのが書いてあったり....
• Community
• http://influxdb.com/community
• メーリングリストに入って、@jvshahid, @toddpersen, and
@pauldix の三人を follow しておくとよさそう
• Paul Dix - Internals of InfluxDB
• http://pivotallabs.com/paul-dix-internals-influxdb/

More Related Content

What's hot

Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までKeiichiro Seida
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...Yahoo!デベロッパーネットワーク
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装tnoho
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...NTT DATA OSS Professional Services
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTT DATA OSS Professional Services
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習Hitoshi Sato
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache CassandraYuki Morishita
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門tamtam180
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介ippei_suzuki
 

What's hot (20)

Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Android/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニングAndroid/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニング
 
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
 

Similar to InfluxDB の概要 - sonots #tokyoinfluxdb

Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraNaotoshi Seo
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
移行セミナー BDE to FireDAC 20161018
移行セミナー BDE to  FireDAC 20161018移行セミナー BDE to  FireDAC 20161018
移行セミナー BDE to FireDAC 20161018Kaz Aiso
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15MapR Technologies Japan
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -Tomoya Kabe
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーHideo Kimura
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data PipelineAmazon Web Services Japan
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用Shota Suzuki
 

Similar to InfluxDB の概要 - sonots #tokyoinfluxdb (20)

Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfra
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
移行セミナー BDE to FireDAC 20161018
移行セミナー BDE to  FireDAC 20161018移行セミナー BDE to  FireDAC 20161018
移行セミナー BDE to FireDAC 20161018
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバー
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 

More from Naotoshi Seo

ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話Naotoshi Seo
 
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Naotoshi Seo
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Naotoshi Seo
 
Sinatra Pattern 20130415
Sinatra Pattern 20130415Sinatra Pattern 20130415
Sinatra Pattern 20130415Naotoshi Seo
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Naotoshi Seo
 
Is ruby logger thread(process)-safe? at RubyConf 2013
Is ruby logger thread(process)-safe? at RubyConf 2013Is ruby logger thread(process)-safe? at RubyConf 2013
Is ruby logger thread(process)-safe? at RubyConf 2013Naotoshi Seo
 
Haikanko rubykaigi 20130531
Haikanko rubykaigi 20130531Haikanko rubykaigi 20130531
Haikanko rubykaigi 20130531Naotoshi Seo
 
Fluentdcasual 02-haikanko
Fluentdcasual 02-haikankoFluentdcasual 02-haikanko
Fluentdcasual 02-haikankoNaotoshi Seo
 
capistrano-colorized-stream
capistrano-colorized-streamcapistrano-colorized-stream
capistrano-colorized-streamNaotoshi Seo
 

More from Naotoshi Seo (13)

ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
 
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014
 
Sinatra Pattern 20130415
Sinatra Pattern 20130415Sinatra Pattern 20130415
Sinatra Pattern 20130415
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3
 
Is ruby logger thread(process)-safe? at RubyConf 2013
Is ruby logger thread(process)-safe? at RubyConf 2013Is ruby logger thread(process)-safe? at RubyConf 2013
Is ruby logger thread(process)-safe? at RubyConf 2013
 
Yohoushi
YohoushiYohoushi
Yohoushi
 
Haikanko rubykaigi 20130531
Haikanko rubykaigi 20130531Haikanko rubykaigi 20130531
Haikanko rubykaigi 20130531
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
Fluentdcasual 02-haikanko
Fluentdcasual 02-haikankoFluentdcasual 02-haikanko
Fluentdcasual 02-haikanko
 
capistrano-colorized-stream
capistrano-colorized-streamcapistrano-colorized-stream
capistrano-colorized-stream
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 

InfluxDB の概要 - sonots #tokyoinfluxdb

  • 1. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. InfluxDB の概要 June 27th, 2014 ! Naotoshi Seo @sonots
 DeNA Co., Ltd.
  • 2. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 2 自己紹介 ・瀬尾 直利 @sonots ・DeNA Co., Ltd ・インフラのDev ・Rubyist ・OSS 活動家 ・Fluentd コミッタ
  • 3. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. ⁃ ログを処理するアプリケーション(or フレームワーク) ⁃ Ruby プラグインの仕組みが強力 (+250 plugins) ⁃ InfluxDB との連携もできます!(fluent-plugin-influxdb)
  • 4. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. ⁃ グラフツール ⁃ HTTP POST するだけ ⁃ ストレージは RRDtool http://kazeburo.github.io/GrowthForecast/ GrowthForecast
  • 5. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. http://blog.livedoor.jp/sonots/archives/29646713.html Yohoushi ! 分散 GrowthForecast グラフツール
  • 6. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. ・
  • 7. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 7
  • 8. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 8
  • 9. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 免責事項 9 ! ⁃ 対象バージョンは v0.7 ⁃ 今後いろいろ変わる可能性があります
  • 10. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. InfluxDB 10 ! ⁃ 時系列データベースの1つ ⁃ 時系列データを格納するのに適したデータベース ⁃ メトリクスやイベントの保存や解析に便利 ⁃ Paul, Todd, John の三人がフルタイムで開発して いる (Y Combinator の出資を受けている) ⁃ golang ⁃ 2013年の Open Source Rookies に選ばれた http://influxdb.com/
  • 11. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. InfluxDB の特徴 11 ! ! • バックエンドに LevelDB を使っている ※ 抽象レイヤーもできました • HTTP API でクエリを投げる • database と series (RDBMS でいう table のようなもの) の2階層 • スキーマレス • 分散ストレージ • (やたらと)豊富なクライアントライブラリ
  • 12. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 豊富なクライアントライブラリ 12 • JavaScript • Ruby • Python • Node.js • PHP • Java • Clojure http://influxdb.com • Common Lisp • Go • Scala • R • Perl (by @hirose31) • Haskell
  • 13. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 時系列データベース 何に使うの? 13
  • 14. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 何に使うか(具体例) 14 ! • システムメトリクスの保存 • アクセスログの集計や解析 • RRDtool の置き換え • MySQL でやっている時系列データ解析置き換え
  • 15. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 時系列データベース一覧 15 http://en.wikipedia.org/wiki/Time_series_database より • Druid • Geras • InfluxDB • KairosDB • KDB+ • OpenTSDB • SiteWhere • TempoDB • Treasure Data(?) • RRDtool • Graphite
  • 16. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. HTTP API 16 データ登録、データ取り出し
  • 17. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. データ登録 17 ! POST to /db/<database>/series? u=<user>&p=<pass>. [ { "name" : "hd_used", "columns" : ["time", "value", "host"], "points" : [ [1400425947368, 23.2, "serverA"] ] } ] request body ※ timeを指定しない場合は現在時間
  • 18. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. クエリ 18 ! GET to /db/<database>/series? q=<query>&u=<user>&p=<pass>. select * from log_lines limit 1 <query> response body [ { "name": "log_lines", "columns": ["time", "sequence_number", "line"], "points": [ [1400425947368, 287780001, "here's some useful log info"] ] } ]
  • 19. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. クエリサンプル 19 InfluxDB をちょっとさわってみた - (ひ)メモ http://d.hatena.ne.jp/hirose31/20140404/1396596668
  • 20. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 時刻で範囲指定 20 [ { "columns": ["time","sequence_number","reqtime","url"], "name": "web9999.httpd", "points": [ ["1392030886","60703580001","0.21","/view/entry"], ["1392030885","60703560001","0.07","/login/error"], ["1392030884","60703540001","0.32","/login/"], ... ] } ] select reqtime, url from web9999.httpd where time > now() - 1h limit 1000;
  • 21. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 値で絞り込み(where) 21 [ { "columns": ["time","sequence_number","reqtime","url"], "name": "web9999.httpd", "points": [ ["1392030885","60703560001","0.07","/login/error"], ["1392030884","60703540001","0.32","/login/"], ["1392030881","60703480001","0.78","/login/error"], ... ] } ] select reqtime, url from web9999.httpd where reqtime > 2.5;
  • 22. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 値で絞り込み(正規表現) 22 [ { "columns": ["time","sequence_number","reqtime","url"], "name": "web9999.httpd", "points": [ ["1392030883","60703520001","2.81","/list/entry"], ["1392030878","60703420001","2.72","/view/entry"], ["1392030877","60703400001","2.94","/login/error"], ... ] } ] select reqtime, url from web9999.httpd where url =~ /^/login//;
  • 23. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 複数Series指定(正規表現) 23 [ { "columns": ["time","sequence_number","sys","user"], "name": "web9999.cpu", "points":[ ["1392030886","60703590001",3,57], ["1392030885","60703570001",9,1], ["1392030884","60703550001",28,42], ... ] } { "columns": ["time","sequence_number","reqtime","url"], "name": "web9999.httpd", "points": [ ["1392030886","60703580001","0.21","/view/entry"], ["1392030885","60703560001","0.07","/login/error"], ["1392030884","60703540001","0.32","/login/"], ... ] } ] select * from /web9999..*/;
  • 24. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 複数Seriesへの問い合わせを Mergeする 24 [ { "columns": ["time","sequence_number","reqtime","url","_orig_series"], "name": "web9999.httpd_merge_web0001.httpd", "points": [ ["1392030886","60706000001","1.09","/view/entry","web0001.httpd"], ["1392030886","60703580001","0.21","/view/entry","web9999.httpd"], ["1392030885","60705980001","1.53","/login/error","web0001.httpd"], ... ] } ] select reqtime, url from web9999.httpd merge web0001.httpd;
  • 25. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. group by (ダウンサンプリング) 25 select mean(sys) from web9999.cpu group by time(15m); 15分ごとの平均値! ╭( ・ㅂ・)‫و‬ ̑̑
  • 26. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 使える Statement 26 ! • Group by • Merge (series を複数指定して結果をマージする機能) • Limit • Join • Order (time フィールド専用の Order by) • Explain ╭( ・ㅂ・)‫و‬ ̑̑
  • 27. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 使えない Statement 27 ! • Having • サブクエリ • Order by (今はまだカラムにインデックス利かないので...) ! ( ・᷄д・᷅ )
  • 28. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 使える集約関数 28 ! • Count, Min, Max, Mean, Mode, Median • Distinct • Percentile, Histogram, Derivative • Sum, Stddev, First/Last • DIfference, Top/Bottom (v0.6) ! Derivative (時間微分) とか便利 ╭( ・ㅂ・)‫و‬ ̑̑
  • 29. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 使えない集約関数 29 ! • 豊富な Built-In 集約関数 • ユーザ定義できない (UDFの仕組みがない) ( ・᷄д・᷅ )
  • 30. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Advanced 30
  • 31. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Continuous Query 31 select percentile(value, 95) from response_times group by time(5m) into response_times.percentiles.5m.95; ! select count(type) from events group by time(10m), type into events.count_per_type.10m; クエリをあらかじめ仕込んでおくと、 逐次 的にデータを別のSeriesに格納してくれる
  • 32. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Fanout Continuous Query 32 select * from events into events.[page_id]; • 格納先 Series の名前が動的に定まる • Seriesを分けてインデックス代わりにす るための機能 ※ group by, join, merge, where と一緒に使えません
  • 33. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Administration 33 • 3つのロール • Cluster Admin • データベースを追加削除できる • Database admin と user を追加削除できる • クエリは投げれない • Database Admin • Database admin と user を追加削除できる • write/read パーミッションを変更できる • Database User • カレントデータベースを読み書きできる
  • 34. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Graphite Protocol 34 http://influxdb.com/blog/2014/03/24/influxdb_v0_5_0_ready_for_production.html • Input Plugin をサポート • もう、HTTP だけじゃない • Graphite Plugin • UDP Plugin • Graphite (欧米で人気) をすでに使っているシス テムを InfluxDB に移行しやすくする狙い
  • 35. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Abstract Storage Engines 35 https://github.com/influxdb/influxdb/tree/master/src/datastore/storage http://influxdb.com/blog/2014/06/20/ leveldb_vs_rocksdb_vs_hyperleveldb_vs_lmdb_performance.html 抽象レイヤーが入ってLevelDBだけじゃなくなった
  • 36. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. クラスタリング/Shard 36 • ドキュメントがない\(^o^)/ • config_sample.toml に設定項目はある @chobi_e さんの発表に期待(・ω<) テヘペロ ※ 後記:こちらです https://speakerdeck.com/chobie/influxdb-internals-1
  • 37. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 思ったこと / 気になったことツラツラ 37
  • 38. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 38 • カラムにインデックス利かないので遅い • LevelDB だと key (id,時間,sequence) に しかインデックスきかない • 集約関数は豊富だけど UDF 定義できない • Having, サブクエリ, Order by 使えない... • RRDtool のように古いデータを自動で消す事はで きないのでバッチで消す...? 思ったこと
  • 39. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Future 39
  • 40. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Binary Protocol 40 ! ! • Protobuf / Msgpack / BSON • Asynchronisity • PubSub
  • 41. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. PubSub Interface 41 ! ! • クエリを subscribe しておくと、 • データが入ってくるようなインターフェース
  • 42. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Column Indexes 42 ! ! • カラムにインデックス貼りたい! • タグカラムを用意したいらしい • データにタグを貼る • ついでに、1カラムに複数データを入れられる Array 型もサポートしたいらしい
  • 43. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Shard Spaces and Retention Policies 43 ! • 保持期間を決めてそれが過ぎたらデータを捨てる • RRDtool 的な(ry shardSpaces = [ ! {name: "raw", retention: "4h"}, ! {name: "week", retention: "7d"}, ! {name: "month", retention: "30d"}, ! {name: "year", retention: "365d"}, ! {name: "keep", retention: "inf"} ! ] // apply these rules for shard spaces ! rules = [{ "database": "metricsDB", ! "mappings": [ ! {"space": "week", "regex": "^week.*"}, ! {"space": "month", "regex": "^month.*"}, ! {"space": "year", "regex": "^year.*"}, ! {"space": "keep", "regex": "^keep.*"}, ! {"space": "raw", "regex": ".*"} ! ] }]
  • 44. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Custom Function 44 ! ! • ユーザ定義関数 (UDF) • Lua Scripts ...
  • 45. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Security Enhancements 45 ! ! • where custom_id = 3 にマッチするデータ だけ許可とか { "readPermissions": [ { "matcher": ".*" }, { "name": "customer_events", "whereClause": "where customer_id = 3" } ], "writePermissions": [ { "name": "customer_events", "valueRestrictions": { "customer_id": 3 } } ] }
  • 46. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Merging Many Series into One 46 ! • select * from merge /stats.*/ • 正規表現で指定できるようにしたいらしい ! ※ 下のような merge はすでにできる select * from series1 merge series2
  • 47. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. (ついでに) ダッシュボード紹介 47 Elasticsearch に対する Kibana のような
  • 48. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Built-In Interface 48 ※おもちゃです
  • 49. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Grafana 49 Kibana の fork。元は Graphite 用
  • 50. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Influga 50 @hakobera 氏が作ってる便利そうなやつ :D
  • 51. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. まとめ  51 • InfluxDB の概要を説明しました • Input Plugin の仕組みが出来て、HTTP API だけ ではなく、Graphite, UDP でもデータ投入できる • group by, join は使えるが、having, サブクエリ, order by などはまだ使えない • 抽象ストレージレイヤーができたのでストレージによっ てはカラムにインデックスが利くようになるかも • Future に期待
  • 52. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. 52 Thank you
  • 53. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved. Appendix: 情報源 53 • デザインゴール • http://influxdb.com/docs/v0.7/introduction/overview.html • https://github.com/influxdb/influxdb/blob/master/design_notes.md • config_sample.toml • https://github.com/influxdb/influxdb/blob/master/config.sample.toml • 設定ファイルを読むとドキュメントに書いてないようなのが書いてあったり.... • Community • http://influxdb.com/community • メーリングリストに入って、@jvshahid, @toddpersen, and @pauldix の三人を follow しておくとよさそう • Paul Dix - Internals of InfluxDB • http://pivotallabs.com/paul-dix-internals-influxdb/