Amazon DynamoDBとは
Amazon DynamoDBとは、AWSが提供するNoSQLのデータベースサービスを指します。フルマネージドのサーバーレスサービスで、1桁ミリ秒単位のパフォーマンス安定性が確保されており、スループットの高いデータベースサービスです。
【参考】:Amazon DynamoDB
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種類のエンジンから選択することができます。
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の特徴
Amazon DynamoDBの特徴は、NoSQLデータベースとして小規模なシステムから規模を拡大して利用できることが挙げられます。具体的には、以下の特徴を持ちます。
【参考】:Amazon DynamoDB の特徴 【参考】:Amazon DynamoDB デベロッパーガイド Amazon DynamoDB とは
リクエストに応じたスケーリング
NoSQLデータベースであり、キーバリュー型およびドキュメントデータモデルをサポートします。すべての規模のテーブルを水平スケーリングでサポートし、テーブルスキーマを再定義する必要はありません。
サーバーレスサービス
プロビジョニングやパッチ、および管理用のサーバーが不要なサーバーレスサービスです。管理不要で、テーブルを自動的にスケーリングし、容量の調整やパフォーマンスを維持します。可用性確保のフォルトトレランス機能が組み込まれており、安心して利用することができます。
企業向けソリューション
ミッションクリティカルワークロード向けに、リレーショナルデータベース同様のACID(Atomicity:原子性、Consistency:一貫性、Isolation:独立性、Durability:永続性)特性を持つトランザクションに対応します。SLAで信頼性が保証される環境で利用することができます。データの暗号化やバックアップ・リカバリ機能により、業務データを保護します。
Amazon DynamoDBの使い方
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 互換クエリ言語
データの利用
作成されたテーブルに書き込みされたデータは、読み込みや更新などを行うことができます。用途に応じてクエリを実行し、データを活用することもできます。クエリで用いる検索条件は、「DynamoDB のクエリオペレーション」のドキュメントにまとめられていますので、ご確認ください。
【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB の使用開始 【参考】:Amazon DynamoDB デベロッパーガイド: DynamoDB のクエリオペレーション
DynamoDBの操作
DynamoDBの操作は、コンソールのほかAWS CLIやAWS SDKを通してより複雑な管理を行うことができます。コンソール操作に慣れてきたら挑戦してみましょう。
【参考】:Amazon DynamoDB デベロッパーガイド: テーブル、項目、クエリ、スキャン、およびインデックスの使用
DynamoDBを効果的に利用しましょう
DynamoDBは、サーバーレスサービスとして需要増加に対応しやすくスケーリングが可能です。同じくコンピューティングサービスのLambdaはサーバーレスサービスとして提供され、DynamoDBと連動させることができます。
【参考】:AWS Lambda
このような管理不要でスケーリングが可能なサービスは、今後需給変動リスク回避や急激な需要増加に対応する解決策として、おすすめのサービスと言えます。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから