今回はDynamodbでの自動売買時の利用例についてだよ
MySQLとかではだめなの?
だめではないけど、自動売買で保有するデータなんてローソク足ぐらいだろうし、コスト面で無駄だと思うよ。
出来るだけ自動売買の運用ではお金かけたくないもんね。
今回はローソク足データをDynamoDBに登録するための方法も紹介するよ。
DynamoDBの設定方法
DynamoDBの設計
DynamoDBには自動でレコードを削除する機能が標準装備しています。今回はこちらの機能を利用することで必要のなくなった過去のローソク足を削除しながら必要な分のローソク足のみを登録し、無料でDynamoDBを利用できるようにします。
- 時系列データを自動削除機能が標準機能としてある
- Lambdaなどから容易に利用可能
- 無料枠内でずっと利用可能
カラム項目はこのような項目で設定します。
- unixtime
- datetime(日本時間表示用)
- delete_unixtime(削除unixtime)
- open(始値)
- high(高値)
- low(安値)
- close(終値)
DynamoDBのキャパシティーの設定
テーブルを作成したら次は無料枠で利用可能にするため、読込書込みのキャパシテーユニット数を「1」に設定します。
読込・書込みそれぞれ25ユニットまで無料となります。ここの数値を高く設定することで同時タイミングでの読込書込や扱うデータ数をより多く可能となります。
自動売買で1分毎に書込みと読込をするぐらいであればそれぞれ「1」の設定で十分です。
大量のデータを読み込んだり書き込んだりする場合は各ユニット数が1のままだと、正常に登録されなかったりしますので、メトリックスでキャパシティーが足りているかは確認してください。
DynamoDBの自動削除機能の有効化
有効期限(TTL)の設定を行います。この機能を有効にすると該当カラムのunixtimeが現在時刻が超えた場合削除されます。
設定には日本時間のunixttimeで問題ありません(東京リージョンのDynamoDBの場合)
正常に設定がされると1時間ぐらいたってからテーブルの該当カラムに(TTL)という表示がされます。
設定が正しくされるとあとは自動で該当のデータが削除されます。
不要なデータの削除をバッチや登録時に削除機能を設ける必要がなくなりストレスフリーです!
まとめ
たしかにRDSなどでMySQLを導入するとコスト高いからこれはいいね
ロボトレではDynamoDBを不要なテーブルを削除をして、2年以上無料で利用しているよ。
データを蓄積して、分析するぐらいであればDynamoDBをおすすめします。