投稿日 2023.03.31

Amazon DynamoDB vs Google Cloud Firestore

  • NoSQL

今回は、NoSQLに関する内容だね!

どういう内容でしょうか?

はじめに

近年において、NoSQLの需要が高まりつつあります。これは、NoSQLがリレーショナルデータベースよりもビッグデータの処理に向いているためです。そこで今回は、NoSQLの代表である、Amazon DynamoDBとGoogle Cloud Firestoreについて、1. 可用性、2. 機能性、3. バックアップ、4. データ構造の観点から比較したいと思います。

想定する読者

NoSQLを使って開発を行うことを検討しているエンジニア

Amazon DynamoDBとは

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

Google Cloud Firestoreとは

Google Cloud Firestoreとはアプリの保存や同期がグローバルスケールで簡単にできるNoSQLドキュメントデータベースサービスです。

比較

可用性

  • DynamoDBは、自動でデータを複製し、同じリージョン内の複数のAZに保存します。
  • Firestoreは、リージョンレプリケーションを用いることで、同じリージョン内の複数のAZにデータを複製することができます。ロケーションをマルチリージョンに選択した場合は、データを複製して元々それがあったリージョンだけでなく、さらに少なくとも2つの異なるリージョンにも保存することができますが、マルチリージョンに対応したリージョンは、europeとunited statesのみなので、日本国内での利用を考えると現実的ではありません。

可用性は、どちらも優れていますが、自動で複製できる分だけDynamoDBの方が使いやすいといえます。

 

機能性

  • DynamoDBは、データセットの大きさに関わらず、1秒ミリ単位でリクエストに応じることができます。
  • Firestoreは、高い可用性と耐用性を実現するため、DynamoDBほど速い応答を返すことはできません。

機能性に関しては、DynamoDBがおすすめといえます。

 

バックアップ

  • DynamoDBにおいて、ユーザーは2つのバックアップ方法を使うことができます。1つ目は、AWS Backupを使う方法です。Backupを使うことでユーザーはすべてのテーブルをバックアップをすることができます。2つ目は、Point- in -Time リカバリを使う方法です。これを使うことで、現在のテーブルを過去30日以内の状態に戻すことができます。
  • Firestoreにおいて、ユーザーはGoogle DataStoreを用いてインポート/エクスポートのワークフローを作らなければいけません。このワークフローは非常に複雑で、作るのが難しいです。

バックアップの観点からは、DynamoDBがおすすめです。

 

データ構造

  • DynamoDBは、キーバリュー型と呼ばれる、キーとバリューをペアで格納するデータベースです。
  • FireStoreは、ドキュメント型と呼ばれる、JSONなどのドキュメントをそのまま格納するデータベースです。

データベースにおいては、キーバリュー型が基本的であり、ドキュメント型はJSONなどのドキュメントの扱いも学ばなくてはならないため、学習コストは、DynamoDBの方が低いといえます。ただし、ドキュメント型のデータベースは、データを自由な形式で保存できるというメリットがあります。FireStoreであれば、複雑なデータ設計に対応可能となります。

ユースケース

  • DynamoDB
  • ゲームステートとプレーヤーのデータストアやプレイヤーのセッション履歴のデータストア

  • Firestre
  • オフラインファーストアプリケーションやリアルタイムアプリケーション

まとめ

本記事では、Amazon DynamoDBとGoogle Cloud Firestoreについて4つの観点から比較
しました。可用性の観点、機能性の観点、バックアップの観点からは、DynamoDBがおすすめです。データ構造の観点では、学習コストの低さを選ぶならDynamoDBがおすすめですが、データ設計が複雑な開発を行いたいときはFirestoreを使うと良いと思います。初めはDynamoDBを使ってみて、NoSQLに慣れてきて複雑なデータ設計を組みたくなったら、ぜひFirestoreにも挑戦してみてください。

語句の説明

リレーショナルデータベース(RDB): 表形式の複数データを関連付けて使えるようにしたデータベースのこと
NoSQL: Not only SQLの略語で、RDBでないデータベースのことを指します。データの一貫性や検索性ではRDBに劣るものの、データの処理速度に関してはRDBより優れている
シャード: インデックスを分割したもの
リージョン: AWSのサービス提供地域を物理ロケーションに分割した単位
AZ: アベイラビリティゾーンの略称で、あるリージョンに立地するデータセンター群を1つの論理的な管理単位にまとめたもの