前回は、AP型データベースである「Amazon DynamoDB」および「Apache Cassandra」について、分散モデルやデータ配置、リレーショナルデータベースとの機能的な差異を整理しました。今回は、Amazon DynamoDBについてもう少し理解を深めた上で、実際にDynamoDBを構築してみましょう。

Amazon DynamoDBの概要

Amazon DynamoDBは、AWSフルマネージドなAP型NoSQLデータベースで、特に項目属性定義が必要ないスキーマレスのテーブル構成をとります。リージョンごとにデータベースが構築されるサービスであり、異なるアベイラビリティゾーンにデータが3カ所レプリケーションされます。結果整合性に関しては、オプションで選択可能です。

読み込み/書き込み 結果整合性のオプション 動作
読み込み 【結果整合性のある読込】 2/3以上の読込で結果一致した場合正常応答
【強い読込整合性】 全てのReadRepairが完了している状態で、結果を応答
書き込み 【結果整合性のある書込】 2/3以上の書込が成功した場合正常応答

データを一意に識別するためのプライマリーキー(PrimaryKey)は、パーティションキー(PartitionKey)あるいはソートキー(SortKey)との組み合わせで構成されます。原則、プライマリーキー以外の検索はできませんが、代わりに任意の属性をパーティションキーとするグローバルセカンダリインデックス(GlobalSecondaryIndex:GSI)とパーティションキーと別の属性とを組み合わせて作成するローカルセカンダリインデックス(LocalSecondaryIndex:LSI)が利用できます

また、DynamoDBでは、AWSの各種サービスと統合されています。デフォルトでIAMによりきめ細やかにアクセス制御され、実行メトリクスはCloudWatchと連携されますし、AWS Lambdaと統合して、項目レベルの変更が発生した場合に、通知を送信できます。さらに、Amazon Elasticsearchを使ってDB項目のフリーテキスト検索をすることも可能です。

加えて、DynamoDBはクロスリージョンでグローバルテーブルの構築が可能となっています。複数のリージョンで同一のデータを参照/更新できますが、複数のリージョンを跨いで1つのテーブルとなるようにデータノードを配置するのではなく、リージョンごとにレプリケーションを作成するかたちになります。したがって、異なるリージョンでほぼ同時に更新が発生した場合、レプリカテーブルへの反映は数秒程度で反映されますが、最新の書き込みのほうが反映されるため注意が必要です。

※ ローカルセカンダリインデックスはテーブルとインデックスの合計サイズが各パーティションキーごとに20GBまでで制限されます。

Amazon DynamoDBの構築

それでは、DynamoDBを構築してみましょう。AWSコンソールの「DynamoDB」サービスから、「テーブルの作成」ボタンを押下し、以下の要領にのっとって入力します。

  • テーブル名:任意のテーブル名を入力
  • プライマリーキー:パーティションキー及びオプションでソートキー名を入力
  • デフォルトの設定:チェックする

「DynamoDBテーブルの作成」画面

データベースの作成は以上で完了です。合わせてコンソール上からテーブルにデータを追加してみましょう。作成したテーブルを選択し、「項目」タブで「項目の作成」ボタンを押下してください。

作成したテーブルを選択し、「項目」タブで「項目の作成」ボタンを押下

パーティションキーやソートキーに加えて「sampleText」という属性名を入力し、「保存」ボタンを押下します。

「sampleText」という属性名を追加して「保存」ボタンを押下

ユーザー/認証情報の作成

続いて、次回以降で作成するアプリケーションでローカル環境からDynamoDBへアクセスするために必要なユーザーとその認証情報を作成しておきましょう。

「IAM」サービスから「ユーザー」メニューを作成し、「ユーザーの作成」ボタンを押下し、以下の要領にのっとって入力してください。

  • ユーザー名:任意の名前を入力
  • アクセスの種類:アプリケーションからアクセスするユーザーを作成するため、「プログラムによるアクセス」を選択

「ユーザーを追加」画面

次に、アクセス権限を追加します。グループを作成しても良いのですが、ここでは、直接ユーザーにDynamoDBのフルアクセス権限ポリシーをアタッチしましょう。

「既存のポリシーを直接アタッチ」を選択し、「AmazonDynamoDBFullAccess」を選択してください。

アクセス許可を設定する

タグは特に設定しなくてもかまいません。

今回はタグの追加は不要

確認画面で設定内容を確認した後、「ユーザーの作成」ボタンを押してください。

「ユーザーの作成」ボタンを押下

これでユーザーが作成されました。アクセスキーIDとシークレットアクセスキーが表示されるので、CSV形式でこの認証キーをダウンロードしておいてください。

CSV形式でこの認証キーをダウンロード

以上でDynamoDBの作成は完了です。次回はこのテーブルにアクセスするSpringアプリケーションを作成します。

著者紹介


川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理

金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。2019 APN AWS Top Engineers & Ambassadors選出。