AWS DynamoDBとは?【AWS認定試験 SAA/DVA/CLF対策】
本ページでは、AWSのマネージドNoSQLデータベースサービスであるAWS DynamoDBについて、初心者向けにその特徴や用途を紹介します!
私自身が「初めて勉強したとき、これを知りたかった!」と感じた内容を中心にまとめていますので、ぜひ最後までご覧ください!

AWS 認定クラウドプラクティショナー
(AWS Certified Cloud Practitioner, CLF)
AWS 認定ソリューションアーキテクト アソシエイト
(AWS Certified Solutions Architect – Associate, SAA)
AWS 認定デベロッパー アソシエイト
(AWS Certified Developer – Associate, DVA)
DynamoDBの概要
AWS DynamoDB(ダイナモ ディービー)は、AWSが提供するデータベースサービスです。
DynamoDBについて、先にざっくり言ってしまうと…
となっています!
まず、データベースには、分類として大きく分けて下記の2種類が存在します。
- RDB (Relational Database)
- NoSQL (Not Only SQL)
NoSQLの方が新しく、RDBよりも柔軟性や処理速度などの向上を目指して作られたアーキテクチャになっています。DynamoDBはNoSQLであり、より詳細にはKey-Value型というタイプのデータベースです。
また、DynamoDBは複雑な使用準備(ソフトウェアのインストールなど)や、その後の保守や運用が不要となっています。さらに、負荷に応じて処理能力も自動で調整(オートスケーリング)してくれます。

アイコン

こちらが、アーキテクチャ図で用いられるDynamoのアイコンです。
ストレージやデータベースに対してよく使われる丸い筒状のアイコンに、
稲妻マークが添えられています。
稲妻マークの由来については、おそらくDynamo (ダイナモ) が発電機という意味ですので、電気つながりで稲妻マークになっているのではと思います。ちなみに、Dynamoという言葉自体は、昔あった分散データベースシステム「Dynamo」がルーツとなっているためです。

DynamoDBのメリット
処理が高速で、拡張性も高い
DynamoDBは、世界中の数百万人のユーザーからアクセスされるような大規模なアプリケーションにおいても、高いパフォーマンスを発揮します。
本来、大規模なデータベースを自前でゼロから構築しようとすると、信頼性を維持しつつ性能を高めるのは非常に難しい作業です。そんな中でもDynamoDBでは、「どうすれば性能を高められるか」を深く気にすることなく、ちょっとした設定をするだけで利用開始できます。

DBシステムとしての性能はAWSが保証してくれますが、アプリごとのテーブル(表)の設計はユーザーの担当です。下の方でも言及しますが、使いこなしには少しコツが必要です。
面倒な保守・運用はAWSがやってくれる(マネージド型)
データを保存しておくという性質上、ストレージやデータベースには高い信頼性が求められます。高い信頼性を維持するためには、本来は膨大な保守・運用作業が必要であり、人手も時間も必要です。しかしDynamoDBではこれらの作業をAWSがまとめて請け負ってくれます。このため、大規模なデータベースであっても比較的簡単に構築~運用が可能です!

開発者が大事な開発作業に集中できるように、その他の作業はこちらでやっておきます。お任せください!
DynamoDBのデメリット(注意点)
DynamoDBの特性を理解した上で、設計が必要
手軽に利用可能で、性能も拡張性も高いDynamoDBですが、テーブル(表)の設計に際しては少し注意が必要です。
いくらDynamoDBが優秀でも、テーブルが上手に設計できていないと、期待通りの性能が出ない可能性があります。例えばRDBほど複雑な検索機能が使えないため、キーやインデックスを上手に設定しておかないと使いにいテーブルになってしまいます。このあたりは、AWS公式からもベストプラクティス等が公開されていますので、設計の際は参考しましょう。


DynamoDBの特性を理解した上で設計してあげると、DynamoDB本来の力を引き出すことができます!


代表的な使い方
データベースとして様々な使い方が考えられます。例は下記の通りです。
- スマホアプリのユーザー情報管理
- ECサイトの在庫データ管理
- IoTセンサーからのデータ収集
AWSの他サービスと組み合わせたより具体的な仕様例も、下記に示しておきますので、参考にしてください。
API Gateway、Lambdaと組み合わせて、APIを作成

API Gatewayでは、実行リクエストのあったAPIの種類(URIやHTTPメソッド)に応じて、動かすLambdaを指定することができます。この例では、Lambdaによって何らかの処理を実行後、その結果をDynamoDBに保存します。
API GatewayやLambdaについては、ぜひこちらも参考にしてください。


まとめ
ここまで、AWS DynamoDBの概要や代表的な使い方についてまとめました。
DynamoDBは、処理が高速で、拡張性・柔軟性にも優れたKey-Value型のNoSQLデータベースサービスです。テーブルの設計にややコツがいるものの、保守・運用はAWSが行ってくれるマネージドサービスであり、使い勝手の良いデータベースサービスとなっています。
高速で読み書きしたいとき、あるいは、とりあえずNoSQLのデータベースを構築したいときなどは、まずDynamoDBの利用を検討してみてください!
