Memo/AmazonWebServices/DynamoDB

https://dexlab.net:443/pukiwiki/index.php?Memo/AmazonWebServices/DynamoDB
 

DynamoDB


awscliで調査する

  • dynamodbのexample-tableのid項目だけすべて抽出
    AWS_PROFILE=example
    AWS_REGION=ap-northeast-1
    TABLE_NAME=example-table
    
    aws dynamodb scan \
     --table-name $TABLE_NAME \
     --projection-expression "id" \
     --profile $AWS_PROFILE \
     --region $AWS_REGION \
     > "${AWS_PROFILE}.${AWS_REGION}.${TABLE_NAME}.id.json"
  • jqでフィルター: "[a-zA-Z0-9]" 以外の文字が入っているデータのみ表示
    echo '{"Items":[{"id":{"S":"abc123"}},{"id":{"S":"abc-123"}}]}' | jq -r '.Items[] | select(.id.S | test("[^a-zA-Z0-9]+")) | .id.S' | sort
    
    abc-123

グローバルテーブル


データの登録


グローバルセカンダリーインデックス


TTL: 不用アイテムの自動削除


ベストプラクティス


On-Demand: 事前のキャパシティプランニングが不要

  • 使用頻度が低い時、開発時等に使った分だけ払えば良いので良い。
  • 使いすぎに注意。上限を設定したい場合は、AutoScalingが良い。
  • AutoScalingと併用はできない。

    例外としてauto scalingはこのmodeでは無効になります。

  • on-demand modeへの変更は1日1回。on-demandからprovisioned modeへの変更も同様。
  • PAY_PER_REQUESTへ設定変更後、「ProvisionedThroughput」が「0」になり、「BillingModeSummary」が増えている。
    aws dynamodb describe-table --table-name example --profile example --region ap-northeast-1
    ...
             "ProvisionedThroughput": {
                 "NumberOfDecreasesToday": 0, 
    -            "WriteCapacityUnits": 2, 
    -            "ReadCapacityUnits": 2
    +            "WriteCapacityUnits": 0, 
    +            "ReadCapacityUnits": 0, 
    +            "LastDecreaseDateTime": 1543559458.239
             }, 
    ...
    +        "BillingModeSummary": {
    +            "LastUpdateToPayPerRequestDateTime": 1543560129.221
    +            "BillingMode": "PAY_PER_REQUEST"
    +        },

バックアップ


ddbcli: 対話型CLIクライアント


Auto Scaling

※On-Demandが発表されたので不用かも。併用はできない

  • キャパシティを下げられる回数は、1日27回(1時間に1回*24 + 手動で任意の値にできる4回)

インポート/エクスポート


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-04-16 (木) 10:24:38 (51d)