みなさん、こんにちは。
サニービュー事業部の小寺です。

Amazon DynamoDBの一般提供開始から10周年!
おめでとうDynamoDBということで、今日はサービスの概要について、お伝えしたいと思います。

https://aws.amazon.com/jp/blogs/news/happy-birthday-dynamodb/

Amazon DynamoDBとは

Amazon DynamoDBは、1桁ミリ秒単位で規模に応じたパフォーマンスを実現する高速で柔軟な NoSQL データベースサービスです。

NoSQL データベースという言葉は聞きなれない方もいらっしゃると思います。

リレーショナルデータベースは、OracleやMySQLなどの代表的なデータベースが挙げられます。それらのリレーショナルデータベース以外のデータベースを分類する言葉がNoSQLです。なお、NoSQLは「SQLを使わない(No)」という意味ではなく、「SQLだけでない(Not Only)」という意味で、SQLに限定されず、さまざまな言語やインターフェースを使います。

NoSQL データベースは、開発、機能性、パフォーマンスを大規模かつ容易に実現できるという点で広く評価されています。

NoSQLデータベースのタイプ

・キーバリューストア

キーバリューデータベースはキーとバリュー(値)のデータを管理するデータストアです。
高度なパーティション化に対応しており、他のタイプのデータベースでは達成できない大規模な水平スケーリングが可能です。ゲーム、広告技術、IoT などのユースケースは、キーバリューストアデータモデルに特に適しています。Amazon DynamoDBでは、あらゆる規模のワークロードでレイテンシーを 10 ミリ秒未満に維持するように設計されています。

・ドキュメント型


ドキュメント型データベースは、JSONやXMLなどの記述書式で書かれた不定形なデータを管理するデータベースです。

アプリケーションコードでは、オブジェクトまたは JSON のようなドキュメントとしてデータが表現されることがよくあります。
これは、開発者にとっての効率性や直感性を活かすものです。

そのため、ドキュメントおよびドキュメントデータベースは柔軟性があり、半構造化され、階層的な性質を持つため、アプリケーションのニーズに合わせて進化させることができます。
ドキュメントモデルは、カタログ、ユーザープロファイル、コンテンツ管理システムなど、各ドキュメント固有のものであり、時間の経過とともに進化する場合うまく機能します。Amazon DocumentDB (MongoDB 互換) 、MongoDB が対応しています。

・グラフ

グラフ指向データベースは、データ間を相互に結び付け、グラフ構造でデータを格納するデータベースです。

グラフデータベースの目的は、緊密なつながりのあるデータセットを扱うアプリケーションを簡単に構築できるようにすることが目的です。
グラフデータベースの一般的な利用例、ソーシャルネットワーキング、推奨エンジン、詐欺検出、知識グラフなどです。対応しているサービスは、Amazon Neptune です。Neptune は、Property Graph モデルと Resource Description Framework (RDF) の両方をサポートし、TinkerPop と RDF/SPARQL という 2 つのグラフ API の選択肢を提供しています。一般的なグラフデータベースには Neo4j と Giraph があります。

・インメモリ

ゲームや広告技術アプリケーションには、マイクロ秒の応答時間が必要なリーダーボード、セッションストア、リアルタイム分析などがあります。また、いつでもトラフィックが急増する可能性があります。

Amazon MemoryDB for Redis は、Redis と互換性があり、耐久性のあるインメモリデータベースサービスで、ミリ秒の読み取りレイテンシー、数ミリ秒台の書き込みレイテンシーと、マルチ AZ の耐久性があります。

MemoryDB は、超高速なパフォーマンスと耐久性を提供することを目的として構築されており、最新のマイクロサービスアプリケーションのプライマリデータベースとして使用することができます。

Amazon ElastiCache は、Redis と Memcached の両方と互換性のある、フルマネージドインメモリーキャッシングサービスで、低レイテンシーで高スループットのワークロードに対応します。Tinder のように、アプリケーションからのリアルタイムレスポンスを必要とするお客様は、ディスクベースのデータストアではなく、インメモリデータストアに依存しています。 Amazon DynamoDB Accelerator (DAX) は、専用のデータストアの別の例です。DAX を使用すると、DynamoDB の読み込みが 1 桁速くなります。

・検索

多くのアプリケーションは、開発者が問題をトラブルシューティングするのに役立つようにログを出力します。

