AWS

【DynamoDB】概要 (まとめ)

DynamoDBの概要や特徴、出来る事を簡単に説明します。

DynamoDBの構成

DynamoDBはデータベースです。
RDS同様テーブルがあり、テーブルの中にデータの集合体(レコード)が存在します。DynamoDBではレコードを “項目” と呼びます。
項目はカラムで構成されています。DynamoDBではカラムを “属性” と呼びます。

テーブル間のリレーション

DynamoDBにはテーブルが存在しますが、テーブル間のリレーションは存在しません。

項目の読み書きにはプライマリキーが重要

各テーブルには値がユニークとなる属性が必ず1つ存在します。
これをプライマリキーと言います。
DynamoDBはプライマリキーを指定し、テーブルの項目を読み書き、削除します。

プライマリキー以外はスキーマレス

テーブルの項目はプライマリキーのみ定義されてさえいれば良いです。プライマリキー以外の属性はあらかじめ定義しなくても良いです。
なので、項目によって属性が異なる場合があります。
例えば、プライマリキーが “ID” の場合、”ID” のデータタイプ(数値なのか文字列なのかなど)が定義されデータが存在していれば良いです。従って、あるデータは “ID” と “名前” で構成されていたり、あるデータは “ID” と “年齢” で構成されることもあります。

DynamoDBへのアクセスプロトコル

RDSではデータベースへテーブルを作成したり、データの読み書き、削除(CRUD)する場合、SQLを使用していました。
しかし、DynamoDBは全てHTTPリクエストにより実行されます。

DynamoDBへの接続ツール

AWS マネジメントコンソール、AWS CLI が利用できます。
アプリケーション(主にLambda)からDynamoDBを使用したい場合は、SDK が利用できます。
SDK を利用するとDynamoDBへのアクセス認証(アクセスする為の認証データの暗号化など)もSDKが行なってくれるのでこれらを意識する事なく使用できるので便利です。なので特別な理由がない限りはSDKを使用する事をお勧めします。

プライマリキー以外を使用した項目の読み込み

基本的に項目の読み込みはプライマリキーを指定します。しかし、プライマリキー以外の属性を使用して項目を取得したい場合があります。この場合、テーブルから特定の属性のみをコピーしたインデックステーブルを作成し、インデックステーブルからコピーした属性を指定して項目を取得することが可能です。インデックステーブルを作成する時にコピーする属性はインデックステーブルにおいてはプライマリキーとなります。
ゆえにプライマリキーはDynamoDBにとって重要な要素になります。

項目の全件読み込み

基本的に項目の読み込みはプライマリキーを指定します。しかし、プライマリキーを気にせず項目を全件を取得したい場合があります。その場合はスキャンというオペレーションを使用することで項目が全件取得できます。しかし、データが大量の場合の取得はコスト(料金)がかかります。

トランザクション

データの登録にトランザクションを使いたい場合があります。DynamoDBはトランザクション制御も可能です。

バックアップ

簡単な操作で全てのデータのバックアップを作成することができます。
また、定期的にデータのバックアップを作成することもできます。
定期的データバックアップの場合、過去35日までデータを確保します。

不要データ削除

データベースのデータは古くなって使われないから削除したいという時の為に、通常ではデータ削除バッチを作成し、アプリケーションが定期的にデータを参照し古いデータを削除するようなことはよくある話です。
DynamoDBは特定のカラムに登録されている時間を見て古いデータを削除するということもできます。

DynamoDB Streams

あるテーブルに項目が追加された、あるテーブルの項目が更新されたということをトリガーにし、任意のLambda関数を実行することができます。
DynamoDB Streamsを設定したテーブルは、テーブルの変更前後がキャプチャされ、トリガーで実行されたLambda関数には、テーブルの前後の項目全件が参照できます。
これを利用して、とあるサービスにユーザが入会すると、入会テーブルに項目が追加され、これをトリガーとして、入会者へウェルカムメールを送信するといったことも可能になります。

料金

まず1つ目はデータの量になります。データのストレージコストはデータの量が多ければ多いほどコストもかかります。
2つ目はデータI/Oの量です。2通りの指定が可能です。キャパシティーモードといいます。
以下のキャパシティモードの指定が可能です。

・オンデマンド
データI/Oされた分だけコストがかかります。この場合、操作のレイテンシーは起こらないので可溶性が確保されます。

・プロビジョニング
1秒あたりのデータI/Oの量(スループット)が制限以内であれば無料となります。スループットが制限を超えるとレイテンシーが発生したり、料金が発生します。
オートスケーリングを設定することでレイテンシーは確保できます。

最後に

DynamoDBの概要や特徴や出来る事を簡単に説明しました。
次回は、DynamoDBの構成を説明します。

© DeNnie.Lab All Rights Reserved.