【printf!】 IT系若手エンジニアのブログです
MENU
AWS

AWS DynamoDBとは?【AWS認定試験 SAA/DVA/CLF対策】

Kei

本ページでは、AWSのマネージドNoSQLデータベースサービスであるAWS DynamoDBについて、初心者向けにその特徴や用途を紹介します!

私自身が「初めて勉強したとき、これを知りたかった!」と感じた内容を中心にまとめていますので、ぜひ最後までご覧ください!

スマトラ
スマトラ
AWS認定試験対策メモ

AWS 認定クラウドプラクティショナー
(AWS Certified Cloud Practitioner, CLF)

AWS 認定ソリューションアーキテクト アソシエイト
(AWS Certified Solutions Architect – Associate, SAA)

AWS 認定デベロッパー アソシエイト
(AWS Certified Developer – Associate, DVA)

DynamoDBの概要

AWS DynamoDB(ダイナモ ディービー)は、AWSが提供するデータベースサービスです。

DynamoDBについて、先にざっくり言ってしまうと…

DynamoDBとは

処理が高速で、拡張性・柔軟性にも優れた
Key-Value型のNoSQLデータベースサービス

となっています!

まず、データベースには、分類として大きく分けて下記の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のように、面倒な運用作業をAWSがまとめて行ってくれるタイプのサービスのことを マネージドサービス と呼びます。他にはストレージのS3や、サーバーレスコンピューティングサービスのLambdaなどがマネージドサービスの代表例です。

AWS
AWS

開発者が大事な開発作業に集中できるように、その他の作業はこちらでやっておきます。お任せください!

DynamoDBのデメリット(注意点)

DynamoDBの特性を理解した上で、設計が必要

手軽に利用可能で、性能も拡張性も高いDynamoDBですが、テーブル(表)の設計に際しては少し注意が必要です。

いくらDynamoDBが優秀でも、テーブルが上手に設計できていないと、期待通りの性能が出ない可能性があります。例えばRDBほど複雑な検索機能が使えないため、キーやインデックスを上手に設定しておかないと使いにいテーブルになってしまいます。このあたりは、AWS公式からもベストプラクティス等が公開されていますので、設計の際は参考しましょう。

あわせて読みたい
【AWS公式】DynamoDB を使用した設計とアーキテクチャの設計に関するベストプラクティス
【AWS公式】DynamoDB を使用した設計とアーキテクチャの設計に関するベストプラクティス
スマトラ
スマトラ

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

代表的な使い方

データベースとして様々な使い方が考えられます。例は下記の通りです。

  • スマホアプリのユーザー情報管理
  • ECサイトの在庫データ管理
  • IoTセンサーからのデータ収集

AWSの他サービスと組み合わせたより具体的な仕様例も、下記に示しておきますので、参考にしてください。

API Gateway、Lambdaと組み合わせて、APIを作成

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

API GatewayやLambdaについては、ぜひこちらも参考にしてください。

AWS API Gatewayとは?【AWS認定試験 SAA/DVA/CLF対策】
AWS API Gatewayとは?【AWS認定試験 SAA/DVA/CLF対策】
AWS Lambdaとは?【AWS認定試験 SAA/DVA/CLF対策】
AWS Lambdaとは?【AWS認定試験 SAA/DVA/CLF対策】

まとめ

ここまで、AWS DynamoDBの概要や代表的な使い方についてまとめました。

DynamoDBは、処理が高速で、拡張性・柔軟性にも優れたKey-Value型のNoSQLデータベースサービスです。テーブルの設計にややコツがいるものの、保守・運用はAWSが行ってくれるマネージドサービスであり、使い勝手の良いデータベースサービスとなっています。

高速で読み書きしたいとき、あるいは、とりあえずNoSQLのデータベースを構築したいときなどは、まずDynamoDBの利用を検討してみてください!

ABOUT ME
スマトラ
スマトラ
IT系若手エンジニア
大手メーカーでクラウドアプリを開発しているエンジニア。
訳あって今はIT系だが、学生時代は航空宇宙工学を専攻で、電気回路設計や組み込み開発も経験あり。 自分の人生を人生ゲームだと思って、前向きに頑張る毎日を送る。
このブログでは、自身が勉強したこと、やったこと、考えたことなどを備忘録も兼ねて書いています。
記事URLをコピーしました