Amazon Elasticsearch Service (Amazon ES) は、半構造化されたログおよび指標のインデックス作成、集約、検索により、機械が生成したデータをほぼリアルタイムで可視化し、分析できるようにする専用サービスです。また、フルテキスト検索ができる強力で高性能な検索エンジンです。

Amazon DynamoDBの主な特徴

ここでは、主な特徴のみをご紹介します。

Amazon DynamoDB は、key-value およびドキュメントデータモデルをサポートする NoSQL データベースです。開発者は、DynamoDB を使用して小規模から開始してグローバルまで拡張できる最新のサーバーレスアプリケーションを構築できます。大規模データ(数ペタバイト)や 1 秒あたり数千万の読み込みおよび書き込みリクエストをサポートすることができます。

・スケールに応じたパフォーマンス

DynamoDB では Key-value およびドキュメントデータモデルの両方をサポートしています。そのため、DynamoDB では柔軟なスキーマを適用して、任意の時点で任意の数の列を各行に設定することができます。
リレーショナルデータベースのようにスキーマの再定義をする必要がありません。

また、フルマネージドのインメモリキャッシュ(DynamoDB Accelerator)を使って、マイクロ秒のレイテンシーを実現することができます。

・高可用性

データの保管時にはデフォルトでデータが暗号化されます。(デフォルト暗号化には追加料金不要)。また、ポイントインタイムリカバリ (PITR) を使用することで、オペレーションによって DynamoDB テーブルが誤って上書きされたり削除されたりしないようにできます。

オンデマンドバックアップおよび復元で、DynamoDB テーブルのデータの完全なバックアップを作成してアーカイブできます。

・サーバレス

フルマネージドなのでプロビジョニングやパッチ、管理用のサーバーだけでなく、インストール、メンテナンス、または運用するソフトウェアも不要です。DynamoDB ではテーブルを自動的にスケーリングして容量を調整し、パフォーマンスの維持ができます。

プロビジョンドキャパシティーを使用するテーブルの場合、DynamoDB は、アプリケーションのパフォーマンス状況を監視して、以前に設定されたキャパシティーに基づき、スループットとストレージのAutoScallingを行います。

Amazon DynamoDBを使ったアプリケーションの活用事例

様々な規模で低レイテンシーなデータアクセスが必要なモバイル、ウェブ、ゲーム、広告技術、IoT、その他アプリケーションデータベースとしてDynamoDBを使用されています。

ここでは、PayPayでの活用事例をご紹介させていただきます。

PayPayの通知サービスでは、DynamoDBを採用されているとのことで、大量のデータを保存することができ、読み込み、書き込みのパフォーマンス、高可用性、柔軟にスケールできる(AutoScalling)、スキーマ変更が簡単にできる、低コスト、インフラ管理が楽(マネージドサービス)で選ばれたとのことです。

NoSQLは大量のデータ利用とシステムの柔軟性を実現したい場合に利用するのがお勧めです。

利用料金

DynamoDB には「オンデマンド」と「プロビジョニング済み」という 2 種類のキャパシティーモードがあり、それぞれのモードにおけるテーブルの読み書き処理について、別の課金体系をとっています。正式な料金はこちら

・オンデマンドキャパシティモード
DynamoDB の料金は、アプリケーションがテーブルに対して実行したデータの読み取り/書き込みに対して発生します。
DynamoDB はワークロードの拡大や縮小に即座に対応できるため、アプリケーションによって実行される読み取りと書き込みのスループット予測値を指定する必要はありません。

オンデマンドキャパシティーモードは以下のようなケースで利用がおすすめです。

・未知のワークロードで新規テーブルを作成する
・アプリケーショントラフィックが予測できない
・使った分のみ支払う方式の方が都合が良い

・プロビジョニング済
アプリケーションに必要と予想される 1 秒あたりの読み込みと書き込みの回数を指定します。

Auto Scaling を使用すれば、指定した利用率に応じてテーブルのキャパシティーが自動的に調整されるので、アプリケーションのパフォーマンスを確保しつつコスト削減が可能です。

プロビジョニング済みキャパシティーモードは以下のようなケースで利用がおすすめです。
・アプリケーショントラフィックが予測できる。
・トラフィックが一定または徐々に変化するアプリケーションを実行する。
・必要なキャパシティーを予想してコストをコントロールできる。

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!