Influxdb を Windows で使ってみたい
参考:
を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\""}
下記ページに沿って設定を見直す。
いろいろいじっているうちに、influxd.exe を起動しながら別のコンソールから influx.exe を実行することで DB にアクセスできることに気づいた。
下記参照
できたできたー
Jupyter lab で Ruby を使う
ひとことで説明すると、「iruby をインストールしたら Jupyter Notebook/Lab で Ruby が使える」
インストール方法は iruby 公式にある。
https://github.com/SciRuby/iruby
今見たらこんなふうに書いてあって、
後段の gem はそのとおり実行したらいいんだけど、前段の pacman は入ってないのでめんどくさい・・・(pacman はパッケージマネージャ)
で、いろいろ調べてたら zeromq を単体インストールしつつ dll だけ拾ってきて iruby を動かす方法が乗ってた。
https://qiita.com/mix_dvd/items/3e4305d31e7a6785fbb0
うごいた太郎
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 の問題もある・・・?
テスト
ああああ