SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送Google Cloud Platform - Japan
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 FallYoshitaka Kawashima
 
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理Takeshi Yamamuro
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionTetsutaro Watanabe
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門Masahito Zembutsu
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 株式会社MonotaRO Tech Team
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
Tableau APIの概要とデモ
Tableau APIの概要とデモTableau APIの概要とデモ
Tableau APIの概要とデモYusuke Asada
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...NTT DATA Technology & Innovation
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?たけおか しょうぞう
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめKenichi Sonoda
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門ESM SEC
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
 

Tendances (20)

ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
 
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
Tableau APIの概要とデモ
Tableau APIの概要とデモTableau APIの概要とデモ
Tableau APIの概要とデモ
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
 
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudyリペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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/