Amazon DynamoDBとは?何ができるの?特徴や使い方を解説!
thumb_dynamodb_01
Amazon DynamoDBとは?何ができるの?特徴や使い方を解説!
アンドエンジニア編集部
2022.09.20
この記事でわかること
Amazon DynamoDBとは、AWSのサーバーレスサービスでNoSQLのデータベースサービスを指します
実際の利用例も多く、ユースケースのサイトでは多数の事例が公開されています
AWSのマネジメントコンソールを用いてセットアップし、他のサービスと連携できます

Amazon DynamoDBとは

img_dynamodb_01

Amazon DynamoDBとは、AWSが提供するNoSQLのデータベースサービスを指します。フルマネージドのサーバーレスサービスで、1桁ミリ秒単位のパフォーマンス安定性が確保されており、スループットの高いデータベースサービスです。

【参考】:Amazon DynamoDB

データベースとは?今更聞けないその内容をITエンジニアとして改めて学ぶ

Amazon DynamoDBの料金体系

Amazon DynamoDBの料金体系は、ニーズに応じてオンデマンドキャパシティーモードとプロビジョニング済みキャパシティーモードの2種類から選択することができます。 【参考】:Amazon DynamoDB 料金

オンデマンドキャパシティーモード アプリケーションがテーブルに対して実行したデータの読み取りと書き込みに対して発生します。キャパシティやトラフィックが予測できない場合に適しています。

プロビジョニング済みキャパシティーモード 必要と予想される1秒あたりの読み込みと書き込みの回数を指定します。トラフィックがあらかじめ予測できる場合は、予測に応じてコストコントロールする場合に適しています。

Amazon RDSとは

Amazon RDSとは、Amazon Relational Database Serviceの略で、AWSのリレーショナルデータベースサービスを指します。

【参考】:Amazon RDS

RDSはマネージド型サービスの集合体で、MySQL互換のAmazon Aurora、PostgreSQL互換のAmazon Aurora、MySQL、MariaDB、PostgreSQL、Oracle、SQL Server の7種類のエンジンから選択することができます。

新機能Amazon DevOps Guru for RDSを解説!

DynamoDBとAmazon RDSの違い

DynamoDBとAmazon RDSの違いは、NoSQL型とリレーショナル型のデータベースの違いとなります。DynamoDBは、キーバリュー型のためスキーマの考えがなく、データタイプはスカラー型・ドキュメント型・セット型をサポートします。NoSQL型ですので、スケーリングしやすいメリットがあります。

Amazon RDSでは、データの項目が、論理的にテーブル(表)とレコード(行)・カラム(列)で表されます。スキーマに従って、論理設計を行います。アクセス言語はSQLを用い、複雑なクエリにも対応可能な万能型のデータベースです。用語の違いですが、DynamoDBのテーブルはRDSのテーブルと同等で、Item(項目)はレコードに相当し、Attribute(属性)はカラムに相当します。 【参考】:Amazon DynamoDB よくある質問

Amazon DynamoDBのユースケース

Amazon DynamoDBでは、実際の活用例をユースケースとして公開しています。公開事例からいくつかをピックアップします。

Zoom 同社のZoom 音声・映像サービスでは、新型コロナウイルスによる需要増加に対して、Amazon DynamoDB for Zoom Meetingsを用いてバックエンド処理を行っています。使用量が急激に増加しても、パフォーマンス上の問題は発生していません。

Disney Disney+の、コンテンツやメタデータ管理に使用しています。マルチデバイスの管理やリコメンデーション、ウォッチリストなどにも用いています。

PayPay キャッシュレス決済アプリのメッセージング機能として、発生した膨大なトラフィックをバックエンド処理としてAmazon DynamoDBが支えています。

ユースケースのサイトでは上記の他、NikeやNetflix・Dropboxなど多くの企業の採用例が掲載されています。 【参考】:Amazon DynamoDB Customers

Amazon DynamoDBの特徴

img_dynamodb_02

Amazon DynamoDBの特徴は、NoSQLデータベースとして小規模なシステムから規模を拡大して利用できることが挙げられます。具体的には、以下の特徴を持ちます。

