1. ホーム
  2. firebase

[解決済み] Cloud FirestoreとFirebase Realtime Databaseの違いとは?

2022-03-15 06:25:14

質問

Googleは、アプリのための新しいドキュメントデータベースであるCloud Firestoreをリリースしたばかりです。

ドキュメントを読んでいますが、FirestoreとFirebase DBの違いがあまりわかりません。

JSONベースの伝統的なnoSQLデータベースであるFirebaseに比べ、Firestoreはドキュメントとコレクションを使用しており、クエリを簡単に使用できることが大きなポイントです。

両者の違いや使い方、あるいはFirestoreがFirebase DBを置き換えるようになっただけなのか、もう少し詳しく知りたいのですが。

解決方法は?

そこで、私は ブログ記事全体 この質問については、ぜひご覧ください。 公式ドキュメント より完全な答えを得るために。

しかし、もしあなたが簡単な要約を知りたいのなら、ここにあります。

より良いクエリーと構造化されたデータ -- Realtime Databaseは巨大なJSONのツリーですが、Cloud Firestoreはもう少し構造化されています。データはすべてドキュメント(基本的にキーバリューストア)とコレクション(ドキュメントのコレクション)で構成されています。ドキュメントがサブコレクションを指すことも多く、サブコレクションには他のドキュメントが含まれ、それ自体も他のドキュメントを含むことができる、といった具合です。

この構造化データは、2つの点で役に立ちます。まず1つ目。 すべてのクエリは浅い つまり、あるドキュメントをリクエストしても、その下にあるすべてのデータを取得することはできないのです。これは、データベースを浅く保つことを気にすることなく、より意味のある方法でデータを階層的に保存しておくことができることを意味します。次に、クエリーがより強力になりました。例えば、データベースの他の部分からデータを結合(および非正規化)するコンボフィールドを作成しなくても、複数のフィールドにまたがってクエリーを実行できるようになりました。Cloud Firestoreが直接クエリを実行する場合もあれば、自動的にインデックスを作成してメンテナンスしてくれる場合もあります。

拡張性を考慮した設計 -- Cloud FirestoreはRealtime Databaseよりも拡張性が高いでしょう。重要なのは、クエリはデータセットではなく、結果セットのサイズに合わせてスケールすることです。そのため、データセットがどれだけ大きくなっても、検索は高速に行えます。

手動でのデータ取得が容易に -- Realtime Databaseと同様に、Cloud Firestoreでもリスナーを設定して、リアルタイムに変更をストリームすることができます。しかし、そのような動作は必要なく、単純に"fetch my data"を呼び出したいだけなら、Cloud Firestoreにもそれがあり、主なユースケースとして組み込まれている。(それらは once リアルタイムデータベースランドでの呼び出し)

マルチリージョン対応 -- これは、データが複数のデータセンターで同時に共有されるため、基本的に信頼性が向上することを意味します。しかし、強力な一貫性は保たれています。つまり、常にクエリを実行し、最新バージョンのデータを取得することができるのです。

<強い 異なる価格モデル -- Realtime Databaseが主にストレージやネットワーク帯域幅に基づいて課金されるのに対して、Cloud Firestoreは主に 演算数 を実行します。これは良いことなのか、悪いことなのか?それはあなたのアプリ次第です。

ニュースアプリ、ターンベースのマルチプレイヤー・ゲーム、あるいは自社版のStack Overflowのようなものを動かすには、おそらくCloud Firestoreは価格面でかなり有利になるでしょう。リアルタイム・グループ・ドローイング・アプリのように、複数の人に1秒間に複数のアップデートを送信するような場合は、おそらくリアルタイム・データベースより高価になるでしょう。

それでもリアルタイムデータベースを使いたい理由 -- それはいくつかの理由に集約されます。

  1. 以前お話した「頻繁に更新されるアプリは安くなる」というのは、そのことです。

  2. 長い間、何千ものアプリによってバトルテストされてきました。

  3. レイテンシーが良いので、リアルタイム感を出すために確実にレイテンシーが低いものが必要な場合は、Realtime Databaseの方が良いかもしれません。

ほとんどの新しいアプリは、Cloud Firestoreをチェックすることをお勧めします。しかし、すでにRealtime Databaseを利用しているアプリがある場合、やむを得ない理由がない限り、ただ乗り換えるのはお勧めしません。

お役に立てれば幸いです。