LoginSignup
1
0

More than 3 years have passed since last update.

DynamoDBのチュートリアルを読み解く【1: ストリームが有効になった DynamoDB テーブルを作成する】

Last updated at Posted at 2020-01-27

はじめに

DynamoDBについて勉強がてらチュートリアルをやろうと思い、ただ実行するだけなのも芸がないのでコマンドのオプションがどういう意味なのか調べながらやりました。
その結果、手順の1つ目(テーブル作成)だけになってしまいましたが……。

(2020/1/29追記:タイトルを修正しました)

1-1.テーブル作成コマンド

コマンドはチュートリアルより。

aws dynamodb create-table \
    --table-name BarkTable \
    --attribute-definitions AttributeName=Username,AttributeType=S AttributeName=Timestamp,AttributeType=S \
    --key-schema AttributeName=Username,KeyType=HASH  AttributeName=Timestamp,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES

各オプションについて

--table-name

  • 書式: --table-name (value) 作成するテーブル名を指定。

--attribute-definitions

  • 書式 : --attribute-definitions AttributeName=(Value)

キースキーマを記述する属性の配列。

--key-schema

  • 書式 : --key-schema AttributeName=,KeyType=HASH|RANGE 主キーを構成する属性。
    • AttributeName : 属性名
    • KeyType : キー属性の役割
      • HASH : パーティションキー
      • RANGE : ソートキー

--provisioned-throughput

  • 書式 : --provisioned-throughput ReadCapacityUnits=(value),WriteCapacityUnits=(value) プロビジョニングされたスループット設定。(詳細は後述)
    • ReadCapacityUnits : 読み込みキャパシティユニット(RCU)の数
    • WriteCapacityUnits : 書き込みキャパシティユニット(WCU)の数

--stream-specification

- 書式 : StreamEnabled=true,StreamViewType=KEYS_ONLY|NEW_IMAGE|OLD_IMAGE|NEW_AND_OLD_IMAGES

テーブルのDynamoDBストリームの設定。

  • StreamEnabled : DynamoDB Streamsを有効にするか無効にするか
  • StreamViewType : テーブルのアイテム変更時にテーブルのストリームに書き込まれる情報。
    • KEYS_ONLY : 変更されたアイテムのキー属性のみ
    • NEW_IMAGE : アイテム全体
    • OLD_IMAGE : 変更される前に表示されていたアイテム全体
    • NEW_AND_OLD_IMAGES : アイテムの新しいアイテム画像と古いアイテム画像の両方

キャパシティユニットについて

キャパシティユニット(以降CU)が何かを説明する前に、DynamoDBの課金要素を知っておく必要があります。
DynamoDBの課金要素は下記の3つになります。
 ① テーブルに対して読み込み/書き込みを行ったデータ量
 ② DynamoDBへのデータ保管量
 ③ DynamoDBまでのデータ転送量(厳密にはDynamoDB自体の課金ではありませんが)

ざっくり言うと、CUとは「読み込み/書き込みの単位(サイズ)」のことで、
DynamoDBでは1秒間にどれだけ読み書きが発生するかを予め見積もり、その分のCU(読み込みと書き込みそれぞれ)を購入して割り当てる必要があります。
(以降、読み込みCUはRCU、書き込みCUはWCUと記載)

RCUは4KB単位、WCUは1KB単位で計算されます。
つまり、1RCUで4KBのレコード読み込み、1WCUで1KBのレコード書き込みが可能です。
(結果整合性読み込みを行わない場合、1RCUで2回の読み込みが可能)

先述のテーブル作成コマンド内の「ReadCapacityUnits」「WriteCapacityUnits」がそれぞれいくつのCUを割り当てるかを決めるオプションになります。
また、CUは1秒間のキャパシティを決めるものです。今回の場合、1秒間に5RCU/5WCUが割り当てられています。
(ちなみに5というのがデフォルトのようです)

このように予めDynamoDBのキャパシティ(厳密にはスループットかも)を見積もる方式を「プロビジョニングモード」と言います。CU単位ではなくリクエスト回数での課金とする「オンデマンドモード」というのもありますが、料金は前者よりお高くなるようです。

参考URL

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0