【参考】:Amazon DynamoDB の特徴 【参考】:Amazon DynamoDB デベロッパーガイド Amazon DynamoDB とは

NoSQLとは?メリット・将来性について分かりやすく解説

リクエストに応じたスケーリング

NoSQLデータベースであり、キーバリュー型およびドキュメントデータモデルをサポートします。すべての規模のテーブルを水平スケーリングでサポートし、テーブルスキーマを再定義する必要はありません。

サーバーレスサービス

プロビジョニングやパッチ、および管理用のサーバーが不要なサーバーレスサービスです。管理不要で、テーブルを自動的にスケーリングし、容量の調整やパフォーマンスを維持します。可用性確保のフォルトトレランス機能が組み込まれており、安心して利用することができます。

サーバーレスとは?考え方から各社の提供サービスまで解説!

企業向けソリューション

ミッションクリティカルワークロード向けに、リレーショナルデータベース同様のACID(Atomicity:原子性、Consistency:一貫性、Isolation:独立性、Durability:永続性)特性を持つトランザクションに対応します。SLAで信頼性が保証される環境で利用することができます。データの暗号化やバックアップ・リカバリ機能により、業務データを保護します。

Amazon DynamoDBの使い方

img_dynamodb_03

Amazon DynamoDBを使うには、ローカルにセットアップする方法とウェブサービスを使う方法があります。ウェブサービスを使う場合は、AWSにサインアップしAWS マネジメントコンソールを使用します。ローカルにセットアップする場合は、開発とテスト目的に限定されます。利用の前提条件としては、入門ガイドチュートリアル情報をご確認ください。

【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB ローカル (ダウンロード可能バージョン) のセットアップ 【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB (ウェブサービス) の設定 【参考】:Amazon DynamoDB デベロッパーガイド: 前提条件 - 入門ガイドチュートリアル

テーブルの作成

テーブルの作成は、AWS マネジメントコンソールのAmazon DynamoDBに表示される初期画面で「テーブルの作成」をクリックします。「テーブルの作成」では、テーブル名のほか、テーブルの各項目を一意に識別するプライマリキーを指定する必要があります。必要に応じてソートキーを設定することもできます。

【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB にアクセスする 【参考】:Amazon DynamoDB デベロッパーガイド: コンソールの使用 【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB の使用開始

データの書き込み

データの書き込みは、DynamoDB API、またはSQL 互換のクエリ言語であるPartiQLを使用します。クエリは、DynamoDB APIおよびDynamoDB コンソール、NoSQL Workbench・AWS コマンドラインインターフェース(AWS CLI)などを用いて実行できます。

【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB API 【参考】:Amazon DynamoDB デベロッパーガイド: PartiQL: Amazon DynamoDB 用の SQL 互換クエリ言語

AWS CLIのインストール手順から使い方まで解説!

データの利用

作成されたテーブルに書き込みされたデータは、読み込みや更新などを行うことができます。用途に応じてクエリを実行し、データを活用することもできます。クエリで用いる検索条件は、「DynamoDB のクエリオペレーション」のドキュメントにまとめられていますので、ご確認ください。

【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB の使用開始 【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB のクエリオペレーション

DynamoDBの操作

DynamoDBの操作は、コンソールのほかAWS CLIやAWS SDKを通してより複雑な管理を行うことができます。コンソール操作に慣れてきたら挑戦してみましょう。

【参考】:Amazon DynamoDB デベロッパーガイド: テーブル、項目、クエリ、スキャン、およびインデックスの使用

DynamoDBを効果的に利用しましょう

img_dynamodb_04

DynamoDBは、サーバーレスサービスとして需要増加に対応しやすくスケーリングが可能です。同じくコンピューティングサービスのLambdaはサーバーレスサービスとして提供され、DynamoDBと連動させることができます。

【参考】:AWS Lambda

このような管理不要でスケーリングが可能なサービスは、今後需給変動リスク回避や急激な需要増加に対応する解決策として、おすすめのサービスと言えます。

AWS Lambdaとは?できることを分かりやすく解説!
気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT