DynamoDBの特徴と基本的な使い方を徹底解説!MongoDBとの違いも比較
はじめに
データベースといえば関係データベースです。
従来のデータベースでは、カラム追加が大変であったり、正規化が必要があったりと色々と面倒なことが多いです。
大量のデータが入るとパフォーマンスが低下してしまうのも関係データベースの問題です。
これではIoTやその他の最新技術で生じる大量のデータをさばくのにも不安をかかえてしまいます。
そこでDynamoDBを利用すれば、このような不安を解消してくれるでしょう。
しかしDynamoDBをよく理解していない方もいると思うので、特徴やメリット、基本的な使い方や用途までDynamoDBについて解説していきます。
DynamoDBについて
コンピューター (ノートブック) キーボードとプログラム コードでコラージュします。
DynamoDB(ダイナモディービー)とは、AWSが開発したデータベースです。
Key-value及びドキュメントデータベースで、規模に関係なく数ミリ秒台のパフォーマンスを実現するデータベースです。
また、完全マネージド型のマルチバージョン、マルチマスターで耐久性があります。
バックアップ及び復元、セキュリティ、インターネット規模のアプリケーション用のメモリ内キャッシュが組み込まれています。
そのため、1日に10兆件以上ものリクエストを処理でき、また毎秒2000万件を超える膨大なリクエストをサポートしてくれるでしょう。
DymamoDBの特徴
DynamoDBには、様々な特徴があります。
そこで、ここでは一体どのような特徴があるか説明していきましょう。
完全マネージド型
DynamoDBは、完全マネージド型のクラウドNoSQLデータベースサービスとなっています。
データベーステーブルを作り、スループットを設定するだけで残りの処理を自動的に行ってくれます。
プロビジョニング、複数のインスタンスでのデータバージョン化、分散型データベースクラスターの操作など様々なデータベース管理タスクについての心配がありません。
低レイテンシー
テーブルを作る際、必要なリクエスト容量を指定でき、全てのスケーリングを水面下で管理しています。
そのため、ユーザーはスケーリング進行中でもスループットレベル、またあらゆる規模の全てのアプリケーションで安定した高速パフォーマンスを実現可能です。
データの容量が増えてしまい、アプリケーションのパフォーマンス向上が必要となったとき、自動バージョン化・SSDテクノロジを使ってスループット要件を満たします。
その結果、全てのスケールで低レイテンシーを提供しているのが特徴です。
高可用性
データを3箇所にクロスリージョンレプリケーションされるため、データセンターの障害が生じた場合に他のリージョンへ切り替えができるようになります。
信用性が高い
DynamoDBは、SPOFが存在しないので、データを3箇所の施設に保存されます。
そのため、DynamoDBは信頼性を高めているということです。
その他
DynamoDBのその他の特徴は以下のようになっています。
- 読み込みや書き込みが早い
- SPOFがないためデータが三箇所のAZに保存される
- アクセスはインターネット経由
- ストレージの容量制限がない
- 期限切れとなった項目を自動的にテーブルから削除できる
また、テーブルごとにWriteとReadに必要なスループットキャパシティを割り当てることができることもDynamoDBの特徴となっています。
DynamoDBの導入メリット
DynamoDBを導入するメリットにはいくつかの利点があります。
そこで、ここではDynamoDBのメリットを詳しく紹介していきましょう。
コストの最適化
DunamoDBは、メンテナンス、インストール、保守、運用するソフトウェアがないためサーバー管理が必要ありません。
パフォーマンスを維持するために、テーブルを自動的にスケールアップ又はダウンして容量を調整します。
また、フォールトトランス機能と可用性が組み込まれていますので、アプリケーションを構築する必要がありません。
DynamoDBでは、プロビジョンドとオンデマンドのキャパシティモードが使用可能です。
そのため、ワークロードごとに容量を指定するか、使用するリソース分のみを支払うかを選べるため、コストを最適化できます。
容量無制限
DynamoDBは容量に制限がありません。
そのため、規模に関係なく一貫した数ミリ秒台の応答時間を実現することができ、そうすることで世界最大規模のアプリケーションの一部をサポートしています。
また、グローバルテーブルでは高速かつローカルにアクセスできるように、グローバルに分散しているアプリケーションに複数のAWSリージョン間でデータを複製しています。
エンタープライズに対応
ACIDトランザクションをサポートし、ビジネスクリティカルアプリケーションを大規模に構築できるようにしています。
DynamoDBでは、デフォルト全てを暗号化しており、全てのテーブルに対して綿密なIDとアクセスコントロールを提供。
テーブルのパフォーマンスに影響を及ぼすことなく、数百テラバイトのデータを完全にバックアップしダウンタイムもなく、直前の35日間の任意の時点に復元可能です。
オートスケーリングが簡単
AWSコンソールの画面からボタンを押すだけでできるため、オートスケーリングが簡単です。
そのため、万が一のときには簡単に解決でき、再起動などもないので、気軽にできるようになっています。
MongoDBについて
DynamoDBとMongoDBの違いを解説する前に、MongoDBとはどのようなものなのか、特徴を説明していきます。
MongoDBとは?
MongoDBは、IoTやビッグデータのデータ処理に利用されるオープンソースのドキュメント指向型NoSQLです。
MongoDBでは、多くのNoSQLが採用しているKVSではなく、RDBに近い検索性を備えており、データの分散配置を行うこともできます。
プライマリノードが故障した際、自動的にスレーブノードが昇格するなど、MongoDBのレプリケーションは冗長性にも優れているデータベースです。
MongoDBの特徴
MongoDBの特徴は以下のようになっています。
- データの読み書きが早い
- 柔軟なクエリができる
- データをまとめて扱いやすい
- ファイルをデータベースに格納して検索することができ、動画や画像などをそのまま保存できる
- 高速で導入しやすい
- 安全に利用できる
- スキーマを持たない
また、MongoDBはプログラミング言語向けドライバ「C/C++/C#/Java/Motor/Node.js/Perl/PHP/Python/Rudy/Scala」などを用意しています。
そのため、Webアプリケーションとの親和性が高いです。
MongoDBのメリット
MongoDBのメリットは、事前のデータ設計がなくても自動的にデータを入れられるというスキーマレスです。
スキーマレスを活用することで、ドキュメントを同じコレクションに保存することができ、商品として共通の項目を持ちながら商品の特徴に合わせて構造を変更します。
DynamoDBとMongoDBとの違いについて
DynamoDBとMongoDBとの違いをまとめて表にしました。
それでは、見ていきましょう。
DynamoDB | MongoDB | |
データモデル | Key Value | ドキュメント指向 |
種別 | 永続性 | 永続性 |
シャーディング | 自動対応 | 対応 |
レプリケーション | 自動対応 | 対応 |
柔軟性 | ドキュメントとキー値データストラクチャをサポートしており、アプリケーションに最適で柔軟に設定できる | 素早く変更の実施ができる |
DynamoDBの基本的な使い方
DynamoDBは、「データの拡張性が求められるもの」や「ミリ秒単位のアクセスレイテンシーが求められるもの」などの要件を持つシステムと相性がいいです。
そのため、モバイル・Web・広告技術・IoTのようなサービスのバックエンドとしてよく利用されています。
また、Amazon Lambdaと相性もいいため、APIGateway+Lambdaと合わせて利用されるケースも多いです。
DynamoDBの用途
DynamoDBの基本的な使い方が上記で分かったと思います。
そこで、ここではDynamoDBの用途を紹介していきましょう。
IoT
DynamoDBでは、デバイスデータ保存とクエリが簡単に行えるため、IoT分野でもDynamoDBは活躍します。
IoTソリューションの構築に専念でき、デバイスが送ってくる容量の大きなデータを解析し、Amazon Redshiftに接続して分析しています。
ゲーム
PCやモバイルといったデバイスに関わらず、ユーザーにストレスを与えずにサービスを提供するのは非常に大切なことです。
それがゲームになると重要度はさらに高くなるため、データベースを利用することは非常に重要です。
DynamoDBなら、ミリ秒単位で測定される一貫した低レイテンシーを確実なものとしながら、多数の同時ユーザー及び要求に合わせて確実にスケール可能。
そのため、ゲームの状態・セッション履歴・プレイヤーデータ・ゲームプラットフォームの全ての機能にDynamoDBが使用されているということです。
ゲームでの用途は以下のようなものがあります。
- プレーヤーの他ストア
- ゲームの状態
- プレイターのセッション履歴データストア
- リーダーボード
- 広告技術
DynamoDBはリアルタイム入札プラットフォームや広告エンジン作成に必要な可用性とパフォーマンスを兼ね備えています。
インターネット広告サービスでは、ダーゲティング広告を提供する上で制約された時間内に処理しなければなりません。
DynamoDBは低レイテンシーなレスポンスができ、信頼性も高いためよく利用されています。
広告技術での用途には以下のものがあります。
- ユーザーイベント・クリックストリーム
- 人気アイテムのキャッシュ
- RTBのユーザープロファイルストア・広告ターゲティング
- アセット用メタデータストア
DynamoDBの機能で出来ること・出来ないこと
DynamoDBを利用する上で、出来ることや出来ないことを明確にし、理解することはとても大事なことです。
そこでDynamoDBの機能性に注目して何が出来るか、また出来ないかを説明していきます。
DynamoDBの機能で出来ることは以下の通りです。
- リクエスト量の増減により自動的に容量を拡大・収縮する自動スケーリング
- データ数の規模に関わらず安定して高速に動作する
- Amazon Lambdaと連携できる
- Amazon Redshiftで蓄積したデータを分析できる
- Amazon CloudWatchに監視を任せることができる
DynamoDBで出来ないことは以下のものが挙げられます。
- JOINが使えないため、複数テーブルの結合ができない
- 単独のソフトウェアとしての扱いが若干難しい
DynamoDBの料金
DynamoDBでは、データの書き込みや読み込み、保存に加えてオプション機能が対象となっています。
料金を決めるのは「キャパシティユニット」「ストレージ容量」「データ転送量」の3種類です。
基本となるものは「キャパシティユニット」で、「プロビジョニング済み」と「オンデマンド」の2種類のキャパシティモードがあります。
どちらのキャパシティモードでも、書き込みや読み込みに対して料金が発生します。
プロビジョニング済みにおすすめなのは以下の通り。
- 必要なキャパシティを予想してコストをコントロール
- アプリケーショントラフィックを予想できる
- トラフィックが一定又は徐々に変化するアプリケーションを実行
オンデマンドにおすすめなのは以下のケースです。
- アプリケーショントラフィックを予想できない
- 未知のワークロードで新規テーブルを作る
- 使った分のみ支払う従量課金制の方が良い
それぞれにキャパシティモードに最適なケースはこのようになっています。
また、DynamoDBは無料枠が用意されており、1ヶ月あたり最大2億リクエストを処理できます。
まとめ
いかがでしたでしょうか。
本記事を読んで、DynamoDBの特徴やメリットを理解したと思います。
近年増えているIoTの場でも活躍するDynamoDBですが、しっかり理解していないと上手く利用することができません。
データ量が多くなれば多くなるほど従来の関係データベースでは対応しきれないため、ビッグデータに最適なものを導入しなければなりません。
DynamoDBであれば、そのような問題を解決してくれるため、これを期にDynamoDBの導入をぜひ検討してみてください。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。