プログラミング

【AWS】DynamoDBの基礎知識をカンタンに解説する

dynamodbの基礎記事のアイキャッチ

最近AWSの学習を進めているkirohi(@huslc2es)です。

DynamoDBはAmazon.comにおいてRDBMSのスケール限界を超えるために開発されたNoSQLです。

この記事では、DynamoDBの基礎知識にしぼって簡単に紹介します。

記事の内容は以下の通りです。

  • DynamoDBの特徴
  • DynamoDBの得意・不得意
  • DynamoDBの整合性モデル
  • DynamoDBが使えるケース
  • DynamoDBの料金体系

テーブル設計やキー、インデックスの話については別の記事に書きます。

それでは早速中身に入っていきましょう。

DynamoDBの特徴

DynamoDBはフルマネージド型のNoSQLデータベースサービスです。
2012年1月に発表された、そこそこ歴史のあるサービス。

DynamoDBには以下のような特徴があります。

  • 完全マネージド型で運用管理がいらないNoSQLデータベースサービス
  • ハイスケーラブルで無制限に拡張ができる
  • 負荷が高くなっても応答速度が低下しない低レイテンシー
  • 高可用性 (SPOFが存在せず、データが三箇所のAZに保存される)
  • ストレージの容量制限がない
  • 高速処理のためにパーティショニングによる分散処理を実施
  • プロビジョンドスループット(テーブルごとにReadとWriteに必要なスループットキャパシティを割り当てる)

DynamoDBの得意・不得意

DynamoDBの得意なこと

  • キーに対するバリューのCRUD操作
  • 簡易なクエリやオーダー
  • 大規模なデータの保存

DynamoDBの不得意なこと

  • JOIN/TRANSACTION/COMMIT/ROLLBACK
  • データの検索や結合処理
  • 大量のデータの読み書きにコストがかかる
  • 集計処理

DynamoDBの整合性モデル

DynamoDBはデフォルトで結果整合性モデル。
一部の処理に対して、強い整合性モデルを使っています。

Writeの場合

少なくとも2つのAZでの書き込み完了が確認をとれた時点でAck(肯定応答)

Readの場合

デフォルト

  • 結果整合性のある読み込み
  • 最新の書き込み結果が即時読み取り処理に反映されない可能性あり

Consistent Readオプションを付けたリクエスト

  • GetItem, Query, Scanでは強力な整合性のある読み込みオプションが指定可能
  • Readリクエストを受け取る前までのWriteが全て反映されたレスポンスを保証する
  • これによって最新のデータを応答として受け取ることが出来る

DynamoDBが使えるケース

DynamoDBが使えるケースとして挙げられるのは「ビッグデータ」と「アプリケーション」です。

ビッグデータ処理としては、大量のデータベースを収集・蓄積・分析すること可能にし、Hadoopなどとも連携できます。

アプリケーションとしては、大規模なサービスでの高速なデータ処理が必要な場合に使われます。

ユースケースの例としては以下のようなものが挙げられます。

  • ユーザー情報を格納するKVS
  • 広告やゲームなどのユーザー行動履歴DB
  • モバイルアプリから直接参照できるバックエンドDB
  • バッチ処理のロック管理
  • *フラッシュマーケティング
  • IoTデータの蓄積やゲームの行動記録

*1~3日間ほどの短期的な割引セールをするマーケティング手法のこと。

企業におけるDynamoDBの活用事例

AWS公式サイトで紹介されている企業のユースケースとして、「アドテク」と「ゲーム」があります。

アドテクでの一般的なユースケース

  • RTBのユーザープロファイルストアと広告ターゲティング
  • ユーザーイベント、クリックストリーム
  • アセット用のメタデータストア
  • 人気アイテムのキャッシュ

RTB(リアルタイム入札)や広告ターゲティングなどでは、高い要求率、予測可能な低レイテンシーに加え、信頼性が必要。それを叶えるのがDynamoDBの特徴と機能です。

AdRollというアドテク企業のDynamoDB活用事例の紹介動画です。

 

続いてゲームでのDynamoDBユースケースの紹介。

ゲームにおける一般的なユースケース

  • ゲームの状態
  • プレイヤーのデータストア
  • プレイヤーのセッション履歴データストア
  • リーダーボード

こちらはFrontier Gamesというゲーム企業のDynamoDB活用事例です。

このようなゲームの裏でもAWSの技術が使われているなど、ゲーム企業についてあまり知らなかった僕にとっては感動です。

また他にも小売や銀行でのユースケースも公式サイトにて紹介されているので、チェックしてみてください。こういうユースケースを聞く事で、具体的にどのように使っているのか分かるので、現場を想定しやすくなると思います。

また他にもAWS公式サイトによると、以下の企業がDynamoDBを利用しています。

  • トヨタ
  • Netflix
  • Airbnb
  • Tinder
  • Expedia
  • などなど大多数の企業

 

DynamoDBの料金体系

DynamoDBにおいて料金を決める要素には、以下の3つがあります。

  1. キャパシティユニット(読み込み・書き込み容量)
  2. ストレージ容量
  3. データ転送量

Qiita記事の「DynamoDBの基礎まとめ ― 料金体系とプロビジョニング」より、料金体系がまとめられている表を引用します。

課金リソース 料金 課金単位
書込キャパシティーユニット(WCU) 0.000742USD/WCU 1時間料金(1WCUは1秒間に1回の書き込み)
読取キャパシティーユニット(RCU) 0.0001484USD/RCU 1時間料金(1WCUは1秒間に1回の読み取り)
ストレージ容量 0.285USD/GB 月額(毎月最初の 25 GB の保管は無料)
データ転送量 0.14USD/GB データ転送受信(イン)は無料、アウト時のみ課金、1 GB/月まで無料

これらが基本的にかかる料金となり、加えてオプションを選べばその分追加課金されます。

>> Amazon DynamoDBの料金

まとめ

DynamoDBの特徴をもう一度振り返ります。

DynamoDBの特徴

  • 完全マネージド型で運用管理がいらないNoSQLデータベースサービス
  • ハイスケーラブルで無制限に拡張ができる
  • 負荷が高くなっても応答速度が低下しない低レイテンシー
  • 高可用性 (SPOFが存在せず、データが三箇所のAZに保存される)
  • ストレージの容量制限がない
  • 高速処理のためにパーティショニングによる分散処理を実施
  • プロビジョンドスループット

この記事では、DynamoDBの基礎知識についてまとめました。

AWSはBlackBeltと呼ばれる包括的な資料を公開しています。
DynamoDBをはじめとしたAWSサービスについて知識を深めるのに非常に参考になるため、チェックしてみてください。

>> Amazon DynamoDB BlackBelt

DynamoDBをはじめとしたAWSのサービスについておすすめな講座として、Udemyの講座があります。

AWSについて基礎知識を理論とハンズオンを通して網羅できるので、かなり効率的に学習できました。

>> これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座

参考文献

こちらの記事もおすすめ!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください