SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler 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/

Mais conteúdo relacionado

Mais procurados

DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
研修成果プレゼン資料
研修成果プレゼン資料研修成果プレゼン資料
研修成果プレゼン資料Wataru Yamaura
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6Hironobu Isoda
 
H2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoMLH2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoML西岡 賢一郎
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析Yuki Mizuno
 
2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化aitc_jp
 
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-Yusuke Naka
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話Satoru Fujimori
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
最近の自然言語処理
最近の自然言語処理最近の自然言語処理
最近の自然言語処理naoto moriyama
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するKeioOyama
 
Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①iPride Co., Ltd.
 
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門Yoshinori Yamanouchi
 

Mais procurados (20)

Bloom filter
Bloom filterBloom filter
Bloom filter
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
研修成果プレゼン資料
研修成果プレゼン資料研修成果プレゼン資料
研修成果プレゼン資料
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
 
入門 シェル実装
入門 シェル実装入門 シェル実装
入門 シェル実装
 
H2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoMLH2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoML
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化
 
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
これがCassandra
これがCassandraこれがCassandra
これがCassandra
 
最近の自然言語処理
最近の自然言語処理最近の自然言語処理
最近の自然言語処理
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
 
Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①
 
オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門オトナのTDD(テスト駆動開発)入門
オトナのTDD(テスト駆動開発)入門
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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/