Influxdb を Windows で使ってみたい

参考:

qiita.com

 

https://dl.influxdata.com/influxdb/releases/influxdb-1.7.7_windows_amd64.zip unzip influxdb-1.7.7_windows_amd64.zip

 をDLした。

 

案内通り、influxdb.conf を修正する。Windows のパス区切りは \\ でエスケープしておかなければいけない点に注意。

 

influxd.exe --config C:\Your_config_dir\influxdb.conf

で起動。

 

起動確認。

$ curl "http://localhost:8086/query?q=CREATE DATABASE test"
400 Bad Request 

 あれー?

そもそも localhost:8086 が 404。

 

あ、でもhttp://localhost:8086/queryにアクセスしたら下が出た。動いてることは動いてそう。

{"error":"missing required parameter \"q\""}

 

下記ページに沿って設定を見直す。

richardn.ca

 

いろいろいじっているうちに、influxd.exe を起動しながら別のコンソールから influx.exe を実行することで DB にアクセスできることに気づいた。

下記参照

kakakakakku.hatenablog.com

 

できたできたー

Jupyter lab で Ruby を使う

ひとことで説明すると、「iruby をインストールしたら Jupyter Notebook/Lab で Ruby が使える」

インストール方法は iruby 公式にある。

https://github.com/SciRuby/iruby

 

今見たらこんなふうに書いてあって、

f:id:masayashi:20190810150003p:plain

後段の gem はそのとおり実行したらいいんだけど、前段の pacman は入ってないのでめんどくさい・・・(pacman はパッケージマネージャ)

 

で、いろいろ調べてたら zeromq を単体インストールしつつ dll だけ拾ってきて iruby を動かす方法が乗ってた。

https://qiita.com/mix_dvd/items/3e4305d31e7a6785fbb0

 

うごいた太郎

f:id:masayashi:20190810150220p:plain

 

 

sqliteが重いときはインデックス作りましょう

前回、約定履歴1ヶ月分の3000万データが、取得が重すぎてうーんって感じだったんですが

https://usagimonkey.hatenablog.com/entry/2019/07/28/125956

 

なんかインデックスというやつを作れという話らしいですね。

sqlite> create index dateindex on data(date);
Run Time: real 80.178 user 27.953125 sys 16.234375

つくった。2分くらい。

 

sqlite> select count(id) from data where date between '2019-06-26' and '2019-06-27';
620143
Run Time: real 0.088 user 0.046875 sys 0.031250

爆速化しました。優勝です。

Ruby での取得も8秒くらいになった。

全約定履歴を1ヶ月分とった記録

FX_BTCJPY を sqlite3 に突っ込んだ。
1ヶ月分が取得できる。

DBサイズ:3.1GB
レコード数:30811478

そこそこのサイズ感だけど、まあ許容範囲。

 

ただしクエリが重い。

select count(id) from data; => 17sec

うーん

 

日で絞るとこれ。

 sqlite> select count(id) from data where date between '2019-06-25' and '2019-06-26';
251346
Run Time: real 46.358 user 8.890625 sys 7.046875

 

さらに、ruby で1日分を取得すると 72 秒かかった。さすがに重すぎる。大量のデータを扱いづらい Ruby の問題もある・・・?