KVSであるRedisに保持するデータ設計のメモ。
RedisのList型ではLRANGEというコマンドがあり、開始と終了のINDEX(左から0,1,2...n)を指定してやれば直近何個分という取り方が容易になる。上記「TIME_IDX」を全件取得する場合にはINDEXを0~-1という指定してやれば全件取得できる。
なお処理時間は以下の通り。
この設計だと「時系列データの件数+1回」のgetが走ることになるので今後データが増えた場合にどうなるか監視する必要がありそう。
大きく分けて以下の2種類Key-Valueを使う。
- 時刻または日付を保持するList型Key-Value
- 1.の時刻または日付をKeyとして各銘柄の価格を保持するHash型Key-Value
時系列データ保存時にはListに時刻をLPUSHし、LPUSHした時刻をKeyとしたHashのHashKey=銘柄名(TICKER等)とHashValue=価格をHMSETで保存する。
※訂正:下部吹き出し”List型”とありますが、正しくは”Hash型”です。
RedisのList型ではLRANGEというコマンドがあり、開始と終了のINDEX(左から0,1,2...n)を指定してやれば直近何個分という取り方が容易になる。上記「TIME_IDX」を全件取得する場合にはINDEXを0~-1という指定してやれば全件取得できる。
なお処理時間は以下の通り。
この設計だと「時系列データの件数+1回」のgetが走ることになるので今後データが増えた場合にどうなるか監視する必要がありそう。
- LRANGE(全件=約35,000件):0.5-0.8s/req
- HGETALL:0.0004-0.0010/req
以上。
コメント
コメントを投稿