技術ブログ NoSQL を使うなら? Amazon DynamoDB vs Google Cloud Firestore
NoSQL を使うなら? Amazon DynamoDB vs Google Cloud Firestore

NoSQL を使うなら? Amazon DynamoDB vs Google Cloud Firestore

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

この記事を読めば、適切な NoSQL がわかりますね

本記事で学べること

・NoSQLの概要
・各種サービスの長所・短所やユースケース

はじめに

近年において、NoSQL の需要が高まりつつあります。これは、NoSQL がリレーショナルデータベースよりもビッグデータの処理に向いているためです。そこで今回は、NoSQL の代表である、Amazon DynamoDB とGoogle Cloud Firestore について、

1. 可用性

2. 機能性

3. バックアップ

4. データ構造

の観点から比較したいと思います。

はじめに、NoSQL について説明したいと思います。
NoSQLとは、従来型のRDBMS1 とは異なる非関係データベースの総称です。NoSQL は、大規模なデータや複雑なデータ構造を扱うために開発されたデータベースで、スケーラビリティや柔軟性に優れています。
NoSQL には、以下のような種類があります。

・キーバリューストア

・ドキュメントデータベース

・グラフデータベース

・列データベース

キーバリューストアは、キーと値のペアを格納するデータベースです。キーと値は任意の型を持ち、データの検索や追加が高速です。
ドキュメントデータベースは、ドキュメントと呼ばれる単位でデータを格納するデータベースです。ドキュメントは JSON や XML などのテキスト形式で記述され、データの追加や変更が容易です。

グラフデータベースは、ノードとエッジと呼ばれる単位でデータを格納するデータベースです。ノードはデータの要素を表し、エッジはノード間の関係を表します。グラフデータベースは、ソーシャルネットワークや金融取引などのデータに適しています。

列データベースは、列と呼ばれる単位でデータを格納するデータベースです。列はタプルと呼ばれる行に格納され、データの検索や追加が高速です。

NoSQL は、従来型の RDBMS では対応できないデータの保存や処理に適しています。大規模なデータや複雑なデータ構造を扱うアプリケーションでは、NoSQL の使用が検討されます。

Amazon DynamoDB とは

Amazon DynamoDB は、AWS が提供するフルマネージド NoSQL データベースサービスです。DynamoDB は、従来型の RDBMS とは異なり、データ量だけでなく、スループットに基づき購入するデータベースです。
DynamoDB は、スケーラビリティ、耐久性、可用性に優れたデータベースです。DynamoDB は、自動的にスケーリングし、データの損失を防ぎ、高可用性を実現します。
DynamoDB は、ウェブアプリケーション、モバイルアプリケーション、IoTアプリケーションなど、さまざまなアプリケーションに使用され、大規模なデータや複雑なデータ構造を扱うアプリケーションに適しています。

Google Cloud Firestore とは

Google Cloud Firestore は、Google Cloud Platform が提供するフルマネージド NoSQL データベースサービスです。Firestore は、ドキュメントベースのデータベースで、JSON ドキュメントを保存することができます。Firestore は、スケーラブルで、耐久性が高く、使いやすいデータベースです。
Firestore も DynamoDB 同様、ウェブアプリケーション、モバイルアプリケーション、IoT アプリケーションなど、さまざまなアプリケーションに使用され、大規模なデータや複雑なデータ構造を扱うアプリケーションに適しています。
さらに、Firestore は、Google Cloud Platform で提供される他のサービスと統合することができます。たとえば、Firestore は、Cloud Functions、Cloud Storage、Cloud Pub/Sub などのサービスと統合することができます。

比較

可用性

  • DynamoDB は、自動でデータを複製し、同じリージョン2内の複数のAZ3に保存します。
  • 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 にも挑戦してみてください。

語句の説明

  1. リレーショナルデータベースサービスの略で、表形式の複数データを関連付けて使えるようにしたデータベース。
  2. AWSのサービス提供地域を物理ロケーションに分割した単位。
  3. アベイラビリティゾーンの略で、あるリージョンに立地するデータセンター群を1つの論理的な管理単位にまとめたもの。

この記事の執筆者

Takanobu Morishita(インターン)

株式会社taiziiiでインターンをしている森下です!

SNSでシェアする

各種お問い合わせ

お問い合わせ・ご相談


開発に関することならお気軽にご相談ください。
お見積もり依頼も可能です。

お問い合わせする

私たちは一緒に働く
メンバーを探しています。


私たちはミッション・価値観への共感を何よりも大切に考え、
一緒に働くメンバーを探しています。

採用情報をみる