【AWS学習記録】DynamoDB Accelerator(DAX)について勉強

DynamoDB Accelerator(DAX)がよくわからなかったので勉強しました。
DynamoDB DAXの公式ドキュメントはこちらです。 ]

aws.amazon.com

DynamoDB DAXは以下のようなケースで使えるようです。
・同じデータを何度も読み取る必要のあるアプリケーションの場合
・コストを抑えたい場合
・大きいデータセットに繰り返し読み取り処理を行う場合

以下作業メモです。

DynamoDBを作成する前に 9111ポートとSSHポート22を空けるセキュリティグループを作っておきます。

f:id:JunpeiNakasone:20210917063117p:plain

次にDynamoDB DAXを作成しました。
f:id:JunpeiNakasone:20210917071257p:plain f:id:JunpeiNakasone:20210917071312p:plain f:id:JunpeiNakasone:20210917071327p:plain f:id:JunpeiNakasone:20210917071347p:plain f:id:JunpeiNakasone:20210917071402p:plain f:id:JunpeiNakasone:20210917071416p:plain f:id:JunpeiNakasone:20210917071430p:plain

次にGitHubにDynamoDB検証に使えるリポジトリがあったので、EC2を立ち上げてGolangをインストールしてからgo getコマンドでEC2に入れました。

github.com

上記リポジトリを入れてから下記コマンドをEC2で実行し、DynamoDBにテーブル作成とデータ挿入を行います。

go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command create-table

go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command put-item

次に以下のコマンドでDynamoDBからデータを取得します。

go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command get-item

go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command query

go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command scan  

ターミナルに以下のように取得時間が表示されました。

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command get-item
Total Time: 9.835309386s, Avg Time: 393.412375ms

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command query
Total Time: 176.041692ms, Avg Time: 7.041667ms

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dynamodb -command scan
Total Time: 204.441134ms, Avg Time: 8.177645ms

次にDynamoDBのマネジメントコンソールからDAXのエンドポイントをコピーし、以下のコマンドを実行してDynamoDBではなくDAXに対して読み取り処理を実行しました。

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dax -command get-item -endpoint daxs://test202109.gs14wu.dax-clusters.us-east-1.amazonaws.com
Total Time: 8.631963432s, Avg Time: 345.278537ms

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dax -command query -endpoint daxs://test202109.gs14wu.dax-clusters.us-east-1.amazonaws.com
Total Time: 114.967814ms, Avg Time: 10.598712ms

[root@ip-172-31-17-156 ec2-user]# go run ~/go/src/github.com/aws-samples/aws-dax-go-sample/try_dax.go -service dax -command scan -endpoint daxs://test202109.gs14wu.dax-clusters.us-east-1.amazonaws.com
Total Time: 145.015295ms, Avg Time: 8.800611ms

DAXエンドポイントからもデータが取得でき、取得時間が短くなりました。

作業メモは以上です。