DynamoDBの設定項目をマネコンで確認しつつ整理してみた

2023.08.15

こんにちは、ゲームソリューション部のsoraです。
今回は、DynamoDBの設定項目をマネコンで確認しつつ整理してみたことについて書いていきます。

本記事では、DynamoDBとはみたいな話は説明しません。
(とはいえ設定項目に出てきた機能は簡単に説明します。)

DynamoDBとは何かを知りたい方は以下記事をご参照ください。

テーブルの作成

画像が縦に長いですが、DynamoDBでテーブル作成する際の設定項目は以下です。
結構多いですが1つずつ見ていきます。

テーブルの詳細


テーブル名

名前の通り、テーブル名を設定します。

パーティションキー・ソートキー

パーティションキーは必須で、ソートキーはオプションです。
パーティションキーはデータをどのパーティションに保存するかを決定します。
ソートキーを設定しない場合は、パーティションキーがプライマリキーとなるため、一意である必要があります。

ソートキーはデータの並び替えに使用され、検索などでも使用されます。
ソートキーを設定する場合は、パーティションキーとソートキーで複合プライマリキーとできるため、パーティションキーは一意でなくても良いです。

キーの型は、文字列・数字・バイナリから選択します。

テーブル設定


以下2つから選択します。
・デフォルト設定:デフォルトの設定で構築します。
・設定をカスタマイズ:各設定項目を設定していきます。

デフォルト設定の場合は、以下のように以降の設定がデフォルトで設定されます。

テーブルクラス


DynamoDB標準とDynamoDB 標準-IAから選択します。
DynamoDB 標準-IAは、DynamoDB標準と比較して、ストレージ料金が安い代わりに読み込み/書き込みのトラフィックにかかる料金が高いものです。
読み書きが少ない場合は、こちらの方が費用が抑えられる場合があります。

キャパシティー計算ツール


設定には関係ありませんが、各項目を入力することでキャパシティーユニット数や推定コストを算出することができます。

項目の平均サイズ(KB)

テーブル項目の平均サイズを入力します。
テーブル項目のサイズと形式についての詳細は、公式ページをご参照ください。
DynamoDB 項目のサイズと形式

読み込み/書き込みキャパシティユニット

キャパシティユニットとは、読み込みと書き込みの容量を表すものです。
読み込みキャパシティユニットは、4KBごとに1RCU消費します。
読み込みの一貫性が、結果整合性の場合はそこからRCUを1/2倍、強力な整合性の場合は1倍、トランザクションの場合は2倍消費します。

書き込みキャパシティユニットは、1KBごとに1WCU消費します。
書き込みの一貫性が、スタンダードの場合はそこからWCUを1倍、トランザクションの場合は2倍消費します。

読み込みの一貫性

結果整合性・強力な整合性・トランザクションから選択します。
計算ツールでは入力可能ですが、マネージメントコンソールから実際に設定することはできません。

書き込みの一貫性

スタンダード・トランザクションから選択します。
こちらも計算ツールでは入力可能ですが、マネージメントコンソールから実際に設定することはできません。

読み込み/書き込みキャパシティの設定


キャパシティモード

オンデマンド・プロビジョンドから選択します。
オンデマンドは、リクエストを受けた分だけ支払いをする形であり、事前のキャパシティユニットの設計などが不要です。
プロビジョンドは、キャパシティユニット数などを事前に設定して使用します。

プロビジョンドに設定した場合、24時間に1度オンデマンドモードに切り替えることが可能です。
オンデマンドからプロビジョンドには、いつでも切り替え可能です。
読み取り/書き込みキャパシティモード

読み込み/書き込みキャパシティ

読み込み/書き込みのそれぞれに対して、キャパシティユニット数を設定します。
キャパシティユニットにはAuto Scalingを設定することが可能であり、最小/最大のキャパシティユニット数・ターゲットの使用量(%)を設定して、自動でスケールさせることが可能です。
注意点として、瞬時にスケールできるわけではないため、その点は考慮が必要です。

セカンダリインデックス


ローカルセカンダリインデックス(LSI)とグローバルセカンダリインデックス(GSI)を作成できます。
ローカルセカンダリインデックスは、同一パーティションキー内でソートキーに別のキーを指定したインデックスです。
テーブルのソートキー以外をキーにして検索したい場合に利用します。

グローバルセカンダリインデックスは、パーティションキーの代わりとなるインデックスです。
パーティションキーをまたいで検索をしたり、多数の異なるデータを基にクエリを実行したい場合に便利です。
ただし、テーブル構成が複雑になり、NoSQLデータベースの利点である単純なテーブル構成から外れていくため、使いどころには注意が必要です。

読み込み/書き込みキャパシティの推定コスト


ここまで入力した内容から読み込み/書き込みキャパシティの推定コストが算出されます。

保管時の暗号化


暗号化キーの管理

以下3つから選択します。
「Amazon DynamoDBが所有」以外では、追加でKMSに対する料金が発生します。
・Amazon DynamoDBが所有:DynamoDBで所有するAWSによって管理されている鍵を使用します。
・AWS マネージドキー:KMSで所有するAWSによって管理されている鍵を使用します。
・お客様のアカウントに保存され、お客様によって所有および管理されます。:カスタマーマネージドキーを使用します。

削除保護


DynamoDBの削除権限を持っていても、削除保護をオフにするまでは削除できなくする機能です。
誤って削除してしまうことを予防することができます。

タグ


他のリソースでもよくあるタグの設定です。

テーブル作成後の設定や各種機能

以降は、主要な部分のみ記載します。

テーブル

設定の更新

作成したテーブルに関する設定を行います。

バックアップ

ポイントインタイムリカバリ(PITR)の設定や1度だけの(定期的でない)バックアップの取得設定ができます。
ポイントインタイムリカバリは、DynamoDBテーブルのデータを自動バックアップする機能です。
過去35日以内であれば1秒単位でデータをバックアップして、1秒単位でリストアすることができます。

エクスポートおよびストリーム

DynamoDBテーブルからS3へエクスポートしたり、DynamoDBストリームの設定ができます。
DynamoDBストリームは、過去24時間以内のテーブルデータに対して行われた変更履歴を保持して取り出しを可能にする機能です。
クロスリージョンレプリケーションや分析/解析のための非同期の集計などに利用されます。

追加の設定

Time To Live(TTL)はある期限を設定して、その期限を超えた項目を自動的に削除する機能です。
有効期限切れかどうかを判断するための属性を指定する必要があるため、テーブルに属性を作成しておく必要があります。
実際に試してみた記事があったため、動作が見たい方は以下をご参照ください。

項目の探索

テーブル内のデータに対して、項目のスキャンやクエリの実行を行います。
テーブルを選択すると自動でスキャンが入って、キャパシティユニットが消費されるので注意が必要です。(画面上でもその旨表示されています。)

PartiQLエディタ

SQL互換のクエリ言語であるPartiQLを使って、テーブルに対してクエリを実行します。
実際に試してみた記事があったため、動作が見たい方は以下をご参照ください。

S3へのエクスポート/インポート

DynamoDBのテーブルからS3へエクスポートしたり、インポートすることができます。
S3からのDynamoDBへのインポートは書き込みキャパシティを消費しません。

設定

DynamoDBに関するマネージメントコンソールでの表示レイアウトなどの設定ができます。
テーブルに対する設定ではなくGUI周りの設定です。

最後に

今回は、DynamoDBの設定項目をマネコンで確認しつつ整理してみたことを記事にしました。
簡単にまとめるつもりが結構長くなってしまいました。
どなたかの参考になると幸いです。